sql注入_1-7_绕过注入
文章目錄
- 一.sql注入繞過概念
- 二.sql注入繞過手段
- 三.sql繞過演示
- 四.總結
一.sql注入繞過概念
1.為什么要繞過? 因為有時候存在注入,但是很多符號被過濾掉, 所以我們不的不使用繞過手段。
2.繞過就是雖然我們注入時使用的字符串或者符號被過濾,但我們依然可以使他報錯,并且報出他的數據庫表名等
二.sql注入繞過手段
1.注釋符
通常是用來注釋掉id=1’ 這個單引號,或者字符串
2.單行注釋
- -+(通常直接在瀏覽器拼接) 或 --空格(通常在插件中使用) 或#
列1:
?id=1’ --+ 就起到注釋單引號的作用
同理,–空格和#也是一樣
演變1:
?id=-1’ union select 1,2,3 --+ 同樣是起到閉合前面單引號的作用
演變2:
如果過濾了注釋符怎么辦了?
答案:我們可以使用單引號閉合前面的單引號,這樣就不會報錯
可以使用‘ or 1=’1
?id=1’ or 1=’1 返回正常
?id=1’ or 1=’2 返回報錯
3.這時候我們知道了
哦!!!
注釋符在sql注入中多是起到閉合單引號,和注釋單引號的作用
如下圖1,2總結
設想如果程序員過濾了
and or 和select等我們注入的字符怎么辦?
方法
1.MySQL大小寫不銘感
所以我們可以大小寫繞過
比如:sELEct
2.吧值或參數轉為16進制,或者url編碼
3.吧and 替換為 && ,吧or替換為 ||
4.內聯注釋和多行注釋
可以插入字符串等
如下圖總結
5.雙寫繞過
比如:
oorr
當過濾了or時
中間那個or就不在了
但是還是剩下一個or
哈哈,所以依然可以繞過
如下圖總結
當發現過濾一些參數時
我們可以用sqlma --hex
可以繞過部分
6.最后我們來看看一個過濾函數
第一個參數:過濾的變量值
第二個參數:需要替換成為的變量
第三個參數:在此參數中只要涵有第一個參數的值都過濾為第二參數我們改變的值
可以看到
在id中吧含有# ,-- ,“”的全部過濾為空
三.sql繞過演示
打開less-11
id=1返回正常
加’ 報錯并且推出sql語句
使用–空格
發現無法注釋掉前面的單引號,說明過濾了-- 和空格
使用or 1=‘1 閉合前面的單引號返回正常
再次證明他確實過濾了-- 空格
因為空格別過濾
但是我們用+代替
但是要注意+和url編碼字符要在瀏覽器中使用,不要在插件,容易出錯
如下圖
的到了數據庫名
我們來看看源碼
確實–被過濾了
難怪
接著下一個案例
less-25
直接單引號報錯,分析出SQL語句
輸入and 1=‘1
發現沒有顯示
說明and和or肯定被過濾了
使用||繞過
成功
也可以雙寫繞過
同樣成功
看看源碼,
確實過濾了and
和or
使用聯合查詢
爆他字段
接著就可以進行其他爆破,就不演示了,因為sql注入發現注入點,就可以使用sqlmap直接探測或使用腳本探測的。
打開less-26
加”
報錯,推出SQL語句
如圖操作
發現原語句空格不在了
由此推斷過濾了空格
我們使用%0a代替空格
返回正常
四.總結
1.雙寫繞過
2.大小寫混合繞過
3.|| 和&&繞過
4.空格繞過(%0a)
5.內聯繞過
6.注釋符(or 1=’1)
7.注意:當使用url編碼和+時在瀏覽器導航使用,不要在插件使用
總結
以上是生活随笔為你收集整理的sql注入_1-7_绕过注入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL注入_1-6_user-agent
- 下一篇: sql注入_1-8_宽字节注入