1萝风、數(shù)字型注入
當(dāng)輸入的參數(shù)為整形時(shí)甘凭,如果存在注入漏洞柬批,可以認(rèn)為是數(shù)字型注入顷扩。
測(cè)試步驟:
(1) 加單引號(hào)拐邪,URL:www.text.com/text.php?id=3’
對(duì)應(yīng)的sql:select * from table where id=3’ 這時(shí)sql語句出錯(cuò),程序無法正常從數(shù)據(jù)庫中查詢出數(shù)據(jù)隘截,就會(huì)拋出異常扎阶;
(2) 加and 1=1 ,URL:www.text.com/text.php?id=3 and 1=1
對(duì)應(yīng)的sql:select * from table where id=3’ and 1=1 語句執(zhí)行正常,與原始頁面如任何差異婶芭;
(3) 加and 1=2东臀,URL:www.text.com/text.php?id=3 and 1=2
對(duì)應(yīng)的sql:select * from table where id=3 and 1=2 語句可以正常執(zhí)行,但是無法查詢出結(jié)果犀农,所以返回?cái)?shù)據(jù)與原始網(wǎng)頁存在差異
如果滿足以上三點(diǎn)惰赋,則可以判斷該URL存在數(shù)字型注入。
2呵哨、字符型注入
當(dāng)輸入的參數(shù)為字符串時(shí)赁濒,稱為字符型。字符型和數(shù)字型最大的一個(gè)區(qū)別在于仇穗,數(shù)字型不需要單引號(hào)來閉合流部,而字符串一般需要通過單引號(hào)來閉合的戚绕。
例如數(shù)字型語句:select * from table where id =3
則字符型如下:select * from table where name=’admin’
因此纹坐,在構(gòu)造payload時(shí)通過閉合單引號(hào)可以成功執(zhí)行語句:
測(cè)試步驟:
(1) 加單引號(hào):select * from table where name=’admin’’
由于加單引號(hào)后變成三個(gè)單引號(hào),則無法執(zhí)行舞丛,程序會(huì)報(bào)錯(cuò)耘子;
(2) 加 ’and 1=1 此時(shí)sql 語句為:select * from table where name=’admin’ and 1=1’ ,也無法進(jìn)行注入,還需要通過注釋符號(hào)將其繞過球切;
Mysql 有三種常用注釋符:
-- 注意谷誓,這種注釋符后邊有一個(gè)空格
# 通過#進(jìn)行注釋
/* */ 注釋掉符號(hào)內(nèi)的內(nèi)容
因此,構(gòu)造語句為:select * from table where name =’admin’ and 1=1—’ 可成功執(zhí)行返回結(jié)果正確吨凑;
(3) 加and 1=2— 此時(shí)sql語句為:select * from table where name=’admin’ and 1=2 –’則會(huì)報(bào)錯(cuò)
如果滿足以上三點(diǎn)捍歪,可以判斷該url為字符型注入。