2018~第三屆南寧市網路安全技術大賽~nnctf~write-up
阿新 • • 發佈:2018-12-22
Web
1.超簡單
分值:100 型別:WEB 已解決
題目:超簡單的web題 http://gxnnctf.gxsosec.cn:12311/
程式碼審計
<?php $white_list = range(0,9); require_once('flag.php'); if(isset($_REQUEST['no'])){ //非空 $a=$_REQUEST['no']; if(@ereg("^[0-9]+$", $a) === FALSE){ //必須為數字 echo 'no must be number'; }else{ if(in_array($a,$white_list)){ //數字必須在$white_list白名單裡 if(strlen($a)>1){ //但是if(strlen($a))長度必須>1 echo 'you are a great dark phper<br>'; echo "<img src='dark.gif'><br>"; echo $flag; }else{ echo 'you no dark'; } }else{ echo 'you are so dark'; } } }else highlight_file(__FILE__);
構造payload的兩種方法:
?no=0000
?no=0%00 //erge()函式 %00截斷
2.帽子商城
分值:200 型別:WEB 未解決
題目:有帽子你就能變強,去這買幾頂帽子吧 http://gxnnctf.gxsosec.cn:12313
3.Sql???
分值:200 型別:WEB 已解決
題目:小明想當一名黑客,於是學習寫網站,但他遇到點問題,幫幫他吧 http://gxnnctf.gxsosec.cn:12312/
按照一般思路測試id, 200OK
看到這些首先想到測試ID,是否存在注入,試了各種姿勢未果,發現大部分關鍵字都被過濾,聯合注入、盲注都走不通,於是想到可能存在其它輔助漏洞,用御劍掃描工具進行掃描發現 http://gxnnctf.gxsosec.cn:12312/網站目錄/.git/存在git洩漏,直接利用git恢復工具恢復檔案,到這裡希望就很大了,彷彿找到了sql大門,當初沒有直接想到先掃描一下網站,導致浪費了很多時間 (T_T)
https://github.com/style-404/Git_Extract //git恢復工具
/.git/檔案恢復
對index.php進行程式碼審計
審計發現幾乎所有的關鍵字都被過濾了,但是case when關鍵字沒有被過濾,利用MySQL的case when的特性進行繞過,判斷變數是否為空,若為空賦值為2,不為空的話查詢結果為1。第一次查詢返回2,第二次查詢返回1。
case when測試:
條件滿足:
1. 引數id在裡面進行兩次sql查詢,第一次需要id=2、第二次需要id=1
2. 引數backdoor=Melonrind
構造payload
http://gxnnctf.gxsosec.cn:12312/?id=case%20when%[email protected]%20is%20null%20then%[email protected]:=2%20else%[email protected]:[email protected]%20end&backdoor=Melonrind