第三周1

题目: [SWPUCTF 2022 ]numgame

  1. 打开环境发现什么也没有,就一个算数页面,基本没有有用信息
    我们试着打开源代码 CTRL+u和F12 都不能用

  2. 这个时候用火狐浏览器插件试一下 看到源码有1.js文件
    内容如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
        var input = $('input'),
    input_val = parseInt(input.val()),
    btn_add = $('.add'),
    btn_remove = $('.remove');

    input.keyup(function() {
    input_val = parseInt(input.val())
    });

    btn_add.click(function(e) {
    input_val++;
    input.val(input_val);
    console.log(input_val);
    if(input_val==18){
    input_val=-20;
    input.val(-20);

    }
    });

    btn_remove.click(function(e) {
    input_val--;
    input.val(input_val);
    });
    // NSSCTF{TnNTY1RmLnBocA==}
  3. 简单审计一下 最后一个NSSCTF的内容 应该是base64加密
    我们解密看一下 内容:NsScTf.php

  4. 我们打开这个文件 弹出来了php代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     <?php
    error_reporting(0);
    //hint: 与get相似的另一种请求协议是什么呢
    include("flag.php");
    class nss{
    static function ctf(){
    include("./hint2.php");
    }
    }
    if(isset($_GET['p'])){
    if (preg_match("/n|c/m",$_GET['p'], $matches))
    die("no");
    call_user_func($_GET['p']);
    }else{
    highlight_file(__FILE__);
    }
  5. 审计一下 发现过滤了n,c,m三个字母
    我们用大写绕过
    payload:NSS::CTF

  6. 我们发现给了一句话:有没有一种可能,类是nss2
    我们重新构造payload:NSS2::ctf
    在源代码看到了flag

  7. 总结:这个题目最主要就是考察这个函数调用的方式:
    函数名::方法