这一篇关于php伪协议
eval执行
eval函数应该都知道,就是把字符串按照 PHP 代码来计算
这里源代码没有进行任何过滤
所以直接可以传参
①?cmd=system('ls /');
②?cmd=system('cat /flag_25186');
一个好的web手一定不会忘掉;号
文件包含
题目是这样的
它里面已经有一个shell.txt,内容是一句话木马,那岂不是可以为所欲为了
构造一下
然后cat一下就出来了
php://input
这是一个伪协议,主要用来接受post数据,将post请求中的数据作为php代码执行
所以post请求里要写上php代码,格式如下
然后cat一下就好啦
读取源代码
这里介绍另一个php伪协议,php://filter协议,主要用来查看源码(或者已知文件名的文件)
一般格式:参数=php://filter/(read.)convert.base64-encode/resource=include.php(以base64加密方式读取)
也可以直接读取:php://filter/resource=xxx
本题就是直接读取,因为提示了flag的位置
远程包含
含义:包含攻击者指定url文件
这题好像没有考到,还是用的伪协议
补充:php的伪协议还有
一:php://file文件,用于当../(相对路径)被屏蔽时,格式:参数=file:///C:windows/win.ini
二:zip://、bzip2://、zlib://协议:可以访问压缩文件中的子文件,格式:zip://压缩文件绝对路径#(#可以写成其url形式:%23)压缩文件内的子文件名
三:phar://协议:类似zip协议,但是可以使用相对路径,格式:phar://压缩文件绝对或相对路径/压缩文件内的子文件名
四:data://协议:将原本的include的文件流重定向到了用户可控制的输入流中,格式:参数=data://text/plain,<?php phpinfo();也可以写成base64形式:data://text/plain;base64,PD9waHAgcGhwaW5mbygpOyA==