week1 T2


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

0x04 补充一些知识

IDA栈帧视窗详细说明:这篇文章
这篇文章举了一个例子详细说明


文章作者: lmarch2
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 lmarch2 !
评论
  目录