HSCSEC 2023 个人练习

news2024/9/22 7:20:48
😋 大家好,我是YAy_17,是一枚爱好网安的小白。
本人水平有限,欢迎各位大佬指点,欢迎关注 😁,一起学习 💗 ,一起进步 ⭐ 。
⭐ 此后如竟没有炬火,我便是唯一的光。 ⭐

感觉除了Social Engineering,别的都不会......(后续会学习各位大佬的WP,再补上没做出来的题目)

MISC

SIGNIN

关注公众号:中龙 红客突击队 发送:HSCCTF{TELLMEFLAG}获取flag!
HSCSEC{W3Ic0m3_t0_HScCtF2tH}

WEB

EASYPHY

“唯一做出来的web”

上传文件题型,先尝试点击upload,进行上传:

(提示上传图片)尝试上传各种php类型的文件,发现都上传不上去

这里尝试上传flag.php,但是Content-Type却是image/jpg,提示如下图:

之后发现上传一个图片1.jpg,依然还是提示Dont cheat me with Content-Type,发现加上文件头即可绕过GIF89a

在多次尝试之下,发现上传带有php内容的图片是可以上传!

带有php一句话木马的图片是上传上去了,但是没法解析呀;

回头会发现,首页还存在着view,点击view,进行抓包会发现在数据包中存在着可疑的参数:url中的参数是否能够包含下我们的图片马?

之后尝试将我们的图片马的路径:upload/4869953b4070fbd1d6823d6ee6561985/1.jpg传入:

之后蚁剑连马即可;

EZSSTI

“比赛结束之后看大佬的WP”
“SSTI没怎么接触过,感觉这东西好抽象,玄学;之后入门下SSTI”

进入主页啥也没有,同时毫无提示,这里是要传参name,这... 比赛不给提示的话,真的难吧?

在传入name参数之后,发现主页中的“ Welcome to the HSCSEC CTF 2023 ”中的“HSCSEC CTF 2023”是可以伴随着我们传入的name的值改变的!

题目过滤了popen、cat、flag,因此需要拼接下来绕过:

name={{''.__class__.__bases__[0].__subclasses__()[80].__init__.__globals__['__builtins__'].eval("__import__('os').po"+"pen('ca"+"t /f"+"lag').read()")}}

Crypto

之前只是接触web,现在发现密码学还挺有趣

EZRSA

题目的代码:

from Crypto.Util.number import *
import gmpy2
m = 123

p = getPrime(1024)
q = getPrime(1024)
n = p * q
print('n =',n)
e = 0x10001
M = m * e * 1 * 2022 * p	
c = pow(M,e,n)
print('c =',c)

# n = 16266043783454053154037197753138388613864200794483663334493856481522764684650995230938142916968470804276539967429581472897698022852787399956166067156691430593337430691851251036378709799238876668312530223697905925939542713491015517460139150765778057817475571231361809654951289718071760502692960235551663466242938669673675870151921605230499603814070711617511206013584605131901906195136038060653121164252894949526861390984185085201067988694831398388037080993820517447099157891181179389949333832439004857436617834100885739716577641892686620423154860716308518151628754780994043553863224363539879909831811888663875989774849
# c = 12716190507848578560760116589677996073721225715245215495257947887969923319693501568134141757778665747980229898129090929698368855086594836111461700857934476682700625486249555753323344759513528101651108919161794915999809784961533946922607642974500946026677116418317599095703217004064379100607278317877894742815660315660254853364776654303066021672567442581774299847661025422994141801987588151758971034155714424052693627277202951522779716696303237915400201362585413354036973117149974017434406560929491956957193491445847385625481870256240443170803497196783872213746269940877814806857222191433079944785910813364137603874411

分析:M=2022*m*e*p 又因为n=pq 因此gcd(M,n)=p,同时又因为c = pow(M,e,n) 因此c和n的最大公约数便是p

