Sql注⼊的分类:数字型+字符型
Sql注⼊:
就是通过把SQL命令插⼊到Web表单提交或输⼊域名或页⾯请求的查询字符串,最终达到欺骗服务器执⾏恶意的SQL命令。通过构造恶意的输⼊,使数据库执⾏恶意命令,造成数据泄露或者修改内容等,以达到攻击的⽬的。主要是由于应⽤程序对⽤户的输⼊没有进⾏严格的过滤⽽造成的。
⼀、万能密码
在说sql注⼊分类之前,先来看⼀下万能密码的构成原理。万能密码是由于某些程序,通过采⽤判断sql语句查询结果的值是否⼤于0,来判断⽤户输⼊数据的正确性造成的。当查询之⼤于0时,代表⽤户存在,返回true,代表登录成功,否则返回false 代表登录失败。由于 ‘or 1=1--' 在执⾏后,结果始终为1,所以可以登录成功。因此,被称为万能密码。
⼆、注⼊的分类
注⼊的分类:数字型和字符型。攻击者⽬的只有⼀点,那就是绕过程序的限制,使⽤户输⼊的数据带⼊数据库执⾏,利⽤数据库的特殊性获取更多的信息或者更⼤的权限。
1、数字型注⼊
当输⼊的参数为整形时,如果存在注⼊漏洞,可以认为是数字型注⼊。
测试步骤:
(1)加单引号,URL:’
对应的sql:select * from table where id=3’ 这时sql语句出错,程序⽆法正常从数据库中查询出数据,就会抛出异常;
(2)加and 1=1 ,URL: and 1=1
对应的sql:select * from table where id=3’ and 1=1 语句执⾏正常,与原始页⾯如任何差异;
(3)加and 1=2,URL: and 1=2
对应的sql:select * from table where id=3 and 1=2 语句可以正常执⾏,但是⽆法查询出结果,所以返回数据与原始⽹页存在差异
如果满⾜以上三点,则可以判断该URL存在数字型注⼊。
2、字符型注⼊
当输⼊的参数为字符串时,称为字符型。字符型和数字型最⼤的⼀个区别在于,数字型不需要单引号来闭合,⽽字符串⼀般需要通过单引号来闭合的。
例如数字型语句:select * from table where id =3
则字符型如下: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为字符型注⼊。
Sql注⼊分类可以按照参数类型分为数字型和字符型。还有⼀些常见的注⼊分类,例如:(1)POST:注⼊字段位于POST数据中;
(2)Cookie:注⼊字段位于Cookie数据中;
(3)延时注⼊:根据数据库延时特性的注⼊
(4)搜索注⼊:注⼊字段在搜索的位置;
(5)base64注⼊:注⼊字符经过base64编码后注⼊;
(7)错误注⼊:基于数据库错误信息的响应注⼊;
等等…
注:以上内容为作者⾃⼰原创,错误之处还望指出,谢谢⼤家sql语句查询结果取反
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论