每周五固定节目又来了!今天给大家带来的是第四题<hangman>,本题为PWN题型。
仅一周过去,我们从夏天跨到了冬天,没有过渡,已经在找秋裤了。为了防止脑子被冻住,赶紧找一道题来做做。
首先来了解一下格式化字符串,格式化字符串函数可以接受可变数量的参数,并将第一个参数作为格式化字符串,根据它来解析之后的参数。通俗来说,格式化字符串函数就是将计算机内存中表示的数据,转化为我们人类可读的字符串格式。
本题就需要我们利用格式化字符串漏洞泄露和修改栈上的数据。拿到题先查看基本信息,可知本题是一道64位的程序,并且是动态链接的,保护全开。所以解题思路大致如下:先用IDA静态分析理出代码逻辑,程序中没有后门函数,虽然有点难受,但题目给了我们一个libc,所以可以用工具查找one_gadget基于libc基地址的偏移,然后计算出one_gadget的真实地址,从而利用格式化字符串漏洞将返回地址修改为one_gadget的地址,达到getshell的目的。
解题过程中涉及到多次地址计算,各位做实验的时候一定要配合视频食用,理解会更清晰。最后还是建议大家平时不要跳跃式学习,基础知识的堆砌是对未来拓宽知识面打下的前阵,就像学会一门编程语言之后学习其他语言也会变得更容易上手,同一领域的知识都是共通的,所以听君一句劝“学海无涯,回头是岸”。
下周我们同一时间见!
PC端练习地址:http://mrw.so/5CxEXu