前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数字型注入和字符型注入原理

数字型注入和字符型注入原理

作者头像
vFREE
发布2021-12-20 21:41:53
2.1K0
发布2021-12-20 21:41:53
举报
文章被收录于专栏:博客原创文章博客原创文章

SQL注入简单来说就是后端对用户传入的数据没有进行一个合法性的审查,导致用户构造一个恶意的语句传入后端拼接原有SQL查询语句继续查询,从而得到用户想要得到的数据信息

SQL注入在几年内,从没有落榜于OWASP top 1中,可见,SQL注入在网络中危害性

目前流行的注入大致有

  • 字符型注入
  • 数字型注入
  • 联合注入
  • 布尔盲注
  • 时间盲注
  • 堆叠注入
  • 报错注入
  • 宽字节注入

......

数字型注入原型查询语句:

代码语言:javascript
复制
select * from xxx where id=.$_GET[id]

检测方法

代码语言:javascript
复制
url/auth.php?a=-1 or 1=1# //正常
url/auth.php?a=-1 or 1=2#  //错误

为什么是-1呢?因为-1很明显是没有这个页面的,用什么数值都行,但是要输出不出来内容的数值,比如是1000000000或者-1000000,一个服务器如果是用数值去调取页面的话,完全可以构造一些不存在的数值去引发错误,然后再接上or 1=1输出正确,or 1=1永远为真,即使前面的是错误的,依然可以通过or 1=1输出一个正常的页面,因此-1是啥也不返回,然后如果再搭配or 1=1就可以确定是否有注入

or就是或者,即使前面的数据为假,后面也会执行,a后面的内容会带到数据库中去查询,所以完整的查询语句就是:

代码语言:javascript
复制
select * from xxx where id=-1 or 1=1;

or 1=1在数据库中会输出全部数据,1永远等于1,所以会输出全部数据

通过or 1=1可以判断出来是否有注入,除此之外,还有and

and是与,只能前面是真的,后面才会执行,比如说1 and 1=1

代码语言:javascript
复制
url/auth.php?a=1 and 1=1# //正常
url/auth.php?a=1 and 1=2#  //错误

也是同样的道理,如果前面为真,才会执行后面的,1永远等于1,但是不会等于2,所以根据这个特征可以判断出是数值型注入还是字符型注入

字符型注入原型查询语句
代码语言:javascript
复制
select * from xxx where id=."'$_GET[id]'"

相比数字型注入多了个引号

字符型注入和数字型注入的用法其实也算是大同小异的,但是在拼接语句的适合,要加一个单引号,比如这样子:

代码语言:javascript
复制
url/auth.php?a=-1' or 1=1# //正常

此时的sql查询语句就是 select * from xxx where id='-1' or 1=1;

如果不加单引号的话,就会变成 select * from xxx where id='-1 or 1=1';

看起来好像没啥区别,实际上区别很大,一个是查询-1,一个是查询-1 or 1=1,如果查询-1 or 1=1肯定查不出什么东西,因此我们要闭合掉原有的引号,然后才可以正确执行

有人会问,那闭合掉前面的引号的话,原本的引号怎么办呢?

注意看前面出现的#号,#相当于一个结束符号,也就是说#后面的语句是不会执行的,所以#号后面的单引号也就是不会执行,所以不会报错

除此之外,在MySQL中,有一个特性和php很像,就是强制类型转换,如果等于号两边的类型不相等,字符会强制转换成数值,人菜话不多,如图所示

注:部分图片源自于网络,如有侵权,请联系删除!!!谢谢

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档