sql注入-整型与字符型

1、数字型注入
当输入的参数为整形时,如果存在注入漏洞,可以认为是数字型注入。

测试步骤:

(1) 加单引号,www.aaa.com/a.php?id=1’

对应的sql:select * from table where id=1’ 这时sql语句出错,程序无法正常从数据库中查询出数据,就会抛出异常;

(2)1=1返回正确 加and 1=1 ,www.aaa.com/a.php?id=1’and 1=1

对应的sql:select * from table where id=1’ and 1=1 语句执行正常,与原始页面如任何差异;

(3)1=2返回不正确 加and 1=2,www.aaa.com/a.php?id=1‘and 1=2

对应的sql:select * from table where id=1and 1=2 语句可以正常执行,但是无法查询出结果,所以返回数据与原始网页存在差异

如果满足以上三点,则可以判断该URL存在数字型注入

数字型可以存在网页的页数框和类似数字作为搜索的地方。

2、字符型注入
当输入的参数为字符串时,称为字符型。字符型和数字型最大的一个区别在于字符型的注入因为涉及字母等需要引号,而数字类型的则不需要。

例如数字型语句:select * from table where id =1

则字符型如下:select * from table where name=’admin’

因此,在构造payload时通过闭合单引号可以成功执行语句:

测试步骤:

(1) 加单引号:select * from table where name=’admin’’

由于加单引号后变成三个单引号,则无法执行,程序会报错;

(2) 加 ’and 1=1 此时sql 语句为:select * from table where name=’admin’ and 1=1’ ,也无法进行注入,还需要通过注释符号将其绕过;

Mysql 有三种常用注释符:

– 注意,这种注释符后边有一个空格

通过#进行注释

/* */ 注释掉符号内的内容

因此,构造语句为:select * from table where name =’admin’ and 1=1—’ 可成功执行返回结果正确;

(3) 加and 1=2— 此时sql语句为:select * from table where name=’admin’ and 1=2 –’则会报错

如果满足以上三点,可以判断该url为字符型注入。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值