首页 > 其他 > 详细

8月6日pwn学习

时间:2020-08-06 18:37:41      阅读:117      评论:0      收藏:0      [点我收藏+]

题目:when_did_you_born

题目描述:只要知道你的年龄就能获得flag,但菜鸡发现无论怎么输入都不正确,怎么办。

题目分析:题目描述看起来云里雾里的,那么我们进行我们的常规步骤来分析这道题

1.checksec文件

技术分享图片

 

 

 checksec查看文件保护机制

发现PIE未开启,即没有地址空间随机化机制。

2.查看文件类型

技术分享图片

 

 

 file命令查看文件类型

3.远程连接,尝试运行

技术分享图片

 

 

 nc命令尝试运行

使用了nc命令,远程连接,并没有发现特殊的东西。

4.ida反编译

使用ida对文件进行反编译,

技术分享图片

 

 

 未编译

技术分享图片

 

 

 技术分享图片

                                                               主函数

对主函数的伪代码进行分析,发现当输入年龄v5为1926时,有命令system(“cat flag”)得到flag,而在上面的逻辑中,是不准许v5为1926的,否则直接退出,如下图所示

技术分享图片

 

 查看源伪代码,发现逻辑十分矛盾,要得到v5为1926才能得到flag但又不准v5为1926,这个时候想到了溢出覆盖,溢出覆盖到v5为1926,而除了v5还有宁一个也赋予了地址空间的v4。查看地址空间

技术分享图片

 

 地址空间

v4对应的地址空间是-0x20,v5对应的是-0x18,而该文件是没有地址随机机制的,那么我们就可以在get(&v4)这个点的时候让v4溢出v5的内存得到1926。(payload=‘a’*(0x20-0x18)+p64(1926))

技术分享图片

                                                   exp

技术分享图片

 

                                                        得到结果

8月6日pwn学习

原文:https://www.cnblogs.com/Samforrest/p/13447971.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!