GET-ERROR based-Single quotes – String (GET型基于错误的单引号字符型注入) Less-1

这篇博客介绍了如何利用GET型基于错误的单引号字符型注入进行SQL注入攻击。首先,通过测试确定id参数为字符串类型,然后通过ORDER BY和UNION查询推测字段数。利用注释和编码绕过限制,获取数据库名、表名、列名,并最终提取出敏感数据。整个过程展示了SQL注入攻击的步骤和技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于数据库的一些基础,会在前一篇提前准备篇中提到

首先打开网站首页,会发现如下界面:显示请输入id作为带数值的参数,那么下一步,我们就可以将参数传入试着提交然后看会有什么返回值。

       使用get方式提交id参数,这样我们就可以得到返回值。可以看得到首页给出了用户名和密码。

然后再测id类型是否为字符串,用单引号测试,出现‘’’说明id为字符串类型

那么下面我们试着添加一个 数字’ 试试,这时他就会报错,然后就会爆出数据库名称和部分SQL语句(他会提示您的SQL语法有错误,请查看与您的MySQL服务器版本相对应的手册,了解在第一行“3”限制0,1附近使用的正确语法)这时我们就可以进行下一步操作

### 关于 Less-6 双查询、双引号和字符串处理的解决方案 在 SQL 注入攻击场景下,`Less-6` 是一个常见的练习案例,通常涉及通过绕过过滤器来执行恶意 SQL 查询。以下是关于如何解决 `Less-6` 中与双查询 (double query) 和双引号 (double quotes) 处理的相关技术细节。 #### 绕过单引号过滤机制 当应用程序对输入中的单引号 (`'`) 进行转义或移除时,可以尝试使用双引号 (`"`) 来构建合法的 SQL 语句[^1]。例如,在某些数据库中(如 MySQL),如果允许使用双引号包裹字符串,则可以通过以下方式构造查询: ```sql SELECT * FROM users WHERE username="admin"; ``` 此方法适用于那些仅针对单引号进行严格过滤而忽略双引号的情况。 #### 利用联合查询 (UNION SELECT) 对于支持联合查询的操作环境来说,可以通过附加额外的有效负载到原始SQL请求上来获取更多数据表字段内容。下面展示了一个基本形式的例子: ```sql username=admin" UNION SELECT null, concat_ws(';',version(),database()) -- password=any_password& ``` 这里利用了 `concat_ws()` 函数将多个列值组合成单一结果输出,并且通过注释符(`--`)忽略了后续部分原生SQL命令[^2]。 #### 字符串拼接技巧 有时目标系统可能不允许直接传入完整的敏感关键字或者路径名等信息作为参数传递给后端解析引擎去匹配记录集;此时我们可以考虑采用字符拆分重组的方式实现目的。比如要表达文件位置 `/etc/passwd`,则可写做如下所示的形式规避潜在黑名单检测逻辑: ```sql username=admin" AND 1=(select count(*) from information_schema.columns where table_name='users') -- password=/e||t|c/|p|a|s|s|w|d& ``` 以上实例展示了如何巧妙运用位运算符(|),以及字符串连接操作(||),从而达到最终效果的同时也降低了被发现的风险程度。 ### 注意事项 尽管上述方法能够帮助理解并实践基于Web应用的安全测试过程,但在实际工作中绝对不应该未经授权擅自实施此类行为。始终遵循职业道德准则及法律法规框架下的活动范围才是正道所在!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值