NSSCTF [GXYCTF 2019]Ping Ping Ping
ping命令,这是老朋友了,经常碰见,先进题目界面看看
先试试直接输入一个地址,127.0.0.1,看看有没有回显
那就是一个ping命令了,直接先试试管道 ' | ' ,look一下有没有被过滤掉,输入" 127.0.0.1 | ls "
出来了,说明管道命令可以用,那接下来就简单了。直接查看一下flag.php,输入 "127.0.0.1 | tac flag.php"
好好好,这么玩是吧。直接tac或者cat都不能查看,这句话说的是去你的空格,直接发空格发现会报错,再试试有没有其他的也被过滤了。实验之后发现flag也被过滤了。
空格过滤我们可以使用下面几种方式来替代空格
Rec 远程命令执行空格绕过的方法:
< -- 命令的重定性 如 cat<flag.php
<> --重定性 如 cat<>flag.php
%09 --需要php环境,如cat%09flag.php
${IFS}--单纯cat$IFS2,IFS2就会被bash当作解释器当作变量名输不出来结果,加一个{}就固定了变量名,如cat${IFS2}flag.php
$IFS$9 -- 后面加个$与{}类似,起截断作用,$9是当前系统shell进程第九个参数持有者,始终为空字符串,如cat$IFS2$9flag.php
经过实验,只有$IFS$9可以,其余均无法用来替代空格
flag我们可以将其用两个变量来进行拆分,使用代码的思维,将两个变量组合成我们需要的字符,避免直接输入。输入"127.0.0.1|a=f;b=lag;cat$IFS$9$a$b.php"
发现页面没有回显,但是也没有报错,flag是上一条报错的,测试的时候直接用的那个页面。去查一下linux命令,发现在linux中管道符" | ",上一条命令的输出,作为下一条命令的参数(显示后面的执行结果),可能是因为,输出的需要,先把ping 输出出来,后面的才能输出,所以这里就不能用管道符,我们换成" ; "继续试试。输入" 127.0.0.1;b=lag;a=f;cat$IFS$9$a$b.php "
出现回显,说明命令正常执行了,但是没有看见flag,f12看一下网页源码,成功发现flag。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!