正在抛弃 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'] == 732339662
和 assert("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])
得到