第54天:Web攻防-SQL注入数据类型参数格式JSONXML编码加密符号闭合复盘报告
1、Web攻防-SQL注入-参数类型*参数格式
2、Web攻防-SQL注入-XML&JSON&BASE64等
3、Web攻防-SQL注入-数字字符搜索等符号绕过
一、数据库知识:
1、数据库名,表名,列名,数据
2、自带数据库,数据库用户及权限
3、数据库敏感函数,默认端口及应用
4、数据库查询方法(增加删除修改更新)
二、SQL注入产生原理:
代码中执行的SQL语句存在可控变量导致
三、影响SQL注入的主要因素:
1、数据库类型(权限操作)
2、数据操作方法(增删改查)
3、参数数据类型(符号干扰)
4、参数数据格式(加密编码等)
5、提交数据方式(数据包部分)
6、有无数据处理(无回显逻辑等)
四、常见SQL注入的利用过程:
1、判断数据库类型
2、判断参数类型及格式
3、判断数据格式及提交
4、判断数据回显及防护
5、获取数据库名,表名,列名
5、获取对应数据及尝试其他利用
五、黑盒/白盒如何发现SQL注入
1、盲对所有参数进行测试
2、整合功能点脑补进行测试
白盒参考后期代码审计课程
利用过程:
获取数据库名->表名->列名->数据(一般是关键数据,如管理员)
六、案例说明:
在应用中,存在参数值为数字,字符时,符号的介入,另外搜索功能通配符的再次介入,另外传输数据可由最基本的对应赋值传递改为更加智能的XML或JSON格式传递,部分保证更安全的情况还会采用编码或加密形式传递数据,给于安全测试过程中更大的挑战和难度。
1、数字,字符,搜索
例:
select * from news where id=$id;
select * from news where name='$name';
select * from news where name like '%name%';
符号干扰:有无单引号或双引号及通配符等
order by 3
union select 1,2,3
知道数据库名:database() news_db
获取数据库名下的表名信息:
借助自带的information_schema.tables表(记录所有数据库名下的表名)
1%' union select 1,2,table_name from information_schema.tables where table_schema='news_db'#
admin下列名
借助自带的information_schema.columns表(记录所有数据库名下的表名对应的列名信息)
1%' union select 1,2,column_name from information_schema.columns where table_schema='news_db' and table_name='admin'#
news_db
admin
username,password
1%' union select 1,2,password from admin#
2、XML,JSON,编码,混合
XML:
<?xml version="1.0" encoding="UTF-8"?>
<news>
<article>
<id>1</id>
<title>xiaodi</title>
<content>i am xiaodi</content>
<created_at>2025-03-07</created_at>
</article>
<article>
<id>2</id>
<title>xiaodisec</title>
<content>i am xiaodisec</content>
<created_at>2025-03-06</created_at>
</article>
</news>
JSON:
{
"news:"[
{
"id": 1,
"title": "xiaodi",
"content": "i am xiaodi",
"created_at": "2025-03-07"
},
{
"id": 2,
"title": "xiaodisec",
"content": "i am xiaodisec",
"created_at": "2025-03-06"
}
]
}
Base64:
{
"news": [
{
"id": "MQ==",
"title": "eGlhb2Rp",
"content": "aSBhbSB4aWFvZGk=",
"created_at": "MjAyNS0wMy0wNw=="
},
{
"id": "Mg==",
"title": "eGlhb2Rpc2Vj",
"content": "aSBhbSB4aWFvZGlzZWM=",
"created_at": "MjAyNS0wMy0wNg=="
}
]
}
①数据传输采用XML或JSON格式传递
A、json发包注入:
B、xml发包注入:
②数据传输采用编码或加密形式传递
③数据传递采用JSON又采用编码传递
七、实例应用:
1、JSON注入案例:
SRC报告-众测下的SQL注入挖掘
SRC报告-edu-SQL注入案例分享
SRC报告-河南省xxxx某站存在SQL注入漏洞
2、编码注入案例:
互联网搜下对应说明
实战 || 记一次某项目中奇怪的SQL注入漏洞