SQL 字符型注入

本文探讨了CTFHub中遇到的SQL字符型注入问题。通过手动闭合SQL语句并利用特殊字符转义,进行order by测试确定字段数量,接着使用union select进行联合查询,最终成功暴库并获取flag。重点关注了字符型注入与整数型注入的不同处理方式。
摘要由CSDN通过智能技术生成

CTFHub SQL 字符型注入

可以看到我们输入的数据会被单引号所括上

尝试正常的 1 and 1=2 发现没有报错 还是有回显

字符型的 1 and 1=2 就相当于只是字符串 并没有发挥其表达式的作用所以这就没有产生错误回显

(不太明白为什么 sql 还是会查询到 id = 1 的数据)

这时候我们添加 ' 手动闭合前一个 sql 语句然后再拼接上我们的 sql 语句进行测试

整个的 sql 语句大概是

$ sql = "select Data from table_name where id = ' $_GET[ ' id ' ] ' ";

如果我们手动闭合 '

1' and 1=2 就会出现

$ sql = "select Data from table_name where id = ' 1' and 1=2 ' ";

这时候就多出了一个 ' 

所以我们利用 sql 语句的注释语句 将后面的单引号给注释掉

可以使用 -- (-- 后面有个空格)、--+(这个+要在 url 地方输入这样才会等价于 -- )、

# (# 在url中不会转换成注释符号 然后用 %23来表达 # )

特殊字符在 UR

手工 SQL 注入漏洞通常是通过在应用程序的输入框中注入恶意 SQL 代码来实现的。当用户在应用程序的输入框中输入字符串时,如果应用程序没有对用户输入进行充分的验证和过滤,攻击者就可以在输入框中注入恶意的 SQL 代码,从而导致应用程序执行恶意的 SQL 查询。 在字符串类SQL 注入攻击中,攻击者通常会在输入框中输入一些特殊字符,例如单引号、双引号、反斜线等等,以试图破坏 SQL 查询语句的结构。攻击者还可能尝试使用 UNION、SELECT、FROM 等关键字来构造恶意查询语句,或者使用注释符号(例如"--")来注释掉原始查询语句中的一部分。最终,攻击者的目标是获取应用程序中存储的敏感数据,例如用户密码、信用卡信息等等。 要防止字符串类SQL 注入攻击,应用程序可以采取以下措施: 1. 对用户输入进行充分的验证和过滤,确保用户输入的数据符合预期的格式和结构。 2. 使用预编译语句或参数化查询,以保证 SQL 查询语句的结构不会被破坏。 3. 不要将用户输入作为 SQL 查询语句的一部分拼接到一起,而是使用参数化查询或存储过程来执行 SQL 查询。 4. 在应用程序中启用严格的访问控制和权限管理,以确保只有经过授权的用户才能访问敏感数据。 5. 定期对应用程序进行安全审计和漏洞扫描,及时发现和修复潜在的安全漏洞。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值