1.SQL注入-数字型

SQL注入-数字型(post)

查询1的时候发现url后面的链接没有传入1的参数。验证为post请求方式,仅显示用户和邮箱
通过图中的显示的字段,我们可以猜测传入数据库里面的语句,例如:

select 字段1,字段2 from 表名 where id=1;
编辑一个payload的or 1=1
select 用户名,邮箱 from 表名 where id=1 or 1=1;

在这里插入图片描述

然后我们进入pikachu的数据路里面进行操作一下,or 1=1这个语句可以显示出所有的用户信息;
在这里插入图片描述

接下来我们使用bp工具抓包来实现一下字符型漏洞
还是pikachu上的1进行查询抓包,如图,然后进行发送到Repeater进行调试
在这里插入图片描述

在Repeater上进行输入payload语句or 1=1 然后点击发送,如图所示:
在这里插入图片描述

输入payload之后发现所有用户和邮箱都全部展示
在这里插入图片描述

这是pikachu后台配置文件通过浏览器页面访问输入1进行post请求传参的逻辑;

在这里插入图片描述

### 数字型 SQL 注入漏洞原理 数字型注入涉及的情况是在构建SQL查询字符串时,应用程序直接将未加引号的数值作为输入的一部分处理。这意味着如果攻击者能够控制这个数值,则可以操纵整个SQL命令结构而无需考虑引号闭合问题。 例如,在一个简单的用户认证场景下: ```sql SELECT * FROM users WHERE id = 1; ``` 假设`id`是从外部接收并未经适当验证或转义就用于构造上述查询中的值。此时,若允许恶意用户提供如下形式的ID `1 OR 1=1 --` ,则最终执行的SQL变为: ```sql SELECT * FROM users WHERE id = 1 OR 1=1 -- ; ``` 这会导致返回所有用户的记录而不是仅限于特定ID对应的单一账户信息[^1]。 ### 防御措施 为了有效防范此类攻击,建议采取以下几种策略: #### 使用预编译语句和参数化查询 通过使用预编译语句(PreparedStatement),数据库驱动程序会自动处理特殊字符的安全编码,从而避免潜在的风险。对于MyBatis框架而言,推荐尽可能多地利用`#{}`语法来代替`${}`,前者会在内部实现必要的安全转换[^4]。 ```java // 安全的做法 String query = "SELECT * FROM users WHERE id=?"; preparedStatement.setInt(1, userId); ResultSet rs = preparedStatement.executeQuery(); ``` #### 输入校验与清理 确保所有的用户提交数据都经过严格的格式检查,特别是当确实需要动态生成部分SQL片段的情况下。应限定合法范围内的输入,并拒绝任何不符合预期模式的内容。 #### 启用Web应用防火墙(WAF) 部署WAF可以在一定程度上拦截常见的SQL注入尝试,尽管这不是唯一的解决方案,但它能提供额外一层保护屏障。 #### 减少调试信息泄露 即使存在缺陷,也不应该让详细的错误报告暴露给客户端浏览器。隐藏具体的异常详情有助于阻止黑客进一步分析系统的脆弱之处[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

愿听风成曲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值