mysql注入中基于报错注入的多种方式
时间: 2024-09-21 10:01:57 浏览: 59
sqlmap注入详解文档
MySQL注入中的基于报错注入(Error-based Injection)是一种利用SQL注入漏洞获取额外信息而非直接获取数据库数据的技术。它通过构造特定的输入,让服务器返回错误信息,从而推断出数据库结构、表名、列名等敏感信息。以下是几种常见的基于报错注入的方式:
1. **错误提示检测**:通过尝试执行可能导致错误的操作(如非法的表名或字段),观察服务器返回的错误消息,可以判断是否存在该表或列。
```sql
SELECT * FROM `非存在的表` WHERE `非存在的字段` = 'test';
```
2. **联合查询执行**:利用空值(`NULL`)作为分隔符,尝试拼接并执行多条SQL语句,从而查看它们是否成功执行。
```sql
SELECT column_name FROM table_name WHERE column_name LIKE '%value% OR 1=1 UNION ALL SELECT column2, database_name';
```
3. **使用特殊字符**:利用SQL的特殊字符(如#、%)作为通配符,测试某些操作是否允许。
```sql
SELECT column_name FROM table_name WHERE column_name LIKE '#';
```
4. **注释或取消注释查询**:插入分号(`;`)来改变语句的执行意图,如试图取消注释隐藏的敏感部分。
```sql
SELECT column_name;-- this is a hidden sensitive query
```
5. **时间函数**:利用时间函数(如DATE_FORMAT())来检查某个日期是否存在于数据库中。
```sql
SELECT column_name FROM table_name WHERE DATE_FORMAT(date_column, '%Y-%m-%d') = '2022-01-01';
```
阅读全文