更新公告:
2023-7-5晚上21:12 已更新,对内容做了些调整。
调整如下:
添加解题步骤描述
添加专业名词描述
博主也是个PWN的入门者。PWN的入门不可能是无痛的。能做到的只是减少一点初学者的痛苦。这篇博客会长期维护,也会越来越好。
PWN是什么
CTF中PWN题型通常会直接给定一个已经编译好的二进制程序,然后参赛选手通过对二进制程序进行逆向分析和调试来找到利用漏洞,并编写利用代码发送playload,通过远程代码执行来达到攻击的效果,最终拿到目标机器的shell(控制台权限)来夺取flag。
专业名词
二进制程序:常为C、C++及python写的一段程序,程序中往往包含着这样那样的漏洞。
逆向分析:利用反汇编等途径查看源代码并对程序进行理解的过程
调试:程序调试是指通过分析和排查程序中的错误和问题,以找出程序运行过程中的错误和异常,并进行修复和优化的过程。调试是软件开发过程中非常重要的一环,可以帮助开发人员快速定位和解决程序中的问题,提高程序的质量和稳定性。
playload:payload是指用于利用程序漏洞的输入数据或代码。通过构造恶意的payload,攻击者可以利用程序中的漏洞来执行任意的代码或获取系统权限。
shell:"shell"通常指的是一个交互式的命令行界面,可以用于执行系统命令和操作。可以说,拿到了shell,你就是服务器的拥有者。自然而然就可以光明正大的查找这台服务器上的flag
解题步骤
获取题目附件
将附件复制一份到Linux虚拟机中,使用checksec指令检查程序开启的保护和程序的位数(32位或64位)
打开题目环境,使用nc指令连接服务器,尝试猜测程序的功能,有时签到题会在你nc上去后,直接提供给你系统权限,此时可直接使用系统指令,寻找flag
使用对应位数的IDA工具对附件进行反编译,理解并发现其中的漏洞
分析漏洞,使用python和pwntool库编写攻击脚本playload。
最后,让你的攻击脚本跑起来,成功拿取权限后,flag即可到手
本博客在B站有配套视频,随博客同步跟新,但博客内容的替换和更新会更加频繁。等博主社恐的毛病处理好,视频会重新录制,现在可能有些糟糕。还望大家见谅
Rotten战队的个人空间-Rotten战队个人主页-哔哩哔哩视频