?id=5 and 1=1 如果返回页面与原页面一致(回显正确) 则为数值型注入
原因:
1. 猜测为数值型,后台语句为select * from table where id=5 and 1=1;where语句判断条件为真并且id参数值为5,正常执行
2. 猜测为字符型,后台语句为select * from table where id='5 and 1=1';where 语句将找不到id为'5 and 1=1' 的参数,语句执行失败
如果是字符型:
传入 5' and 1=1 --+
字符型后台语句为:
select * from table where id='5' and 1=1 --+ ';后面的单引号被注释,不需要担心单引号闭合问题,id='5'才是真正的id查询语句,id参数的值应该是一个值,而不是带上and 1=1,因为数据库中没有带着and 1=1的名
(1)因为id参数是用户可控的,会随请求带入到数据库中执行并回显相应内容,可能是一个注入点。
(2)第一步当id变化时,页面回显响应变化,首先考虑联合注入
(3)第二步,加单引号或双引号,当有报错时,可考虑报错注入;
(4)当第二步没变化,进行第三步,当页面有布尔类型的状态,可考虑布尔盲注;
(5)若都不行,进行第四步,考虑延时注入。
(6)从联合注入到盲注以及延迟注入,其时间人力成本逐步增大,尽可能选择低成本方式进行注入。