简单数据复杂数据的区别

HTTP header整理 HTTP 请求头(Accept-Encoding,User-agent,Referer)

  返回  

BUUCTF warmup_csaw_2016

2021/8/20 22:42:09 浏览:

BUUCTF  warmup_csaw_2016

 

下载文件,把它拖入虚拟机中,checksec一下

 

这是一个64位的文件,并且没有开启任何的保护

我们先运行一下试试

发现它给出了一个地址,我们先记下,可能会用到

放入64位IDA中查看一下他的代码

伪C代码↓

 

汇编代码↓

 

发现了一个函数sprintf,并且用%p的方式来输出,也就是输出地址

下面是我搜索到的关于 %p 的知识

 

我们双击40060D看一下

 

 

再回过头来看代码

众所周知gets函数是一个危险函数,所以我们要以它为pwn掉的点

gets接受v5变量传入的信息,而v5我们可以看到定义了40个字节,再把40060D的地址填充到gets函数分配的地址中就可以达到我们的目的

由此可见,我们可以利用覆盖返回地址来执行cat flag.txt这条命令

有了思路我们就开始编写脚本

 

运行一下试试

不正确,说明我们在填充字节的时候出错了

重新回过头看一下代码

 

发现我们忘记填充rbp了

32位的文件需要填充4个字节

64位的文件需要填充8个字节

重新修改脚本

 

运行脚本

 

成功拿到 flag !

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号