命令执行相关的 web 题
题目描述和 Ping 有关,可以考虑先 ping 本地 127.0.0.1 看能不能 Ping 通,如果能 ping 通就用多个命令执行的方式执行多个命令找 flag
需要 linux 命令的相关知识
关于命令行与编写 shell 脚本可以参考《Linux 命令行与 shell 脚本编程大全(第 3 版)》
ping:向网络主机发送 ICMP ECHO_REQUEST 数据包。
最基本的网络连接命令就是 ping 命令。ping 命令会向指定的网络主机发送特殊网络数据 包 IMCP ECHO_REQUEST。多数网络设备收到该数据包后会做出回应,通过此法即可 验证网络连接是否正常。
目前的两个题目都在 buuctf 的 web 模块
[ACTF2020 新生赛]Exec
看到了这个 ping,先 ping 一下本地,如果 ping 通了就能,嗯
再试一下 ping 127.0.0.1;ls 看能不能去执行 ls 命令
执行了,这里没有 flag,也没有下级目录,那就去上级目录看看
ping 127.0.0.1;cd ../;ls
多输几个,ping 127.0.0.1;cd ../../../../;ls
这时看到了 flag 目录
ping 127.0.0.1;cd ../../../../;cd flag
那看来 flag 是个文件
127.0.0.1;cd ../../../../;cat flag
[GXYCTF2019]Ping Ping Ping
这道题除了命令还涉及空格的绕过
先来个 127.0.0.1
准备用 cat 打开 flag 时出现了问题
这里看起来是过滤了空格(从提示信息)
那这里就绕过空格
试一下大括号
也过滤了大括号(这里去查了一波),既然是过滤了大括号那 ${IFS}也不行
再试一下重定向符号,也不行
再试一下 $IFS$9 ,这里空格是绕过了,flag 又不行了
那把 flag 拆开看看
/?ip=127.0.0.1;a=fl;b=ag;cat$IFS$9$a$b.php
还是被发现了
那现在最好是能知道过滤的方式
想起来最开始那个 index.php
回去看看 index.php
()真有
这里看到 flag 的过滤方式是*f*l*a*g*
那就让 flag 四个字母不要出现在一起
那之前那个是设置变量的时候检测到的,$a=fl;$b=ag;这样是符合*f*l*a*g
那可以设置部分的变量,/?ip=127.0.0.1;a=fl;cat$IFS$9$aag.php
?(?)
哦,这样还是 flag
应该设置后面的,把 ag 放在前面
/?ip=127.0.0.1;a=ag;cat$IFS$9fl$a.php
(这啥也没有啊)
哦,注释里
版权声明: 本文为 InfoQ 作者【w010w】的原创文章。
原文链接:【http://xie.infoq.cn/article/be6ffcd662580f575f9e853fd】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论