报错盲注

认识两个函数 updatexml 和 extractvalue .
它们用法大致是相同的. 具体请自行搜索.

  1. 打开抓包工具, 打开第11关
  2. SQL渗透与攻防_7_盲注_搜索

  3. 鼠标右击"send to repeater"
  4. 点击上方菜单栏的"Repeater"
  1. 判断 字符型 还是 数字型----->看下图
  2. 判断 是单引号闭合 还是 双引号闭合---->看下图
    首先随便提交一个 账号和密码

    然后
    ![image.png](C:\Users\2892706668\Desktop\halo-backup-markdown-2023-01-12-16-10-12-2116279541 (2)/upload/2022/12/image-342d724c100c4b2b8103c1ff869ba09e.png)
    之后

    接着
    ![image.png](C:\Users\2892706668\Desktop\halo-backup-markdown-2023-01-12-16-10-12-2116279541 (2)/upload/2022/12/image-a1c2e793557744f0a0bc26b88f5ff4e5.png)

SQL渗透与攻防_7_盲注_sql_02

可以看到结果出来了, 但是显示不完全.
所以:

SQL渗透与攻防_7_盲注_sql_03

以此类推:

拿到库名:

SQL渗透与攻防_7_盲注_搜索_04


再次尝试:

SQL渗透与攻防_7_盲注_菜单栏_05

SQL渗透与攻防_7_盲注_菜单栏_06

经过一遍遍的尝试就可以了, 然后以此类推, 类似于 "手工注入"
具体可参考 :
​​​https://qiudaogongshu.top/archives/sql渗透与攻防3手工注入​

延时盲注

就是通过 sleep , if , ascii(), length, left, mid, right, database() 等函数来进行猜解.
具体就是通过 sleep 来判断猜的是否是对的.

这种方法很耗时间,并且网路, 浏览器等都对其有较大影响, 所以不是很推荐

布尔盲注

通过判断返回的是否是对的, 如果是对的, 则返回正常的请求页面, 如果不对,则返回报错的页面. 其实就是一步步的猜解.

例如: ​​sqli-labs 的第五关​

输入:

SQL渗透与攻防_7_盲注_sql_07


得到:

SQL渗透与攻防_7_盲注_搜索_08


这是一个正常的页面, 如果id=skdfa, 这样乱七八糟的东西, 那肯定不是这个页面.

加解密注入

可上网搜索了解 Base64 这种8bit传输编码方式.
说白了, 这里所讲的加密, 就好像让一个不懂英语的人, 去看用英语写的原本认识的东西. 唉,语言不同啊. base64 在图片,影视片中比较多.
例如:

  1. 使用burpsuit , 打开sqli-labs的第21关 , 提交一个账号和密码, 都是admin

SQL渗透与攻防_7_盲注_菜单栏_09


复制 上方加密后的 cookie. 在 最上方的菜单栏中选择 Decode. 进行解密.

SQL渗透与攻防_7_盲注_菜单栏_10


然后, 将 %3D 变为 = 就可以还原成 admin了

SQL渗透与攻防_7_盲注_sql_11

类似的, 如果要在Cookie中注入一些东西, 也需要在这里进行加密, 加密成对应的字符编码, 然后正常 send 就可以了.

堆叠注入

就是一条条的sql语句堆叠到一起,一次性运行. 起码mysql是支持堆叠的.

其实就是通过 分号 ; 来进行的. 在拿到库名,表名, 字段名后, 就可以进行诸多数据的注入.
很多数据库是不支持 ; (分号结尾的写法) 所以, 堆叠注入局限性还是蛮大的.
注入: union 支持的是select , 而且前后查询的字段的数量要一致, 但是 堆叠去没有这个限制.