GDOUCTF 2023 web部分题解
多多包涵
这里是一个还没入门web的新手的比赛记录(第一次参加比赛)
hate eat snake
进入题目按F12发现不能调出源代码,等死亡后弹出窗口以后(或者直接鼠标右键打开源代码)可以调出,刷新一下就可以看见源码
找到js文件
将speed++删掉,这样速度不会增加,等待60秒就可以了。(作为一个第一次打比赛的菜鸡就写出来这一道题,呜呜)
受不了一点
<?php
error_reporting(0);
header("Content-type:text/html;charset=utf-8");
if(isset($_POST['gdou'])&&isset($_POST['ctf'])){
$b=$_POST['ctf'];
$a=$_POST['gdou'];
if($_POST['gdou']!=$_POST['ctf'] && md5($a)===md5($b)){
if(isset($_COOKIE['cookie'])){
if ($_COOKIE['cookie']=='j0k3r'){
if(isset($_GET['aaa']) && isset($_GET['bbb'])){
$aaa=$_GET['aaa'];
$bbb=$_GET['bbb'];
if($aaa==114514 && $bbb==114514 && $aaa!=$bbb){
$give = 'cancanwordflag';
$get ='hacker!';
if(!isset($_GET['flag']) && !isset($_POST['flag'])){
die($give);
}
if($_POST['flag'] === 'flag' || $_GET['flag'] === 'flag'){
die($get);
}
foreach ($_POST as $key => $value) {
$$key = $value;
}
foreach ($_GET as $key => $value) {
$$key = $$value;
}
echo $flag;
}else{
echo "洗洗睡吧";
}
}else{
echo "行不行啊细狗";
}
}
}
else {
echo '菜菜';
}
}else{
echo "就这?";
}
}else{
echo "别来沾边";
}
?>
点开题目发现有一串代码。按要求一步一步来看代码,发现先POST一个ctf和gdou变量,并且要过md5强碰撞,用数组的方法绕过。之后按要求把cookie加成j0k3r。最后因为POST和GET中传递的flag值不能为空,在分别POST和GET一个flag就好了。但是看了一下讨论区不知道什么异常原因出不来回显,这题就一笔带过吧。
EZ WEB
进入题目发现他说flag在附近,查看源码。
发现提示src
进入这个目录里
import flask
app = flask.Flask(__name__)
@app.route('/', methods=['GET'])
def index():
return flask.send_file('index.html')
@app.route('/src', methods=['GET'])
def source():
return flask.send_file('app.py')
@app.route('/super-secret-route-nobody-will-guess', methods=['PUT'])
def flag():
return open('flag').read()
发现源码中要求最后一步,用PUT方式打开目录super-secret-route-nobody-will-guess
得出flag