天天听SQL注入,SQL注入到底是怎么注入的?

天天说SQL注入,写程序的时候要如何如何避免SQL注入,有多少人根本都不知道SQL注入是怎么注入的?

下面是SQL注入的一个简单实现步骤

首先我自己简单写了一个有SQL注入漏洞的接口用来测试

 

第一步:判断接口是否存在数据库注入漏洞

使用and 1=1,使条件成立,看接口是不是还可以正常返回数据

 

使用and 1=2,使条件不成立,看接口是不是不返回数据了,或者报错

 

 上面两个步骤达到预期结果,就说明这个接口存在SQL注入漏洞

 第二步:判断字段数

虽然看起来是返回了两个字段数据,但是SQL不一定查了两个数据,可能在程序中处理过后才返回的两个数据,所以需要判断SQL到底查询了几个字段

使用order by (一个数字)来依次请求,判断接口的SQL查询了几个字段。

先使用order by 1来试试,结果没问题

再使用order by 2 后面3 4 5,直到接口报错或者不返回数据,就说明SQL查询的字段数是前一个不报错的数字,我这里是查询的三个字段,所以到4的时候就报错了

 现在知道了SQL查询的是字段数是3

 第三步:判断回显点

回显点可以将我们输入的SQL语句执行,并返回回来

先试用and 1=2 使原SQL的条件不成立,再使用union 加上自己的SQL

 我这里是用的Oracle,mysql可以直接select 1,2,3

可以看到报错提示数据类型不匹配,那就换成下面三个试一下,一般不是number就是varchar,看第几个字段可以返回回来1。

'1',null,null 

null,'1',null 

null,null,'1'

第一个字段可以返回,说明可以在第一个字段这里写我们想查询的东西

 

 可以查询实例名

 可以查询数据库版本

 

  • 12
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

阿演

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

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

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

打赏作者

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

抵扣说明:

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

余额充值