SQL注入
SQL注入
=SQLi
=SQL Injection
- 攻
- 形象的图
- 手段:插入SQL代码
- 目的:获取到敏感信息
- 根据范围,可分为3个层级
Inband
Out-of-band
Inferential or Blind
- 没有数据输出
- 攻击者(测试者)可以发送特定查询代码,查看服务器状态(是否符合预期)
- 常见SQL注入可利用的相关漏洞或弱点
Operator union
:用SELECT
期间,把2个操作合并成一个
Boolean
:用布尔变量测试某条件是否为真
Error based
:强制服务器产生错误
Out-of-band
:攻击产生数据通过其他渠道发送出去
Time delay
:从数据库中使用命令(比如sleep
)去延迟查询条件
- 当攻击者没有特定类型的响应(结果、输出、错误等)时
- 检测SQL弱点
- 举例
' / ' = ' / ' OR 1 = 1 / 'OR a = a / ' OR ' / ' OR '' = '' / 'OR' = '' / 'OR' = " / 'OR' = ' / ' OR '' = ' / ' OR '=' ' / ' OR '=' '
- SQL注入攻击
- 举例
http:/mywebsite/toto/connexion.php?username=admin'#&password=test
- 其中的
#
允许给一行加注释
- 此命令实现了:连接到一个管理员账户,而无需(知道)密码
' UNION SELECT username,password FROM users--
- 相关工具