报错盲注
认识两个函数 updatexml 和 extractvalue .
它们用法大致是相同的. 具体请自行搜索.
- 打开抓包工具, 打开第11关
- 鼠标右击"send to repeater"
- 点击上方菜单栏的"Repeater"
- 判断 字符型 还是 数字型----->看下图
- 判断 是单引号闭合 还是 双引号闭合---->看下图
首先随便提交一个 账号和密码
然后
![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)
可以看到结果出来了, 但是显示不完全.所以:
以此类推:
拿到库名:
再次尝试:
经过一遍遍的尝试就可以了, 然后以此类推, 类似于 "手工注入"
具体可参考 :
https://qiudaogongshu.top/archives/sql渗透与攻防3手工注入
延时盲注
就是通过 sleep , if , ascii(), length, left, mid, right, database() 等函数来进行猜解.
具体就是通过 sleep 来判断猜的是否是对的.
这种方法很耗时间,并且网路, 浏览器等都对其有较大影响, 所以不是很推荐
布尔盲注
通过判断返回的是否是对的, 如果是对的, 则返回正常的请求页面, 如果不对,则返回报错的页面. 其实就是一步步的猜解.
例如: sqli-labs 的第五关
输入:
得到:
这是一个正常的页面, 如果id=skdfa, 这样乱七八糟的东西, 那肯定不是这个页面.
加解密注入
可上网搜索了解 Base64 这种8bit传输编码方式.
说白了, 这里所讲的加密, 就好像让一个不懂英语的人, 去看用英语写的原本认识的东西. 唉,语言不同啊. base64 在图片,影视片中比较多.
例如:
- 使用burpsuit , 打开sqli-labs的第21关 , 提交一个账号和密码, 都是admin
复制 上方加密后的 cookie. 在 最上方的菜单栏中选择 Decode. 进行解密.
然后, 将 %3D 变为 = 就可以还原成 admin了
类似的, 如果要在Cookie中注入一些东西, 也需要在这里进行加密, 加密成对应的字符编码, 然后正常 send 就可以了.
堆叠注入
就是一条条的sql语句堆叠到一起,一次性运行. 起码mysql是支持堆叠的.
其实就是通过 分号 ; 来进行的. 在拿到库名,表名, 字段名后, 就可以进行诸多数据的注入.
很多数据库是不支持 ; (分号结尾的写法) 所以, 堆叠注入局限性还是蛮大的.
注入: union 支持的是select , 而且前后查询的字段的数量要一致, 但是 堆叠去没有这个限制.