審計**
瀏覽頁面 發現了view-source鏈結 ,接下來審計**
if(!
isset
($_get
[page]))
if(isset
($_get
[page])&&
$_get
[page]
!='index.php'
)else
?>
關鍵**
if (isset($_get[id]) && floatval($_get[id]) !== '1' && substr($_get[id], -1) === '9')
***floatval***函式:獲取出引數的浮點數形式substr函式<?php
$var
='122.34343the'
;$float_value_of_var
= floatval (
$var);
$float_value_of_var
;// 列印出 122.34343
?>
substr ( string
string『
,int
『string` , int `
string
『,in
t『start
[, int
$length] ) : string
php弱型別$rest
=substr
("abcdef",-
1);// 返回 "f"
===比較兩個變數的值和型別;==比較兩個變數的值,不比較資料型別
<?phpif (
isset
($_get
[id])&&
floatval
($_get
[id]
)!==
'1'&&
substr
($_get
[id],-
1)==='9'
)elseif(
!$result
)die("
something wae wrong ! ")
;if($result
)?>
***所以可以構建payload如下:***:
id=1' -- +9
其實只要1和9之間是任何字元都可
上面構造了id已經獲取了admin許可權mysql_real_escape_string ( string
unescap
edst
ring
『[,r
esou
rce『
unescaped_string` [, resource `
unesca
peds
tri
ng『[
,res
ourc
e『link_identifier
= null ] ) : string
本函式將
unescaped_string
中的特殊字元轉義,並計及連線的當前字符集
審計寫入檔案**
<?phpif (
$_session
['admin'])
else
}?>
此處關鍵的是如何繞過正規表示式構造最後的payload
if(preg_match('/.+\.ph(p[3457]?|t|tml)$/i', $filename)
以上匹配的是:php php3 php4 php5 php7 phpt phptml
繞過方法有:
filename.php/.
和../filename.php/.
原因是:檔名中不允許帶有/ 因為/表示目錄的分割符 在php中,如果儲存的檔案中含有/ 會自動省略/後面的內容,/後面的.是為了達到匹配最後乙個.的效果,
前者直接在
/uploaded/backup/
檔案下 ,後者則是直接繞過了chdir
函式檔案在
/uploaded/
下
在下可以看到構造的檔案
菜刀連線的到webshell
攻防世界mfw 攻防世界 Web mfw
題目資訊 image.png 工具 githack,dirsearch 知識點 git漏洞 審計 開啟題目場景,檢查 發現這樣乙個頁面 image.png 訪問.git目錄,疑似存在git原始碼洩露 image.png 再用dirsearch掃瞄,發現git原始碼洩露 使用 githack獲取原始碼...
攻防世界Web lottery
開心!雖然第一次遇到git原始碼洩露寫了好久,但是寫出來了就很開心 開啟介面我們知道,要拿到flag,就要贏到足夠的錢,其實一開始我以為可以找到乙個地方直接修改餘額什麼的,把網頁源 中的檔案看了幾個都沒發現突破口 然後又沒思路了 嘗試了一下robots.txt,想看看有沒有什麼檔案,然後發現了 瞬間...
攻防世界 xctf Guess writeup
本題的解析官網上有,這裡是乙個自動化的指令碼,完成的是自動上傳乙個ant.jpg的檔案 ant.jpg是乙個ant.zip壓縮包重新命名的檔案,裡面是乙個ant.php的一句話木馬 執行返回的是在web後台這個檔案重新命名後的檔案的url。可通過zip偽協議訪問這個木馬。指令碼如下 import r...