题目链接:
NSSCTF | 在线CTF平台因为热爱,所以长远!NSSCTF平台秉承着开放、自由、共享的精神,欢迎每一个CTFer使用。https://www.nssctf.cn/problem/5075
题目描述:
用尽各位所学
必然能出的签到题
Robots?http://node4.anna.nssctf.cn:28801/第一步目录扫描一下,得到robots.txt
robots.txt内容如下:
hint:E794A8E688B7E5908DE7869FE68289E590972CE696B0E7949FE8B59BE58FAFE98187E8A781E8BF87E593A67E0AE8AEB0E5BE97E794A8E688B7E5908DE585A8E794A8E5B08FE58699E593A6EFBD9EEFBD9E
username:13 44 21 15 42
password:LF5GY3KZKRVTCT2EM54FUV2FO5GVIVLZJZ5GW6C2IRJGQTT2KU2VUR2GNJNEIYZVLJDVKPI=
hint:E794A8E688B7E5908DE7869FE68289E590972CE696B0E7949FE8B59BE58FAFE98187E8A781E8BF87E593A67E0AE8AEB0E5BE97E794A8E688B7E5908DE585A8E794A8E5B08FE58699E593A6EFBD9EEFBD9 base16解密得到:用户名熟悉吗,新生赛可遇见过哦~ 记得用户名全用小写哦~~ username:13 44 21 15 42 棋盘密码解码:ctfer,即username:ctferpassword:LF5GY3KZKRVTCT2EM54FUV2FO5GVIVLZJZ5GW6C2IRJGQTT2KU2VUR2GNJNEIYZVLJDVKPI= base32解密得到:YzlmYTk1ODgxZWEwMTUyNzkxZDRhNzU5ZGFjZDc5ZGU=,然后base64解密得到:c9fa95881ea0152791d4a759dacd79de,最后MD5解密得到:Nss,即password:Nss
输入账号,密码登录网页
进入w4it111ng.php,产看源码NSShttp://node4.anna.nssctf.cn:28801/w4it111ng.php
发现提示,进入F111n4l.php
这是一段 PHP 代码,看起来是一个简单的验证脚本。让我们逐行分析:
-
error_reporting(0);
: 禁用错误报告,这样在页面上不会显示 PHP 的错误信息。 -
highlight_file(__FILE__);
: 将当前文件的源代码高亮显示在页面上。 -
include('flag.php');
: 包含flag.php
文件。这通常用于导入文件中定义的变量或函数。 -
if (isset($_GET['nss'])) { ... } else { ... }
: 检查是否存在 GET 请求中的参数nss
。 -
if ($_GET['nss'] == 732339662) { ... } else { ... }
: 检查参数nss
的值是否等于732339662
。 -
assert("is_numeric($_GET[nss])==0") || die('oops!此路不通!!');
: 使用assert
函数,检查传入的参数是否是数字。如果是数字,则终止程序并输出错误信息。 -
echo $FLAG;
: 如果参数nss
的值等于732339662
并且通过了数字检查,就输出变量$FLAG
的值。 -
echo "这里不是说了吗!!!必须是 732339662 (招新群群号!)";
: 如果参数nss
的值不等于732339662
,输出错误信息。 -
如果不存在参数
nss
,则输出 "啊?这是什么新型比较?是不是题错了啊"。
总体来说,该脚本的目的是通过 GET 请求中的参数 nss
进行一些条件判断。如果 nss
的值等于 732339662
并且不是数字,就输出变量 $FLAG
的值。否则,输出相应的错误信息。
构造URL:
?nss=732339662,1
得到flag