目录
1 打开题目,查看如下源码
<?php
$res = FALSE;
if (isset($_GET['ip']) && $_GET['ip']) {
$ip = $_GET['ip'];
$m = [];
if (!preg_match_all("/(\||&|;| |\/|cat|flag|ctfhub)/", $ip, $m)) {
$cmd = "ping -c 4 {$ip}";
exec($cmd, $res);
} else {
$res = $m;
}
}
?>
2代码分析
1)通过代码可以分析得到,过滤了命令连接符号&、|、;因此常用命令连接符不可用,可以使用”%0a、%0d“及“\n,\v”。
2)空格符号也被过滤,可以使用${IFS}或者$IFS$9
3)路径连接符也被过滤,可以使用十六进制编码
通过python脚本
from urlib import parse parse.quote()#url编码 parse.unquote()#url解码
3查看当前路径
payload: ?ip=127.0.0.1%0als# 结果: Array ( [0] => PING 127.0.0.1

博客围绕CTF题目展开,通过查看源码进行代码分析,发现命令连接符、空格符号、路径连接符被过滤,给出对应解决办法。利用printf命令转换十六进制数据,查看当前路径和flag_is_here目录,对不能直接读取的flag文件进行base64编码转码获取值,还给出使用的python脚本。
最低0.47元/天 解锁文章
1020

被折叠的 条评论
为什么被折叠?



