CTF实验吧-简单的sql注入【SQL注入关键词绕过】

本文介绍了一种特殊的SQL注入技巧,通过使用重复关键字和特殊字符绕过过滤器来获取数据库中的flag信息。文中详细记录了作者从尝试基本的SQL语句到成功利用技巧的过程,并分享了两种有效的SQL注入方法。

首先尝试性的试了一个1,

然后试了一下0'='0,将所有值输出看看

这也证明了‘’没有被题目给过滤掉

接下来开始尝试and语句准备试出其表名,按实验吧的习惯,一般都是存在flag表的flag字段中,不过还是尝试一下

然而,报错,and,select,from等词汇均被忽略了

试了一些方法,均不可解决,下面方法参考了实验吧作者双眼皮的双子座和pcat的思路,侵删

第一种:

 

1' unionunion  selectselect  flag fromfrom  flag wherewhere  '1'='1

重复加空格重复

 

第二种:

/*!关键字*/ 即可越过忽略保留关键字

以上两种方法均可测试存在flag表,flag字段,而答案也确实在其中,,,不愧是实验吧,老套路,哈哈哈

不过还是很好奇,这种忽略的手法是什么,为什么这样就能跳过忽略保留关键字,欢迎大佬指教!
 


 

SQL注入是一种常见的Web安全漏洞,攻击者可以通过它执行恶意的SQL代码,从而绕过应用程序的安全措施,访问或操纵数据库中的数据。在CTFHub的SQL注入技能树中,涵盖了多种SQL注入技术,包括字符型注入、布尔盲注、联合查询注入等,每种技术都有其特定的利用方式和防御方法。 ### SQL注入原理 SQL注入通常发生在应用程序未正确过滤用户输入的情况下,攻击者可以将恶意的SQL代码插入到查询中,从而改变查询的逻辑。例如,在一个简单的登录查询中,如果用户输入的用户名和密码未经过滤,攻击者可以输入特定的字符串来绕过身份验证。一个典型的例子是使用`' OR '1'='1`这样的输入,使得查询始终返回真值,从而绕过验证机制[^1]。 ### SQL注入利用方式 1. **字符型注入**:这种类型的注入通常发生在应用程序将用户输入直接拼接到SQL查询中,而没有进行适当的过滤或转义。攻击者可以输入包含特殊字符的字符串,如单引号,来改变查询的结构。例如,输入`1' AND 1=2 UNION SELECT 1,group_concat(table_name) FROM information_schema.tables WHERE table_schema=database() -- `可以用来获取数据库中的表名[^4]。 2. **布尔盲注**:在这种注入中,攻击者通过发送特定的SQL查询来判断数据库的某些条件是否为真,从而推断数据库的结构或内容。例如,使用`1 AND (SELECT COUNT(table_name) FROM information_schema.tables WHERE table_schema='sqli')=x`这样的查询,攻击者可以通过观察应用程序的响应来判断数据库中表的数量[^5]。 3. **联合查询注入**:攻击者可以利用`UNION`操作符来合并多个查询的结果,从而获取额外的信息。例如,使用`1 UNION SELECT 1,group_concat(table_name) FROM information_schema.tables WHERE table_schema=database()`可以获取当前数据库中的所有表名[^4]。 ### SQL注入防御方法 为了防止SQL注入攻击,应用程序开发人员可以采取以下几种措施: - **使用参数化查询**:参数化查询(也称为预编译语句)可以确保用户输入被视为数据而不是可执行代码,从而防止攻击者修改查询的结构。 - **输入验证**:对用户输入进行严格的验证,拒绝包含特殊字符的输入,或者对输入进行适当的转义处理。 - **最小权限原则**:确保数据库账户仅具有完成其任务所需的最小权限,这样即使发生注入攻击,攻击者的破坏也会受到限制。 - **错误信息处理**:避免向用户显示详细的错误信息,这些信息可能包含敏感的数据库结构信息,攻击者可以利用这些信息进行进一步的攻击。 ### 使用sqlmap进行SQL注入 sqlmap是一个自动化的SQL注入工具,可以帮助安全研究人员发现和利用SQL注入漏洞。以下是一些常用的sqlmap命令示例: ```bash # 获取数据库列表 sqlmap -u "http://challenge-e9227c10fafe8768.sandbox.ctfhub.com:10800/?id=1" --dbs # 获取指定数据库中的表名 sqlmap -u "http://challenge-e9227c10fafe8768.sandbox.ctfhub.com:10800/?id=1" -D sqli --tables # 获取指定表中的列名 sqlmap -u "http://challenge-e9227c10fafe8768.sandbox.ctfhub.com:10800/?id=1" -D sqli -T flag --columns # 获取指定列的数据 sqlmap -u "http://challenge-e9227c10fafe8768.sandbox.ctfhub.com:10800/?id=1" -D sqli -T flag -C flag --dump ``` 这些命令展示了如何使用sqlmap来自动化地发现和利用SQL注入漏洞,从而获取数据库的结构和数据。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值