sql注入閉合思路


一般的代碼:$id=$_GET['id'];

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";

就是這里,對id進行了修飾,用'(單引號)把id括了起來。所以我們構造語句的時候,一是要把我們構造的語句‘逃逸’出來,二是要把結構進行補全或者適當的注釋。

注釋可以用--+;-- -;#把后面的'或者多余的修飾符注釋掉,當然肯定不止這三種我只是舉個例子而已。

一般常見的結構有以下幾種:

or 1=1--+

'or 1=1--+

"or 1=1--+

)or 1=1--+

')or 1=1--+

") or 1=1--+

"))or 1=1--+

既把前面進行補全,后要保證格式的正確,讓我們的語句可以順利執行。



至於and和or的用法:

首先and是有假即假。我們先看一個例子 ?id=1' and 1=2 -- - ,很明顯1是不等於2的,所以在?id=1是正確回顯的情況下,例子一般情況下是不會給予正常回顯的。

而or是有真即真,我們也來看一個例子 ?id=1' and 1=2 -- - ,和上面一樣,1是不等於2的,而這個例子網頁卻可以正確回顯。

通常情況下,or和and在注入的時候影響不算很大,兩者區別一般在於盲注。很多時候防火牆攔截過濾了and的時候or可能沒有,那就可以用or來進行盲注,節省繞過的時間。又或者用xor(異或)繞過防火牆,異或在這不作過多闡述,因為不在本次范圍之內。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM