本文主要详解CTFshow中pwn入门第一块内容Test_your_nc的五道题
所用工具:linux环境下的虚拟机、IDA Pro、exeinfope
参考博客:CTFshow-pwn入门-Test_your_nc_T1ngSh0w的博客-CSDN博客
以下操作中小编用的都是自己的kali环境(小编的轻薄本已经容不下平台提供的专用虚拟机了QAQ)
pwn0
题目提示了在所给虚拟机环境中用ssh连接
直接输入题目给的地址和端口,以及密码123456(输入的时候是看不见的)
之后就开始输出语句,语句本身除了有点尬,是没有任何用处的
可以看到出题人十分的幽默
最后停在了这里
查找一下目录,可以轻松找到flag文件,cat命令得到flag
pwn1
下载附件,用exeinfope查一下,可以知道这是个64位的elf文件
用IDA打开,可以找到main函数,按F5反汇编,main函数中包含了这个文件的主要逻辑,就是输出下面这些语句后,调用system这个函数,执行cat /ctfshow_flag命令,显示flag的内容,这就是用./pwn命令打开文件后能直接看到flag明文的原因
了解了原理后要到虚拟机里nc一下,得到flag
ps:如果直接在虚拟机里用./pwn命令运行文件,那么会出现下面的报错
这是因为本地虚拟机里本来就没有ctfshow_flag这个文件,只有在题目的服务器中才存在,因此需要输入nc命令连接服务器(之后的题目也是需要通过nc连接才能读取flag)
pwn2
附件是64位elf,用IDA查看,可以看到system函数只是转入到/bin/sh目录下,根据提示需要手动输入cat /ctfshow_flag命令
输入nc命令后,可以看到文件的输出结果,直接输入cat /ctfshow_flag即可得到flag
当然也可以先用pwd、cd、ls命令翻一翻目录,找到ctfshow_flag这个文件(其实就在当前目录下),再cat出flag
pwn3
附件是64位elf文件,用IDA查看,要求输入一个数字,每个数字对应不同的操作
输入6时可以引用system_func函数,调用system读取flag
nc后可以看到1-8选项
那么输入6,就得到了flag
pwn4
附件是64位elf文件,用IDA查看,主函数的大意是将输入的内容和字符串"CTFshowPWN"对比,如果相同则进入execve_func()函数,不相同则退出程序
execve_func()函数中调用execve函数执行/bin/sh的程序,应该就是flag所在的目录了
进入虚拟机nc连接,输入对比字符串"CTFshowPWN",ls查看目录,用cat命令得到flag的内容
总结:这一章节主要了解nc这个命令,还有用IDA查看、分析可执行文件的内在逻辑,以及用cat命令读取flag的知识点。pwn的世界就此开启!!!