[BUUCTF-pwn]——warmup_csaw_2016
- 题目地址:https://buuoj.cn/challenges#warmup_csaw_2016
- 题目:

管他三七二十一,先将文件下载下来再说。老规矩,现在Linux上用checksec看看文件。64位,Stack、NX、PIE都没有开,应该是栈溢出的题。

赶快 go go go 去window 上用IDA反汇编看看,看到返回的是gets函数,一个典型的可以利用栈溢出覆盖的地方。其他没什么有用的信息。

按Shift + F12,看一下字符串。不看不知道一看有惊喜。cat flag.txt。虽然没有 /bin/sh,可以获得权限。但是这个足够我们拿到flag了。

双击,发现在sub_40060D这个函数里面。

进这个函数看看,眼前一亮,就是我们想要的 system(“cat flag.txt”)
点击查看函数所在位置,发现0x400611是压参数的地方
。我们可以将其作为返回地址。


查看v5的位置,发现离返回地址的距离是0x40 + 8。


所以这道题的exploit为
from pwn import *
p = remote('ip地址',ip端口)
payload='a'*(0x40+8)+p64(0x400611)
p.sendline(payload)
p.interactive()

其实这道题和上一道题解法基本一样,感兴趣的也可以去看看 😃
本文介绍了如何解决一个64位Linux程序的栈溢出问题,通过IDA反汇编分析,发现了gets函数可能导致栈溢出。利用字符串中的线索,找到了执行`system(catflag.txt)`的方法。通过构造payload,成功覆盖返回地址来执行flag文件的读取。此题解法与前一题相似,适合熟悉栈溢出漏洞利用的学习者。
1849

被折叠的 条评论
为什么被折叠?



