当前位置: 首页 > article >正文

SQL注入(1)

1.数字型注入

例如PHP代码

“ Select username from users where  id=”.$_GET['id']

可以注意到,用户的输入ID字段没有任何过滤的,被直接拼接在了SQL查询语句中,由于ID没有被引号包裹,而且类型为数字,我们称这种注入为数字型注入

我们可以使用在语句中加入运算符的方法来测试这种注入是否存在,比如测试id=1和id=2-1,如果两者都查询到了且结果相同,说明PHP文件将2-1作为一个表达式执行,如果这种情况,说明有可能是一个数字型SQL注入,此时只能得到用户名,想要更多的信息,需要使用一个SQL关键字union

 

2.Union注入

Union可以将两个select语句的结果合并到一个结果集中,但是要求两个select语句拥有相同的列数

例如输入id=0 union select password from users,(空格的URL编码为%20)

表示从users表中读password列(在打出这个例子是已知有users表和password列)

在这里写ID=0列,是因为要使第一个select结果为空,让第二个select语句查询的password显示出来,还可以用limit关键字查询其他行

 

3.字符型注入

“ Select id from users where  username='  ”.$_GET['username'].” ' ''

用户输入username被单引号包裹了起来,这样一来用户的所有输入都会被当做字符串处理,无法使用之前数字型注入的payload进行注入了。但是如果我们的输入中也存在一个引号,这样就可以将前面的引号闭合,使得后面的内容从字符串中逃逸出来,最后还需要将后面的引号注释掉,以免引发语法错误

比如我们可以使用一个单引号,将字符串闭合,最后用井号将后面的单引号注释掉

例如username='or1=1#(单引号,空格,井号都需要URL编码)

在where语句中,or连接两个表达式,第一个返回假,第二个返回真,or操作后返回真,整个操作返回所有的结果集

4.布尔盲注

当服务器不显示查询结果,只返回是否查询成功时,我们就无法使用union直接回显数据,这时就需要进行盲注,这里先操作布尔盲注

既然只返回两种状态,存在或不存在,就可以通过这两种状态注入出数据

Username='or substr (password ,1,1)='1'#

Substr是一个字符串截取函数,第一个参数是要截取的字符串,第二个是截取开始的位置,第三个是截取长度,例如上面语句的意思是从第一个字符开始截取password字段的一个字符,并判断等不等于1,这个数字自己一个一个尝试太麻烦,可通过爆破来进行,直到达到某一位,我们无法遍历出其真正的值时,就意味着我们可能已经猜测完成,也可以提前使用length函数猜测一下这个字符串的长度


http://www.kler.cn/a/383145.html

相关文章:

  • 【Unity3D】Particle粒子特效或3D物体显示在UGUI上的方案
  • 实践KDTS-WEB从mysql迁移到kingbasev9
  • K8S 黑魔法之如何从 Pod 拿到节点的命令行
  • Debian 12 安装配置 fail2ban 保护 SSH 访问
  • 电脑丢失bcrypt.dll文件是什么原因?找不到bcrypt.dll文件修复办法来啦!
  • CSPM认证最推荐学习哪个级别?
  • 一款根据图片内的文字,把图片分类的软件
  • 驱动芯片 GC1277:电脑散热风扇驱动的卓越之选
  • 【ARM Linux 系统稳定性分析入门及渐进 2.2 -- Crash 命令 Crash Usage】
  • 什么是Es6,有什么特点
  • Ubuntu18.04服务器非root用户在虚拟环境下的python版本设定
  • 在软件开发流程中使用AI大模型有哪些优势?
  • Tokenformer:基于参数标记化的高效可扩展Transformer架构
  • C-DTL698电表 转 IEC61850 协议项目案例
  • linux dpkg 查看 安装 卸载 .deb
  • C++ --- Socket套接字的使用
  • LeetCode136只出现一次的数字I
  • Javaweb选课系统-开源计划-起源-001-完全免费开源
  • [实战-11] FlinkSql 设置时区对TIMESTAMP和TIMESTAMP_LTZ的影响
  • linux node vue3 部署手册
  • 基于YOLO11/v10/v8/v5深度学习的煤矿传送带异物检测系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】
  • 信息学科平台系统设计与实现:Spring Boot框架精讲
  • 【H2O2|全栈】JS进阶知识(四)Ajax
  • 3种最难学习和最容易学习的 3 种编程语言
  • 微服务架构面试内容整理-Zuul
  • 打印等边三角形和直角三角形(用循环)C语言