web安全2-SQL注入 · clubsk

web安全2-SQL注入

一、参考文献

https://ctf-wiki.org/web/introduction/

二、定义

往输入中添加或插入sql代码

三、例子

  • 假设登录代码是这样拼的: SELECT * FROM users WHERE username= '输入的用户名' AND password= '输入的密码'
  • 如果攻击者在用户名框输入admin - -,语句就变成: SELECT * FROM users WHERE username= 'admin'--' AND password='...'
  • –是sql注释,后面的密码校验直接被注释掉,攻击者就能以admin身份登录

四、分类

1.联合查询注入

原理

利用UNION SELECT把攻击者构造的查询结果拼接到原查询结果中,直接回显到页面

2.报错注入

原理

故意构造让数据库报错的语句,把要查的数据夹在错误信息里返回

3.布尔盲注

原理

页面不返回数据也不报错,但根据SQL条件真假返回不同的页面状态(页面内容,响应长度,状态码差异),攻击者通过构造真假条件逐字符猜解数据

4.时间盲注

原理

页面连真假差异都没有,完全无回显。攻击者用SLEEP()等函数,让条件为真时延迟响应,通过延迟响应时间判断

5.堆叠注入

原理

利用;分隔,一次执行多条SQL语句

6.带外注入

原理

当页面无法回显,也不能延迟时,通过DNS/HTTP请求把数据外带出来