實驗吧web解題記錄

來源:互聯網
上載者:User

標籤:bool   先來   解決   inpu   分享   這一   isset   資訊   lte   

     自以為sql注入掌握的還是比較系統的,然而,做了這些題之後才發現,大千世界無奇不有,真是各種猥瑣的思路...還是要多學習學習姿勢跟上節奏呀

登入一下好嗎??

http://ctf5.shiyanbar.com/web/wonderkun/web/index.html

     試了一下發現他過濾了/ or union select - #

     雖然and ‘ " = + %沒有被過濾,但用%0b和%23都沒效,於是還在想這是用了多麻煩的WAF,越想越複雜我竟然還去用xss,真是跑題了...

     然而最後的payload是這樣的...跪了,果然題刷的太少嗎

    

 

who are you?

http://ctf5.shiyanbar.com/web/wonderkun/index.php

     進入這個頁面,發現他擷取了我的ip,首先想到的就是user agent注入,用updatexml試一下,什麼錯的沒有報...看來這個思路不行

     百度了才知道這是一道偽造IP的題,相關知識可以看這裡:http://www.cnblogs.com/x2048/articles/1794020.html

     總結下,偽造IP的HTTP頭都有這些:

X-Forwarded-ForClient-IPx-remote-IPx-originating-IPx-remote-addr

     一般用的最多的就是前兩個,這裡我們用X-Forwarded-For來偽造

    

     但是很奇怪,不管構造的是什麼語句,都會返回到頁面,看了下別人的writeup發現,他的幕後處理過程大致是這樣的,首先擷取到HTTP-X-Forwarded-For,對他進行字串的處理,只截取逗號前的內容,然後直接將其輸出到頁面,再插入到資料庫,但應該沒有對插入結果做處理,即沒有輸出資料庫的報錯僅輸出空,所以想從資料庫的報錯擷取資訊應該是不行了,返回頁面也是不具判斷性的,那麼可以考慮時間型的盲注

     這裡解決的方法可以有三種:

     1、寫個盲註腳本跑

     這是跑出來的庫名:

    

     表名:

    

     欄位:

    

     於是,我們知道了flag儲存在flag表的flag字元裡,且長度為32,接下來直接跑就行了

    

     2、用burp進行時間盲注

     3、用sqlmap進行http頭的盲注

     然後,要注意的是跑出來的結果要加在ctf{xxx}裡....被坑的很慘,跑出來flag一直提交不對,最後發現花括弧用的中文字元輸入的...

 

因缺思汀的繞過

http://ctf5.shiyanbar.com/web/pcat/index.php

     查看網頁的源碼,發現登入的源碼路徑是source.txt

     於是拿到源碼如下:   

 1 <?php 2 error_reporting(0); 3  4 if (!isset($_POST[‘uname‘]) || !isset($_POST[‘pwd‘])) { 5     echo ‘<form action="" method="post">‘."<br/>"; 6     echo ‘<input name="uname" type="text"/>‘."<br/>"; 7     echo ‘<input name="pwd" type="text"/>‘."<br/>"; 8     echo ‘<input type="submit" />‘."<br/>"; 9     echo ‘</form>‘."<br/>";10     echo ‘<!--source: source.txt-->‘."<br/>";11     die;12 }13 14 function AttackFilter($StrKey,$StrValue,$ArrReq){  15     if (is_array($StrValue)){16         $StrValue=implode($StrValue);17     }18     if (preg_match("/".$ArrReq."/is",$StrValue)==1){   19         print "姘村彲杞借垷錛屼害鍙禌鑹囷紒";20         exit();21     }22 }23 24 $filter = "and|select|from|where|union|join|sleep|benchmark|,|\(|\)";25 foreach($_POST as $key=>$value){ 26     AttackFilter($key,$value,$filter);27 }28 29 $con = mysql_connect("XXXXXX","XXXXXX","XXXXXX");30 if (!$con){31     die(‘Could not connect: ‘ . mysql_error());32 }33 $db="XXXXXX";34 mysql_select_db($db, $con);35 $sql="SELECT * FROM interest WHERE uname = ‘{$_POST[‘uname‘]}‘";36 $query = mysql_query($sql); 37 if (mysql_num_rows($query) == 1) { 38     $key = mysql_fetch_array($query);39     if($key[‘pwd‘] == $_POST[‘pwd‘]) {40         print "CTF{XXXXXX}";41     }else{42         print "浜﹀彲璧涜墖錛?";43     }44 }else{45     print "涓€棰楄禌鑹囷紒";46 }47 mysql_close($con);48 ?>

     從源碼中可以知道這些全都被過濾了:and|select|from|where|union|join|sleep|benchmark|,|\(|\)

     並且資料庫中只有一條資料

if (mysql_num_rows($query) == 1) {

     最核心的部分是這裡

$sql="SELECT * FROM interest WHERE uname = ‘{$_POST[‘uname‘]}‘";

     大致的執行過程是先將使用者輸入的uname作為查詢條件,在資料庫中查詢uname和pwd,然後將查詢到的pwd與使用者輸入的pwd進行比較,內容一致才輸出flag

     這裡的思路是,利用group by pwd with rollup在查詢中的一個特點,他可以返回pwd所在的那一條記錄,通過limit控制返回哪一條,因此他不可以返回多條,一旦返回2條及以上,pwd就會為空白,但同一條記錄中的其他欄位則是正常的

     那麼利用這一點令查詢結果為空白,我們輸入的pwd也為空白值,則構成了if(null == null)為true

    

 

簡單的sql注入之三

http://ctf5.shiyanbar.com/web/index_3.php

    看源碼,是一個用get方式傳參數id的查詢,於是手工注入一波,發現單引號引起報錯,加上注釋後回顯正常,id在1~3的範圍都可以正常回顯“Hello!”,否則返回空,嘗試邏輯運算,可以正常返回,那這就很好辦了

    然後,我就開始入了手注的坑...

    首先來試試有幾個欄位

   

   

     2報錯了,說明只查詢出一個欄位,那麼用union試試

    

     沒有想要的結果回顯,很奇怪,看來這個Hello不是輸出的位置,應該是後台在擷取到id的值後,執行sql語句,如果存在查詢的結果,那麼就輸出Hello,但不輸出結果

     如果是這樣的話,那麼只能從報錯回顯入手了,先試試雙注入

    

     很尷尬,做了報錯處理?那試試xpath的報錯

    

     還是不行...好吧,報錯這條路也被堵了,那就考慮盲注吧

     ,

    

     根據上面頁面中的不同返回,我們可以寫一個bool型的盲註腳本來爆資料庫,當然也可以用burp搞定

     這裡偷個懶,因為已經知道ctf的套路了,所以可以直接來猜表名和欄位

    

 

 

參考文獻:

http://www.jianshu.com/p/5d34b3722128

實驗吧web解題記錄

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.