正在抛弃 BurpSuite 转投 Yakit 的怀抱, 之后的文章可能大量出现 Yakit 语法

网址: https://www.nssctf.cn/contest/316/

真·签到

打开可以发现是一个登录窗口, 我们 F12 看他提醒我们查看 robots.txt

hint:E794A8E688B7E5908DE7869FE68289E590972CE696B0E7949FE8B59BE58FAFE98187E8A781E8BF87E593A67E0AE8AEB0E5BE97E794A8E688B7E5908DE585A8E794A8E5B08FE58699E593A6EFBD9EEFBD9E
username:13 44 21 15 42
password:LF5GY3KZKRVTCT2EM54FUV2FO5GVIVLZJZ5GW6C2IRJGQTT2KU2VUR2GNJNEIYZVLJDVKPI=

可以看到都是被加密了的

hint 用 CyberChef 解密

用户名熟悉吗,新生赛可遇见过哦~
记得用户名全用小写哦~~

username 使用了敲击码 (Tap Code), 解码后为 ctfer

密码使用 base32 - base64 解密后为 c9fa95881ea0152791d4a759dacd79de, 看样子是个 MD5, 使用在线工具反查一下得到了密码: Nss

登录之后跳转到了一个页面, F12 后发现二阶段地址 F111n4l.php

<?php
error_reporting(0);
highlight_file(__FILE__); 
include('flag.php');  
if (isset($_GET['nss'])){
    if ($_GET['nss'] == 732339662){
        assert("is_numeric($_GET[nss])==0") || die('oops!此路不通!!');
        echo $FLAG;
    } else{
        echo "这里不是说了吗!!!必须是 732339662 (招新群群号!)";
    }
}else{
    echo "啊?这是什么新型比较?";
    echo "<br/>";
    echo "是不是题错了啊";
}

可以发现关键点是 $_GET['nss'] == 732339662assert("is_numeric($_GET[nss])==0")

此处 assret 直接采用字符串 assert, 也就是说传入的变量会被直接解析出来拼接到代码中

弱比较的话只需要字符串前面是相同数字, 后面无论拼接了什么都不会管了

于是我们什么都可以构造, 比如 732339662) or (1 即可拿 flag

真的是文件上传吗?

开屏一个 brainfuck

++++++++[>>++>++++>++++++>++++++++>++++++++++>++++++++++++>++++++++++++++>++++++++++++++++>++++++++++++++++++>++++++++++++++++++++>++++++++++++++++++++++>++++++++++++++++++++++++>++++++++++++++++++++++++++>++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>-------.>-.++++++.<<<<<.>>>>>++.<++++++++.>---------.++++++.<<<<<.>>>>.<<<<.>>>>+++++++.+.+++++.>.<<<-.<<<------.>>>++++++++.>>-----.>++.<----.<<<<.>>>>++++++++.--------.<<<<.>>>>----.<<<<.>>>>+++++.++++++.-----------.++++++.<<<<+....<.>>>------.>>+++++++.----------.<<<<-.>>>>>+++.----------.++++++.<<<<<.>>>>>++.<+++++.+++..<<<<.>>>>----.-------.>-.<.<<<<.>>>>+++++++.+.+++++.>--.<<<<<+.

解密后得到

You want a hint?
Give me a flag!!!!
And you will hava hint!

我们可以尝试上传一个文件, 直接传马后, 在完成页面 F12, 可以看见被注释起来的文件调用, 通过特征判断是 python, 于是写一个打印环境变量的 python 脚本进行上传

import os
env_dist = os.environ
for key in env_dist:
    print(key + ' : ' + env_dist[key])

得到

image-20240128161545086