from Crypto.Util.number import *
import gmpy2
m = 123
n = 16266043783454053154037197753138388613864200794483663334493856481522764684650995230938142916968470804276539967429581472897698022852787399956166067156691430593337430691851251036378709799238876668312530223697905925939542713491015517460139150765778057817475571231361809654951289718071760502692960235551663466242938669673675870151921605230499603814070711617511206013584605131901906195136038060653121164252894949526861390984185085201067988694831398388037080993820517447099157891181179389949333832439004857436617834100885739716577641892686620423154860716308518151628754780994043553863224363539879909831811888663875989774849
c = 12716190507848578560760116589677996073721225715245215495257947887969923319693501568134141757778665747980229898129090929698368855086594836111461700857934476682700625486249555753323344759513528101651108919161794915999809784961533946922607642974500946026677116418317599095703217004064379100607278317877894742815660315660254853364776654303066021672567442581774299847661025422994141801987588151758971034155714424052693627277202951522779716696303237915400201362585413354036973117149974017434406560929491956957193491445847385625481870256240443170803497196783872213746269940877814806857222191433079944785910813364137603874411
e = 65537
p = GCD(c,n)
q = n//p
phi = (p-1)*(q-1)
d = inverse(e,phi)
M = pow(c,d,n)
M //=2022*e*p 
print(long_to_bytes(M))
#flag{3e5e2789a93a80615cc35edbff397c05}

Operator

#!/bin/python3
from Crypto.Util.number import bytes_to_long, getPrime

FLAG = "*******************MASK****************"

# print(FLAG)
number1 = getPrime(512)
number2 = getPrime(1024)
print(number1)
result = FLAG * number1 % number2
print(result)

"""
Output:
11488359375916816818731868252559119400126174593041608170883818546254791846479664455120194350355087017477744828351806157930199157462913063513512421460678471
1890846045246997191702622225497063073251667816125412875121879991742654650976309481716690792328873189601779812108551290078049710826355501933349874438201643986975141068179879506727213209273645848165732801667704040761771
"""

乍一看我们不知道number2,其实也不用求number2,原因是:位数相差的太多了,FLAG*number1小于number2,那么对number2进行求余运算得到的结果依然还是FLAG*number1;

因此直接进行整除运算即可;

from Crypto.Util.number import *
n1 = 11488359375916816818731868252559119400126174593041608170883818546254791846479664455120194350355087017477744828351806157930199157462913063513512421460678471
c = 1890846045246997191702622225497063073251667816125412875121879991742654650976309481716690792328873189601779812108551290078049710826355501933349874438201643986975141068179879506727213209273645848165732801667704040761771
print(long_to_bytes(c//n1))
#flag{qMmZqWvmj70bBsCfmVLT}

EZVC

# -*- coding: utf-8 -*-
import flag
alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!"#$%&\'()*+,-./:;<=>?@[\]^_`{|}~'
key = 'HSC'
assert flag.startswith('HSCSEC{')
flag_num_list = []
c = []
for item in flag:
    flag_num_list.append(alphabet.find(item) + 1)
key_num = alphabet.find(key) + 1
for i in flag_num_list:
    m = (i + key_num) % 94 - 1
    if m == 0:
        c.append("□")
    c.append(alphabet[m-1:m])
print("c = {}".format(''.join(c)))


# c = GRBRDB`jg10ij2g01i,g201gi,2gi2,012igaigagi|

*.startswith()和*.endswith的区别和作用:

  1. *.startswith()表示以什么什么开头,结果是布尔类型

  1. *.endswith()表示以什么什么结尾,结果是布尔类型

name = 'flag{1245466}'
flag = name.startswith('flag')
print(flag)
flag = name.endswith('flag')
print(flag)
#output:
	#True
	#False

该题目简单来说就是通过换位实现的,我们可以通过密文c的前面六位来找到规律:

# c = GRBRDB`jg10ij2g01i,g201gi,2gi2,012igaigagi|
# m = HSCSEC{.....}
#会发现密文中的每一位刚好对应上flag中的每一位,且都是字母表中的后面一位
# -*- coding: utf-8 -*-
import flag
alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!"#$%&\'()*+,-./:;<=>?@[\]^_`{|}~'
alphabet1= '~abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!"#$%&\'()*+,-./:;<=>?@[\]^_`{|}'

flag_list={}
for index in range(len(alphabet1)):
    flag_list[alphabet1[index]] = alphabet[index]

#print(flag_list)
c = 'GRBRDB`jg10ij2g01i,g201gi,2gi2,012igaigagi|'
for i in c:
    print(flag_list[i],end='')

Social Engineering

Happy Lantern Festival

flag形式为:HSCSEC{}

例如:HSCSEC{广东省广州市天河区天河市天河路天河步行街}

看图上的字便可以找到相关的信息;(这里不得不说,我找到了flag,但是没完全找到,被这个题日了)

HSCSEC{新疆维吾尔自治区阿勒泰地区阿勒泰市五百里风情街}
#提交了若干次答案,看了wp发现,我的答案少了“地”><!

Beautiful Lake

这个题的突破口在右下方的文字(放大!)

宁夏理工学院!之后搜索一下可知是星海湖;

HSCSEC{宁夏省石嘴山市大武口区星海湖}		//格式记不清楚了,可能需要调整

Apple Store

flag形式为:HSCSEC{}

例如:HSCSEC{广东省广州市天河区天河路1号}

例如:HSCSEC{广东省广州市天河区天河路1号环贸F1}

百度搜图可以知道这是北京西单的大悦城的苹果店

HSCSEC{北京市西城区西单北大街131号西单大悦城}

Beautiful Park

flag形式为:HSCSEC{}

例如:HSCSEC{广东省广州市天河区天河国家湿地公园}

百度上传搜图:

HSCSEC{河北省张家口市怀来县官厅水库国家湿地公园}

Boat

百度搜索发现是西湖的开船照:

HSCSEC{浙江省杭州市西湖区龙井路1号}

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

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

相关文章

聊一聊国际化i18n

i18n 概述i18n 是国际化的缩写&#xff0c;其完整的写法是 Internationalization&#xff0c;翻译为国际化。国际化是指在软件开发中对于不同语言和地区的支持。目的是为了让一款软件可以在不同的语言和地区环境下正常运行&#xff0c;使其适应全球各地的用户。这通常包括对语言…

Simulink 自动代码生成电机控制:低阶滑模观测器仿真实现及生成代码在开发板上运行

目录 理论参考 仿真实现 运行演示 总结 前段实时搭过高阶的滑模观测器&#xff0c;相比于高阶的&#xff0c;普通的滑模观测器计算量小更适合计算能力低的MCU&#xff0c;这里参考Microchip的16位MCU所使用的观测器&#xff0c;通过Simulink建模仿真实现系统控制&#xff0…

【查看多个长图】如何方便地在安卓手机上查看多个长图?如何更便捷地浏览长图合集

经常我会看到有些知识分享是通过长图形式进行。 往往在手机本地的图片浏览器中不能很方便地查看很多长图&#xff08;能放大&#xff0c;但是横向滑动时&#xff0c;无法保证同样的放缩比例浏览同一个文件夹&#xff09;。 我推荐下面一个APP和曲折解决办法。 1、perfect vi…

Error: Timeout trying to fetch resolutions from npm

总目录&#xff1a; 如何使用VSCode插件codesight扫描出前端项目的风险依赖包并借助 npm-force-resolutions 修复之&#xff1f;blackduck issue fix 文章目录问题描述【最终解决】我搜索到的解决方案npmjs 该依赖各版本列表及对应的被下载次数github issue 说降级到0.0.3就可以…

(十五)、从插件市场引入问题反馈页面【uniapp+uinicloud多用户社区博客实战项目(完整开发文档-从零到完整项目)】

1&#xff0c;插件市场问题反馈页面 插件市场链接 dloud插件插件市场中找到问题反馈插件&#xff1a; 首先确保登录了dcloud账号。 使用hbuilderX导入插件到自己项目中。 选择合并导入。 从插件市场导入意见反馈页面的路径地址如下&#xff1a; 2&#xff0c;点击跳转到…

论文阅读_AlphaGo_Zero

论文信息 name_en: Mastering the game of Go without human knowledge name_ch: 在没有人类知识的情况下掌握围棋游戏 paper_addr: http://www.nature.com/articles/nature24270 doi: 10.1038/nature24270 date_publish: 2017-10-01 tags: [‘深度学习’,‘强化学习’] if: 6…

【C++封装】C++面向对象模型

文章内容如下&#xff1a; 1&#xff09;成员变量和函数的存储 2&#xff09;this指针 3&#xff09;const修饰成员函数 4&#xff09;有元 一。成员变量和函数的存储 C实现了封装&#xff0c;数据(-变量)和处理数据的操作(-函数)是分开存储的&#xff0c;C中的非静态数据…

SpringBoot Notes

文章目录1 SpringBootWeb快速入门1.1Spring官网1.2 Web分析2. HTTP协议2.1 HTTP介绍34 SpringBootWeb请求响应5 响应6 分层解耦6.1 三层架构6.1.1 三层架构介绍6.1.2 基于三层架构的程序执行流程&#xff1a;6.1.3 代码拆分6.2 分层解耦6.2.1 内聚、耦合6.2.2 解耦思路6.3 IOC&…

[LeetCode周赛复盘] 第 333 场周赛20230219

[LeetCode周赛复盘] 第 333 场周赛20230219 一、本周周赛总结二、 [Easy] 6362. 合并两个二维数组 - 求和法1. 题目描述2. 思路分析3. 代码实现三、[Medium] 6365. 将整数减少到零需要的最少操作数1. 题目描述2. 思路分析3. 代码实现四、[Medium] 6364. 无平方子集计数1. 题目描…

操作系统闲谈08——系统调用、中断、异常

操作系统闲谈08——系统调用、中断、异常 一、系统调用 IDT - GDT - 系统调用表 找到对应系统调用号将系统调用号以及一些现场信息存入寄存器eax中&#xff08;ebx、ecx、edx存放其他信息&#xff09;&#xff0c;然后触发软中断&#xff08;x86中&#xff0c;0x80为中断号&…

设计模式 状态机

前言 本文梳理状态机概念&#xff0c;在实操中状态机和状态模式类似&#xff0c;只是被封装起来&#xff0c;可以很方便的实现状态初始化和状态转换。 概念 有限状态机&#xff08;finite-state machine&#xff09;又称有限状态自动机&#xff08;英语&#xff1a;finite-s…

ThreadLocal知识点总结

什么是ThreadLocal&#xff1f;它的作用是什么&#xff1f; ThreadLocal是线程Thread中属性threadLocals的管理者。 ThreadLocal是Java中lang包下的一个类&#xff0c;可以用于在多线程环境中为每个线程维护独立的变量副本。它的作用是让每个线程都拥有自己的数据副本&#xff…

Java面向对象的特性:封装,继承与多态

Java面向对象的特性 在学习Java的过程是必须要知道的Java三大特性&#xff1a;封装、继承、多态。如果要分为四类的话&#xff0c;加上抽象特性。 封装 1.封装概述 是面向对像三大特征之一&#xff08;封装&#xff0c;继承&#xff0c;多态&#xff09; 是面向对象编程语言对客…

语音增强学习路线图Roadmap

语音增强算是比较难的研究领域&#xff0c;从入门到精通有很多台阶&#xff0c;本文介绍一些有价值的书籍&#xff0c;值得反复阅读。主要分为基础类和进阶类书籍&#xff0c;大多都是理论和实践相结合的书籍&#xff0c;编程实践是抓手,让知识和基础理论变扎实。基础书籍《信号…

RT-Thread初识学习-01

1. RT-Thread 简介 1.1 RT-Thread 是什么 据不完全统计&#xff0c;世界有成千上万个 RTOS&#xff08;Real-time operating system&#xff0c;实时操作系统&#xff09;&#xff0c;RT-Thread 就是其中一个优秀的作品。 RT-Thread 内核的第一个版本是熊谱翔先生在 2006 年…

分布式-分布式存储笔记

读写分离 什么时候需要读写分离 互联网大部分业务场景都是读多写少的&#xff0c;读和写的请求对比可能差了不止一个数量级。为了不让数据库的读成为业务瓶颈&#xff0c;同时也为了保证写库的成功率&#xff0c;一般会采用读写分离的技术来保证。 读写分离的实现是把访问的压…

LeetCode-384-打乱数组

1、列表随机 为了能够初始化数组&#xff0c;我们使用nums保存当前的数组&#xff0c;利用orignal保存初始化数组。为了实现等可能随机打乱&#xff0c;考虑到随机数本质上是基于随机数种子的伪随机&#xff0c;我们采用如下的方式实现等可能随机&#xff1a;我们将所有元素压…

MySQL备份恢复(十二)

文章目录1. MySQL数据损坏类型1.1 物理损坏1.2 逻辑损坏2. DBA运维人员备份/恢复职责2.1 设计备份/容灾策略2.1.1 备份策略2.1.2 容灾策略2.2 定期的备份/容灾检查2.3 定期的故障恢复演练2.4 数据损坏时的快速准确恢复2.5 数据迁移工作3. MySQL常用备份工具3.1 逻辑备份方式3.2…

【scl】博图程序的导入和导出

导入或者导出博图文件的方法&#xff08;也叫移植文件&#xff09; 目录 前言 ​编辑 ​编辑 前言 本篇文章主要写一下关于博图文件的导入和导出&#xff0c;具体要怎么样才能将写好的程序或者块移植到其他地方&#xff0c;下面我们一起来看&#xff01; 一、程序块的导入和导…

[软件工程导论(第六版)]第4章 形式化说明技术(课后习题详解)

文章目录1. 举例对比形式化方法和欠形式化方法的优缺点。2. 在什么情况下应该使用形式化说明技术&#xff1f;使用形式化说明技术时应遵守哪些准则&#xff1f;3. 一个浮点二进制数的构成是&#xff1a;一个可选的符号&#xff08;&#xff0b;或&#xff0d;&#xff09;&…