SQL注入 02

1 SQL注入的分类

1.1 数字型注入

 

页面让我输入一个ID 
插入一个小知识点:

  • 根据HTTP标准,? 是官方定义的查询字符串分隔符(RFC 3986)

  • 服务器会严格解析 ? 后的内容为参数,/ 后的内容为路径

?id=1

 查询了id=1的username和password,这就是数字型注入

测试

闭合单引号:出现报错

 http://www.test.com/test.php?id=1 and 1=1

SQL语句为:select * from table where id=1 and 1=1 ,页面正常

http://www.test.com/test.php?id=1 and 1=2

SQL语句为:select * from table where id=1 and 1=2,返回数据与原始请求不同

用and 1=1 和 1=2 可以用来测试页面是否存在注入点,如果页面两次返回的页面不一样表示此处存在注入点

1.2 字符型注入

字符型:select * from table where username=‘test’

字符型注入最关键的是如何闭合SQL语句以及注释多余的代码

查询内容为字符串时:select * from table where username = ‘test’

测试:

select * from table where username = 'test and 1=1' ,无法注入,“test and 1=1”会被数据库当作查询的字符串

select * from table where username = 'test' and '1'='1’ --’,必须闭合字符串才可以继续注入

/?id=1%27%20and%201=2--+这里页面错误回显--+表示在url栏的注释+表示空格

演示

这里演示常见的数字型注入 演示页面http://172.172.3.250/cms/show.php?id=35

一般演示步骤如下,

1,如果分别得到对应的结果说明该页面有SQL注入漏洞 '单引号,在有参数的后面输入单引号,

2,结果报错或者回显错误 and 1=1,测试回显正常

3,and 1=2,测试回显错误

总结以上内容

从上述三个测试步骤说明该页面有SQL注入漏洞 深入剖析:

1、大致能猜测到该页面的SQL语句是 select * from users(表名) where id=1

2、我们能控制输入并且能修改的参数就是id

3、这里我们只能把id=35修改成id=1 and 1=1 和id=1 and 1=2带到服务器被数据库引擎都执行成功了

4、select * from users(表名) where id=1 and 1=1 返回的结果真,所以就能回显正常内容

5、select * from users(表名) where id=1 and 1=2 返回的结果为假,and 1=2肯定为假吧,所以回显不了任何内容,内容为空

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fatsheep洋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值