CTF|入门题目when_did_you_born解题思路以个人总结
解题思路
拿到题目我们放入ubuntu里面通过file born(此处born是文件名)
来查看文件信息
得到信息:
ELF:文件elf格式
64-bit:64位文件
LSB:文件小端序(什么是小端序个人总结会写)
executable:顾名思义,可执行的文件
接下我们运行下文件./born 并过一遍文件流程

比较简单,输入生日birth 输入名字name 输出文字
将文件拖入反编译工具IDA F5 查看伪代码

得到伪代码后需要特别关注v4、v5两个变量的空间的大小
代码中间有个gets()函数,没有对用户输入的v4做限制,很可能被利用来栈溢出
同时,我们也得到了得到flag的方法:
函数希望v5的值为1926这样就可以cat flag,但是第一次输入的时候又不能输入1926,所以我们的思路是:通过输入v4后造成gets函数的栈溢出,将第一次v5的值覆盖成1926就可以得到flag了
总体思路比较简单
双击v4进入几个变量在栈中的位置‘

本文介绍了CTF入门题目'when_did_you_born'的解题思路,分析了文件类型和执行流程,强调了栈溢出利用和gets()函数的安全问题。通过理解大端序和小端序的概念,利用缓冲区溢出修改变量v5的值为1926,成功获取flag。
最低0.47元/天 解锁文章
706

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



