[杭电新生赛]HGAME-week1-web-wp
hgame第一周总结
(官方wp更加简洁明了、直入主题,个人比较菜,所以过程繁琐
写好了一直没发qwq(就是懒(bushi)
一、Tetris plus!
题目里说玩到3000分就给flag,还真有点点难度,手机玩到3000跳出来flag被隐藏了,于是又用电脑玩(这里经历了重重磨难,首先手机上用了3部手机,前两部刚开始就飞出页面外了,不知道是不是代码不兼容的问题,电脑主机上也是这样,最后还好虚拟机里游戏可以正常运行)
第一天的时候找啊找,能做的都做了(瞎猫乱撞),最后锁定在几个js代码里,发现了几个可疑的地方:
前面两个好像没什么作用,那么这个突然出现的长串jsfuck就值得关注了,先是去解了个码,好像有点接近了,可能是方式不太对,查了一下,jsfuck一般放在控制台运行(先按提示允许粘贴大量代码),然后运行。下面是解码和控制台运行结果:
我们就得到了flag!
hgame{jsfuck_1s_S0_fUu1n}
二、蛛蛛...嘿嘿♥我的蛛蛛
看名字猜测是网页的爬虫,心中窃喜(啥都不会啊喂),打开一看,有点像hackergame某题,无限点点点
hackergame2021是这样的
(从1970-01-01点到2021当天)那题比较简单一点,payload后面的数字对应往后几天,当时先输了一个很大的数,跳到了2030那年某日,然后二分法调整一下就出来了,,再来看这道题:
这里注意初始的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标签里的内容就是观察得知
运行脚本:
计数器最后跳回了第一关(只是一个标记),说明找到了,最后这个100关和第1关的网址就是存在flag的那一页
然后就找找了,找到flag:
hgame{8a777c618441180e3c3ca82ad2a13023c8d3602197b69ab373f8724e2381f368}
三、Fujiwara Tofu Shop
这道题出的很好,下次不准再出了。。把我这菜菜逼疯了
上来一个不熟悉的地址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伪造(表示来源,这里个人理解为创造了一个秋名山的地点来源)
然后是User-Agent(用户代理)
oh,树莓曲奇,曲奇很容易想到cookie,那就cookie吧,试了一下啊,啥都没有
卡的有点久,东找找西找找看到了个警告,cookie的flavor值,说明要flavor=Raspberry
emmm,这里没办法了,抓个包试试
好家伙,再一查汽油的英文:gasoline,真好,,
下面就是XFF填本地地址了127.0.0.1
焯!大黑阔,大黑客……要干啥?应该是我填错了头,不是xff,查了一下还有X-Real-IP,true-client-ip之类的,这里是X-Real-IP(xff的第一个地址)
一整个大出乎意料给到,奇怪的姿势增加了,X-Real-IP,而且如果XFF存在的话会把它覆盖掉,所以
:X-Real-IP: 127.0.0.1
nice!虽然中间走了很多弯路,浪费不少时间,但是还是有收获哒……
hgame{I_b0ught_4_S3xy_sw1mSu1t}
四、easy_auth
首先题目描述里面,题目auth提示登录(验证用户是否拥有访问系统的权利)(即鉴权问题),描述里“没有调试完”提示存在弱密码等问题,f12查看,只有一处出现了反常,本地存储里出现了token(前后端交互使用)。正常登录获得自己的token
,前往jwt解析工具
翻译了一下,签名无效(验证失败),把secret删了,成功
看上面的信息,手动改username: "admin"(题目描述),猜测id: 1(1,2,3……)(原来username为另外字母,id好像是6049)。然后重新生成了一个encoded
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJRCI6MSwiVXNlck5hbWUiOiJhZG1pbiIsIlBob25lIjoiIiwiRW1haWwiOiIiLCJleHAiOjE2NDQzNTUyMzQsImlzcyI6Ik1KY2xvdWRzIn0.-j4xVQDz-41hFneJoAychIMhZn0umBJr6Sfr93XgaYs
重新放到token里
得到
hgame{S0_y0u_K1n0w_hOw_JwT_Works1l1lL}