SQL注入之数字型注入实战案例详解

SQL注入是WASPTOP10永居榜首的漏洞

SQL注入种类多种多样,此文将通过一个实例详细讲解数字型注入。
在我们拿到一个网页时,首先判断它是否存在注入漏洞最简单粗暴的方法就是在参数后面加一个单引号,如果网页报错,那么说明有可能存在注入漏洞了。请看下面的网页操作:
网址http://192.168.114.147/sqli-labs-master/Less-1/上面是一个正常的网页,我们先检测网页是否有参数,在网址后面加上:?id=1 即http://192.168.114.147/sqli-labs-master/Less-1/?id=1(注意网页的变化):
在这里插入图片描述此时网页内容有了变化,返回正常的页面,说明什么呢?说明我们在地址栏中的参数被带到数据库中进行查询,那么这里就很有可能存在注入漏洞。
为了进一步弄清楚它的原理我们去看一下这个网页的源代码:
$ sql="SELECT * FROM users WHERE id=’ i d ′ L I M I T 0 , 1 " ; 这 句 代 码 就 是 S Q L 的 查 询 语 句 , 即 我 们 在 浏 览 器 中 输 入 的 地 址 中 包 含 的 参 数 就 是 id' LIMIT 0,1"; 这句代码就是SQL的查询语句,即我们在浏览器中输入的地址中包含的参数就是 idLIMIT0,1";SQL id。
到此我们只知道我们输入的参数被带到数据库中查询,并不能确定存不存在注入漏洞。我们首先用最简单粗暴的方式验证一下,即在参数后面加一个单引号’,看网页的变化:
在这里插入图片描述网页报错了,我们去看一下我们加进去的单引号在源代码中是怎么样的:
在这里插入图片描述
可以看到加进去的单引号在变量id的后面与前面的单引号构成了闭合,原来的后半个单引号成了多余的符号,所以查询语句不能正常理解而报错。由此可以判断此处存在注入漏洞了。
那么我们怎么判断它是数字型还是字符型注入呢?我们用一个逻辑运算符来验证:and ,在后面加上and 1=1或=2,构造查询语句:
在这里插入图片描述此时的返回是正常的,因为1=1是真命题,再来判断1=2的假命题:
在这里插入图片描述为什么1=2还是能正常返回呢?我们把参数带到源代码里看看:(参数的值为“1 and 1=2”原样带到源代码中看为什么能正常返回)在这里插入图片描述此时我们能看到变量id的值是引号里的值,显然不符合sql语句,正常的语句应该是:‘1’ and 1=2 如此才能构成符合sql语句,所我们再次在地址栏里构造查询语句(1后加个单引号与前面的闭合)如下:
在这里插入图片描述可以看到已经返回了错误提示,那么当然了1=2是假命题所以返回错误提示是我们想要的结果,我们再来看看源代码中是什么样的:
在这里插入图片描述当然,为了不被返回错误信息和不返回信息干扰,我们一般使用–+来注释掉后面的内容,如:
在这里插入图片描述此时它只是不返回内容。
如上说明了此处存在SQL注入,且是数字型注入。字符型的漏洞详解将在之后的文章中详细分析,敬请期待!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值