CTF入门者求助:POST请求SQL注入遇HTML编辑器自动补全引号问题
解决RingZer0Team第2号挑战的POST注入问题
嘿,我当年刷RingZer0Team的挑战时也踩过这个HTML自动补全引号的坑!别着急,咱们换个思路绕开编辑器的限制就行,给你几个实用的方案:
方案1:直接用浏览器开发者工具构造请求
HTML编辑器的自动补全只针对页面上的表单输入,咱们可以跳过表单直接发送自定义的POST请求:
- 打开浏览器的开发者工具(按F12),切换到Network面板
- 先正常选一个用户提交表单,找到对应的POST请求(一般是表单的action地址)
- 右键这个请求,选择Copy > Copy as cURL,把命令复制到剪贴板
- 打开终端,把复制的curl命令里的参数值改成
"charles" OR "cedrik"(注意这里的引号要保留),然后执行命令,就能拿到两个用户的数据了
示例curl命令大概是这样(具体地址和参数名根据实际请求调整):
curl 'https://ringzer0team.com/challenges/2' \ -H 'Content-Type: application/x-www-form-urlencoded' \ --data-raw 'user="charles" OR "cedrik"'
方案2:用URL编码绕过引号自动补全
如果一定要在页面的表单里操作,可以把双引号换成URL编码后的%22,HTML编辑器不会识别这个编码,也就不会自动补全:
- 把你要注入的内容改成:
%22charles%22 OR %22cedrik%22 - 直接把这段内容粘贴到表单的选择框对应的输入区域(或者用开发者工具修改option的value值),然后提交表单
方案3:换用单引号或无引号的注入写法
有些后端对单引号的处理和双引号不一样,你也可以试试用单引号构造注入:
- 把值改成:
'charles' OR 'cedrik' - 或者更简洁的写法:
charles' OR 'cedrik(省略前后的引号,利用后端的SQL拼接逻辑)
另外,如果你只是想获取所有用户的数据,也可以用更通用的注入比如1=1,不过针对你要的两个用户,上面的方法足够解决问题啦。
内容的提问来源于stack exchange,提问作者HoThDo
相关产品推荐
相关产品推荐

