共計 1409 個字符,預計需要花費 4 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
這篇文章主要介紹了 SQL 注入繞過的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓丸趣 TV 小編帶著大家一起了解一下。
前言
sql 注入在很早很早以前是很常見的一個漏洞。后來隨著安全水平的提高,sql 注入已經(jīng)很少能夠看到了。但是就在今天,還有很多網(wǎng)站帶著 sql 注入漏洞在運行。稍微有點安全意識的朋友就應(yīng)該懂得要做一下 sql 注入過濾。
SQL 注入的繞過技巧有很多,具體的繞過技巧需要看具體的環(huán)境,而且很多的繞過方法需要有一個實際的環(huán)境,最好是你在滲透測試的過程中遇到的環(huán)境,否則如果僅僅是自己憑空想,那顯然是不靠譜的。
一、引號繞過
會使用到引號的地方是在于最后的 where 子句中。如下面的一條 sql 語句,這條語句就是一個簡單的用來查選得到 users 表中所有字段的一條語句。
select column_name from information_schema.tables where table_name= users
這個時候如果引號被過濾了,那么上面的 where 子句就無法使用了。那么遇到這樣的問題就要使用十六進制來處理這個問題了。
users 的十六進制的字符串是 7573657273。那么最后的 sql 語句就變?yōu)榱耍?/p>
select column_name from information_schema.tables where table_name=0x7573657273
小結(jié):使用十六進制可以繞過引號
二、逗號繞過
在使用盲注的時候,需要使用到 substr() ,mid() ,limit。這些子句方法都需要使用到逗號。對于 substr()和 mid()這兩個方法可以使用 from to 的方式來解決。
select substr(database(0 from 1 for 1);
select mid(database(0 from 1 for 1);
對于 limit 可以使用 offset 來繞過。
select * from news limit 0,1
# 等價于下面這條 SQL 語句
select * from news limit 1 offset 0
小結(jié):使用 from 可以繞過逗號
三、比較符 (,) 繞過
同樣是在使用盲注的時候,在使用二分查找的時候需要使用到比較操作符來進行查找。如果無法使用比較操作符,那么就需要使用到 greatest 來進行繞過了。
最常見的一個盲注的 sql 語句。
select * from users where id=1 and ascii(substr(database(),0,1)) 64
此時如果比較操作符被過濾,上面的盲注語句則無法使用, 那么就可以使用 greatest 來代替比較操作符了。greatest(n1,n2,n3, 等)函數(shù)返回輸入?yún)?shù) (n1,n2,n3, 等) 的最大值。
那么上面的這條 sql 語句可以使用 greatest 變?yōu)槿缦碌淖泳?
select * from users where id=1 and greatest(ascii(substr(database(),0,1)),64)=64
小結(jié):使用 greatest()繞過比較操作符。
感謝你能夠認真閱讀完這篇文章,希望丸趣 TV 小編分享的“SQL 注入繞過的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持丸趣 TV,關(guān)注丸趣 TV 行業(yè)資訊頻道,更多相關(guān)知識等著你來學習!
向 AI 問一下細節(jié)