0


最简单的方法:判断SQL注入是字符型还是数字型

在网上看了那些方法,总的来说,我觉得有些绕。今天练习sqli-libs的时候自己遇到了问题,自己琢磨琢磨就想到了这个方法。
废话不多说,下面开始吧!

方法一:order by法

构造payload为:

id=1 order by 9999 --+
  • 如果正确返回页面,则为字符型
  • 否则,为数字型

分析:
字符型执行的sql语句为

select * from user where id='1 order by 9999 --+'

,注释符【- -】实际上在执行的时候,被当成id的一部分,也就是说,在执行sql语句的时候,条件是

id='1 order by 9999 --+'

。最终只会截取前面的数字,返回id=1的结果。
如果是数字型的话,执行的sql语句为

select * from user where id=1 order by 9999 --+

,在现实生活中,根本就没什么可能会存在有9999个字段的表,所以会报错。

方法二:逻辑判断法

这就很简单了,就是猜,但是也得知道一点技巧。
比如说,id这种,一般在数据库存储为int类型的,在查询时,可能是数字型,也可能是字符型。
但是,如果是name或者username之类的,按正常逻辑,一看就知道是以varchar或者char存储的,那指定就是字符型了,因为不加引号,sql语句绝对报错。
就像这样:
在这里插入图片描述
如果不加引号:
在这里插入图片描述

标签: mysql web安全

本文转载自: https://blog.csdn.net/jenchoi413/article/details/125431401
版权归原作者 jenchoi413 所有, 如有侵权,请联系我们删除。

“最简单的方法:判断SQL注入是字符型还是数字型”的评论:

还没有评论