Week1
Hitchhiking_in_the_Galaxy
点击链接,但是过一会显示的还是原来界面,源代码有HitchhikerGuide.php,但是没有跳转到这个界面,而且手动输入也无效
抓个包
显示状态码302,然后还有405方法错误,那就改成post
要求改User-Agent
再改Referer
加上X-Forwarded-For
flag:hgame{s3Cret_0f_HitCHhiking_in_the_GAl@xy_i5_dOnT_p@nic!}
watermelon
参考了战队里面的Wp,这里记录一下
本题纯考JS,需要在众多代码中找到有关分数增长的代码,进行修改
打了断点后就开始游戏,在需要合成加分的时候游戏就会暂停,然后此时在watch那块加入a.default.score += 1000(数字大点都行,反正超过2000就有flag)
之后每合成一次都会暂停,直接点继续就会发现分数飞涨,之后就考虑如何快速把自己憋死吧~,毕竟不结束不显示flag
如果打开环境游戏显示不全,那就需要开发者模式中的这个,自己调整长宽成手机屏幕那样,刷新就好了
flag:hgame{do_you_know_cocos_game?}
Week2
LazyDogR4U
SQL注入随便试了一下,发现没用,那就使用目录扫描工具扫一下
访问后得到了www.zip,是网站源码
config.ini中的admin密码解不出来,放弃
在flag.php中有获得flag方法,需要$_SESSION[\'username\'] === \'admin\'
flag.php连接了lazy.php
这段里面有个过滤,是用的str_replace,那么双写就能绕过
foreach(array(\'_GET\',\'_POST\') as $_request){
foreach ($$_request as $_k => $_v){
是$$_request造成了变量覆盖,相当于成了$_GET或者$_POST,语句变成了$_GET/$_POST as $_k => $_v
最终的payolad:flag.php?_SESSESSIONSION[username]=admin
flag:hgame{r4U-|$4LAzy_DOG}
Post to zuckonit(未解出)
是留言板类型,考虑XSS
script被替换成了div,script的大小写也不行
iframe会被过滤,哪怕是最后的去掉了>还是一样的效果,而且http/https被过滤了,不过双写就能绕过
之后就是尝试各种标签和函数,在他人帮助下,发现img中如果用onerror会出现以on为中心镜像翻转
之后我就懵逼了,似乎需要写个脚本,然后WP也没有看懂后续如何操作
抓包得到的cookie有两段
token="WELCOME TO HGAME 2021."; session=db7e11ba-e95c-4b7b-b7a8-551bae5a08cf
MD5截断的要求是 输入的验证明文(Code)在md5加密之后截取前六位等于1929b3
200OK!!
这每点一下都是不一样的报错。。。抓个包试试看
其余部分没变化,但是status在变化,自行修改status的值也会有相应的反应,应该是SQL注入了
如果输入的值有错误就不会有显示
没有反应,也许是空格被ban了
确定是空格被ban了
order和by还没有被屏蔽,这里也测出来只有一个字段
没反应,试试看大写,得到的是NETWORK ERROR的报错,无奈之下又试试看双写,还是一样的,苦恼之时发现写出来的人用的是-1\',这才发现前面需要一个没有被编写的错误出来
1对应NETWORK ERROR,2对应的是HTTP 400 Bad Request
如果用的1\',本来就一个字段显示,那么事先写好的1就会占掉这个显示位置,如果改成2\'那就显示HTTP 400 Bad Request
这里就需要一个没有编写指定错误的数字,比如-1,100
数据库是week2sqli
又没有显示了,那就把几个关键词都大写看看
表名f1111111144444444444g
字段名ffffff14gggggg
flag:hgame{Con9raTu1ati0n5+yoU_FXXK~Up-tH3,5Q1!!=)}
Liki的生日礼物
先要注册,登录
很明显差两张,考条件竞争,但是我菜,python脚本不会写,那就用burpsuite解决好了
这里一定要点Clear §,不然报文就有问题
之后就点击start attack
等进度条满了就直接退出burpsuite,关掉代理刷新界面
已经刷到58张了,那就愉快的买了
flag:hgame{L0ck_1s_TH3_S0lllut!on!!!}
Week3
Forgetful
随便写点什么注册登录
发现在留言板的标题(描述)处写啥都行,而且几乎没有过滤的东西,甚至还有反应,那这里就能注入(SSTI),而且在勾选未完成之后还能不断修改
{{().class.bases[0].subclasses()}}
学习了一下大佬的Wp,subclass是81也行
81->_NamespaceLoader,117->_wrap_close
{{\'\'.class.mro[1].subclasses()[117].init.globals["sys"].modules["os"].popen(\'cat /flag|base64\').read()}}
得到的是base64编码的flag
flag:hgame{h0w_4bou7+L3arn!ng~PythOn^Now?}