首页 > 技术文章 > [杭电新生赛]HGAME-week1-web-wp

jackball24 2022-02-17 18:10 原文

hgame第一周总结

(官方wp更加简洁明了、直入主题,个人比较菜,所以过程繁琐
写好了一直没发qwq(就是懒(bushi)

一、Tetris plus!

题目里说玩到3000分就给flag,还真有点点难度,手机玩到3000跳出来flag被隐藏了,于是又用电脑玩(这里经历了重重磨难,首先手机上用了3部手机,前两部刚开始就飞出页面外了,不知道是不是代码不兼容的问题,电脑主机上也是这样,最后还好虚拟机里游戏可以正常运行)

QQ图片20220126154524

第一天的时候找啊找,能做的都做了(瞎猫乱撞),最后锁定在几个js代码里,发现了几个可疑的地方:

QQ图片20220126161416 QQ图片20220126161330 QQ图片20220126161440

前面两个好像没什么作用,那么这个突然出现的长串jsfuck就值得关注了,先是去解了个码,好像有点接近了,可能是方式不太对,查了一下,jsfuck一般放在控制台运行(先按提示允许粘贴大量代码),然后运行。下面是解码和控制台运行结果:

QQ图片20220126161445

我们就得到了flag!

hgame{jsfuck_1s_S0_fUu1n}

二、蛛蛛...嘿嘿♥我的蛛蛛

看名字猜测是网页的爬虫,心中窃喜(啥都不会啊喂),打开一看,有点像hackergame某题,无限点点点

hackergame2021是这样的306a8ed341814f51bc7bc02dca844e36

(从1970-01-01点到2021当天)那题比较简单一点,payload后面的数字对应往后几天,当时先输了一个很大的数,跳到了2030那年某日,然后二分法调整一下就出来了,,再来看这道题:

QQ图片20220126162648

QQ图片20220126162644

这里注意初始的payload,后面每一个页面前半部分的payload都是一样的,但是我们没法从后面的payload里找到顺序,那么还剩连点器和脚本,假设它和hackergame那个一样,甚至更多,那么连点器会很难控制停止页和次数。

,上脚本,,,什么?不会爬虫?自学他个2天!,,还是要请教一下大佬们关于python的使用,减少走歪路。在引导之下,我使用了如下代码:(官方wp要简单很多)

# coding=utf-8
from cgitb import text        
import requests              
from bs4 import BeautifulSoup
import re                 
def xhtml( stra,num = 0 ):
    flag_num = 1
    strHtml = requests.get(stra)         # Get方式获取网页数据
    html = strHtml.text                  #结果转换为文本格式
    soup=BeautifulSoup(html,"html.parser")#转换成xml格式方便提取,这个用法不常见,需要百度其用法
    if html.count("你现在在") == 0:#或者("flag")==2  #或者长度不为特定1-x天页面字数固定某几个长度(有一点猜测的成分,但是多试几次就好了,实现方法很多。这里代码的意思是当前页面没有了你现在在这四个字。
        flag_num = 2
    global keykkK

    for k in soup.find_all('a'):          #a标签,超链接(打开源代码可以看到有几个点我试试就有几个a标签,而每次都只有一个a标签里面有内容,即?key=……,那么我们把它取下来和前面的url进行拼接
        num = num + 1                      # 用于验证
        if len(k['href']) != 0:
            keykkK =  k['href']            #直接获取a标签href属性值
                                           # 查找flag实现 待实现 之后将flag带到while中判断
    return flag_num ,keykkK,num
                                          # 返回 flag标记、url、当前关卡数
uflag = 1       # flag 初始化
key = 0         #验证 第几个页面
a = 0           #验证 第几关
straa = 'https://hgame-spider.vidar.club/ba357f7c0a'

while uflag == 1 :#直到出现目标停止循环

    if key == a:
        key += 1                            #相等就证明在运行正常
        resu = xhtml(straa)
                                            #获取返回值

        print("第"+ str(resu[2]) +"关")
        a = resu[2]#当前页面几个[点我试试]
        uflag = resu[0]#获取标志参数情况
        kk = resu[1]                                          #key值,进行url拼接
        straa = 'https://hgame-spider.vidar.club/ba357f7c0a'  #强制重置URL
        straa = straa + kk
        print(straa)









这里插一句,观察网页页面特征和源代码极为重要,就像这个a标签里的内容就是观察得知QQ图片20220126170216

运行脚本:

QQ图片20220126165530 QQ图片20220126165533

计数器最后跳回了第一关(只是一个标记),说明找到了,最后这个100关和第1关的网址就是存在flag的那一页

QQ图片20220126170735

然后就找找了,找到flag:

hgame{8a777c618441180e3c3ca82ad2a13023c8d3602197b69ab373f8724e2381f368}

三、Fujiwara Tofu Shop

这道题出的很好,下次不准再出了。。把我这菜菜逼疯了

QQ图片20220126171114

上来一个不熟悉的地址xxx.xxx.top,提示qiumingshan.net,很蠢的试了亿下,还各种抓包,啥事儿没有,几经周折,噢,原来是http报文头,,解题常用:Referer、Cookie、User-Agent、XFF

burp请求和响应报文头例如:

通用头部字段 : 1.Cache-Control 2、Connection 3、Transfer-Encoding 4、Via

请求头部字段: 1 Accept 2 Accept-Encoding 3 Accept-Language 4 Authorization 5 If-Match 与If-None-Match 6 If-Modified-Since与If-Unmodified-Since 7 If-Range 8 Referer 9 User-Agent

响应头部字段: 1 Accept-Ranges 2 Age 3 Etag 4 Location 5 Server 6 Vary 7 WWW-Authenticate

实体头部字段: 1 Allow 2 Content-Encoding 3 Content-Language 4 Content-Length 5 Content-MD5

Cookie相关的头部字段:1. Set-Cookie 2.Cookie

解:试了一下,qiumingshan.net是referer伪造(表示来源,这里个人理解为创造了一个秋名山的地点来源)

QQ图片20220126181043

然后是User-Agent(用户代理)

QQ图片20220126181312

oh,树莓曲奇,曲奇很容易想到cookie,那就cookie吧,试了一下啊,啥都没有

QQ图片20220126181426

卡的有点久,东找找西找找看到了个警告,cookie的flavor值,说明要flavor=Raspberry

QQ图片20220126181624

emmm,这里没办法了,抓个包试试

QQ图片20220126181739 QQ图片20220126181745

好家伙,再一查汽油的英文:gasoline,真好,,

QQ图片20220126181919

下面就是XFF填本地地址了127.0.0.1

QQ图片20220126182258

焯!大黑阔,大黑客……要干啥?应该是我填错了头,不是xff,查了一下还有X-Real-IP,true-client-ip之类的,这里是X-Real-IP(xff的第一个地址)

一整个大出乎意料给到,奇怪的姿势增加了,X-Real-IP,而且如果XFF存在的话会把它覆盖掉,所以

:X-Real-IP: 127.0.0.1

QQ图片20220126182653

nice!虽然中间走了很多弯路,浪费不少时间,但是还是有收获哒……

hgame{I_b0ught_4_S3xy_sw1mSu1t}

四、easy_auth

首先题目描述里面,题目auth提示登录(验证用户是否拥有访问系统的权利)(即鉴权问题),描述里“没有调试完”提示存在弱密码等问题,f12查看,只有一处出现了反常,本地存储里出现了token(前后端交互使用)。正常登录获得自己的token

QQ图片20220208194836

,前往jwt解析工具

QQ图片20220208194840

翻译了一下,签名无效(验证失败),把secret删了,成功

QQ图片20220208194843

看上面的信息,手动改username: "admin"(题目描述),猜测id: 1(1,2,3……)(原来username为另外字母,id好像是6049)。然后重新生成了一个encoded

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJRCI6MSwiVXNlck5hbWUiOiJhZG1pbiIsIlBob25lIjoiIiwiRW1haWwiOiIiLCJleHAiOjE2NDQzNTUyMzQsImlzcyI6Ik1KY2xvdWRzIn0.-j4xVQDz-41hFneJoAychIMhZn0umBJr6Sfr93XgaYs

QQ图片20220208194847

重新放到token里

QQ图片20220208194855

得到

hgame{S0_y0u_K1n0w_hOw_JwT_Works1l1lL}

推荐阅读