MySQL注入类型的判断方法与原理解析(演示sql语句执行命令)

文章目录

在进行SQL注入的时候,我们在确定注入点之后,第一步要做的事情就是判断注入类型,注入类型分为字符型与数字型,确定好注入类型之后,才能继续接下来的sql注入。

以下口诀适用于具有数据回显的情况,如果只有页面变化,没有数据回显,就需要使用布尔盲注,如果页面没有任何变化就需要利用时间盲注判断,这里不对布尔盲注与时间盲注进行讲解,只讲述最基础的具有数据回显的情况。

结论

牢记以下结论,三步即可判断出注入类型,具体原理后面会分析:

  1. 判断是数字型还是字符型:通过?id=1 and 1=2判断,如果显示不正常,说明是数字型,如果显示正常,就是字符串型,就需要进行下面的步骤继续判断。
  2. 判断是什么符号的字符型:
    • 单引号测试:通过?id=1'观察回显
    • 双引号测试:通过?id=1"观察回显
  3. 判断出字符型:如果哪个符号回显是报错信息,则表示是哪个符号的字符型,接着使用对应符号闭合之后进行SQL注入即可

原理

1.假设是数字型注入

输入?id=33 and 1=2之后,在sql语句中是这样显示的

select * from cms_article where id=33 and 1=2;

id=33的条件是可以查到正常内容的,但是加上 and 1=2 之后,就不会显示正常内容,说明我们的加上的and 1=2被mysql解析了,才不会显示正常的内容。所以可以通过输入?id=1 and 1=2观察显示情况,从而反推出是否是数字型注入,如果不是数字型注入,那必定是字符型注入了,所以就需要进行下一步判断:究竟是单引号还是双引号的字符。

2.假设是双引号字符型注入

1.我们输入?id=1'进行单引号测试之后,在sql语句中是这样显示的

select * from cms_article where id="33'";

image-20230824104018918

通过结果我们可以知道,mysql将我们输入的单引号忽略了,只取了我们传入的33,从而查出了数据。经过多次尝试,我将单引号换成其他标点符号,都能正常查出数据。

因此可以得出结论:mysql在查询条件为字符串的时候,遇到第一个符号就会停止搜索,只会取第一个符号之前的内容,并且正常显示,如果查询条件为数字,那么遇到符号就会报错了,如图:

image-20230824104539604

所以我们可以借助这个特性,直接判断出字符型注入。

2.我们输入?id=1"进行双引号测试之后,在sql语句中是这样显示的:

select * from cms_article where id="33"";

可以看到我们输入的双引号闭合了sql语句中的第一个引号,然后引发了如下图报错:

image-20230824104757351

最终结论:如果我们在确定这是字符型注入的时候,使用双引号如果引发了报错,说明就是双引号的字符型。

3.单引号字符的原理和双引号字符原理是一模一样的

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

yuan_boss

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

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

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

打赏作者

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

抵扣说明:

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

余额充值