2023 NewStarCTF --- wp

news2024/9/24 3:27:17

文章目录

    • 前言
    • Week1
      • Misc
        • CyberChef's Secret
        • 机密图片
        • 流量!鲨鱼!
        • 压缩包们
        • 空白格
        • 隐秘的眼睛
      • Web
        • 泄露的秘密
        • Begin of Upload
        • ErrorFlask
        • Begin of HTTP
        • Begin of PHP
        • R!C!E!
        • EasyLogin
      • Crypto
        • brainfuck
        • Caesar's Secert
        • fence
        • Vigenère
        • babyrsa
        • Small d
        • babyxor
        • babyencoding
        • Affine
        • babyaes

前言

week2之后的内容,随缘更新,如果有,可能只会有Crypto的wp了

Week1

Misc

CyberChef’s Secret

basecrack一把梭
在这里插入图片描述
flag:

flag{Base_15_S0_Easy_^_^}
机密图片

lsb隐写,使用stegsolve查看
在这里插入图片描述
flag:

flag{W3lc0m3_t0_N3wSt4RCTF_2023_7cda3ece}
流量!鲨鱼!

追踪http流62,发现以base64的方式读取了flag
在这里插入图片描述
然后连续两次Base64解码
在这里插入图片描述
flag:

flag{Wri35h4rk_1s_u53ful_b72a609537e6}
压缩包们

先使用banzip修复压缩包,并且发现文件尾部有一串Base64字符串,解码得到hint:压缩包密码为6个数字
得到压缩包密码232311
解压得到flag

flag{y0u_ar3_the_m4ter_of_z1111ppp_606a4adc}
空白格

whitespace解密
在这里插入图片描述
flag:

flag{w3_h4v3_to0_m4ny_wh1t3_sp4ce_2a5b4e04}
隐秘的眼睛

一眼顶针,silentEye
在这里插入图片描述
flag:

flag{R0ck1ng_y0u_63b0dc13a591}

Web

泄露的秘密

慢扫描发现泄露www.zip,解压分别在index.php和robots.txt得到flag部分
在这里插入图片描述

flag:

flag{r0bots_1s_s0_us3ful_4nd_www.zip_1s_s0_d4ng3rous}
Begin of Upload

简简单单绕过前端JS上传,直接用bp抓包,然后修改后缀为php即可
在这里插入图片描述
获取flag
在这里插入图片描述

ErrorFlask

随便输入字符串触发报错
在这里插入图片描述
flag:

flag{Y0u_@re_3enset1ve_4bout_deb8g}
Begin of HTTP

按照题目提示分别在http各个字段添加对应值

POST /?ctf=1 HTTP/1.1
Host: node4.buuoj.cn:25964
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: NewStarCTF2023
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: td_cookie=4141505721; token=zZy1ZCBLubE5mDt0XNPVB6aFLV1FHsxu4XjmQdobEnIe%2B8ICxor4zaQUV4bUiOUS2s21RhndobJbf%2FXrREpqHQ%3D%3D; power=ctfer
Referer:newstarctf.com
X-real-ip:127.0.0.1
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 28

secret=n3wst4rCTF2023g00000d

在这里插入图片描述

Begin of PHP

按照每一步的要求进行绕过即可,都是常规知识点

http://c7a2b415-8554-4b1e-bb29-a5b243096721.node4.buuoj.cn:81/?key1=QNKCDZO&key2=aabg7XSs&key4[]=123&key5=2024a

key3[]=1&flag5=("%14%12%15%05"|"%60%60%60%60")

在这里插入图片描述

R!C!E!

爆破一下hash值,然后bypass rce即可

password=114514&e[v.a.l=echo `tac /f*`;

在这里插入图片描述

EasyLogin

爆破admin的密码
得到密码000000
登陆查看响应包
flag在这.jpg,我真截图了(bushi

Crypto

brainfuck

brainfuck解密
flag:

flag{Oiiaioooooiai#b7c0b1866fe58e12}
Caesar’s Secert

遍历一下
在这里插入图片描述
flag:

flag{ca3s4r's_c1pher_i5_v4ry_3azy}
fence

在这里插入图片描述
flag:

flag{reordering_the_plaintext#686f8c03}
Vigenère

反推一下密钥即可,发现密钥为 key
在这里插入图片描述
flag:

flag{la_c1fr4_del_5ign0r_giovan_batt1st4_b3ll5s0}
babyrsa

因子较小,直接使用欧拉函数计算phi

#sage
n = 17290066070594979571009663381214201320459569851358502368651245514213538229969915658064992558167323586895088933922835353804055772638980251328261
c = 14322038433761655404678393568158537849783589481463521075694802654611048898878605144663750410655734675423328256213114422929994037240752995363595
e = 65537
phi = euler_phi(n)
d = inverse_mod(e,phi)
m = pow(c,d,n)
flag = bytes.fromhex(hex(m)[2:])
print(flag)
#flag{us4_s1ge_t0_cal_phI}
Small d

维纳攻击

from Crypto.Util.number import *
import gmpy2


def continuedFra(x, y):
    """计算连分数
    :param x: 分子
    :param y: 分母
    :return: 连分数列表
    """
    cf = []
    while y:
        cf.append(x // y)
        x, y = y, x % y
    return cf


def gradualFra(cf):
    """计算传入列表最后的渐进分数
    :param cf: 连分数列表
    :return: 该列表最后的渐近分数
    """
    numerator = 0
    denominator = 1
    for x in cf[::-1]:
        # 这里的渐进分数分子分母要分开
        numerator, denominator = denominator, x * denominator + numerator
    return numerator, denominator


def solve_pq(a, b, c):
    """使用韦达定理解出pq,x^2−(p+q)∗x+pq=0
    :param a:x^2的系数
    :param b:x的系数
    :param c:pq
    :return:p,q
    """
    par = gmpy2.isqrt(b * b - 4 * a * c)
    return (-b + par) // (2 * a), (-b - par) // (2 * a)


def getGradualFra(cf):
    """计算列表所有的渐近分数
    :param cf: 连分数列表
    :return: 该列表所有的渐近分数
    """
    gf = []
    for i in range(1, len(cf) + 1):
        gf.append(gradualFra(cf[:i]))
    return gf


def wienerAttack(e, n):
    """
    :param e:
    :param n:
    :return: 私钥d
    """
    cf = continuedFra(e, n)
    gf = getGradualFra(cf)
    for d, k in gf:
        if k == 0: continue
        if (e * d - 1) % k != 0:
            continue
        phi = (e * d - 1) // k
        p, q = solve_pq(1, n - phi + 1, n)
        if p * q == n:
            return d



n = 19873634983456087520110552277450497529248494581902299327237268030756398057752510103012336452522030173329321726779935832106030157682672262548076895370443461558851584951681093787821035488952691034250115440441807557595256984719995983158595843451037546929918777883675020571945533922321514120075488490479009468943286990002735169371404973284096869826357659027627815888558391520276866122370551115223282637855894202170474955274129276356625364663165723431215981184996513023372433862053624792195361271141451880123090158644095287045862204954829998614717677163841391272754122687961264723993880239407106030370047794145123292991433
e = 8614531087131806536072176126608505396485998912193090420094510792595101158240453985055053653848556325011409922394711124558383619830290017950912353027270400567568622816245822324422993074690183971093882640779808546479195604743230137113293752897968332220989640710311998150108315298333817030634179487075421403617790823560886688860928133117536724977888683732478708628314857313700596522339509581915323452695136877802816003353853220986492007970183551041303875958750496892867954477510966708935358534322867404860267180294538231734184176727805289746004999969923736528783436876728104351783351879340959568183101515294393048651825
c = 6755916696778185952300108824880341673727005249517850628424982499865744864158808968764135637141068930913626093598728925195859592078242679206690525678584698906782028671968557701271591419982370839581872779561897896707128815668722609285484978303216863236997021197576337940204757331749701872808443246927772977500576853559531421931943600185923610329322219591977644573509755483679059951426686170296018798771243136530651597181988040668586240449099412301454312937065604961224359235038190145852108473520413909014198600434679037524165523422401364208450631557380207996597981309168360160658308982745545442756884931141501387954248
d = wienerAttack(e, n)
m = pow(c, d, n)
flag = long_to_bytes(m)
print(flag)
#flag{learn_some_continued_fraction_technique#dc16885c}
babyxor

异或第一个明文得到key为143,后续直接密文循环异或143即可

from binascii import *

enc = 'e9e3eee8f4f7bffdd0bebad0fcf6e2e2bcfbfdf6d0eee1ebd0eabbf5f6aeaeaeaeaeaef2'
c = unhexlify(enc)
flag = ''
for i in c:
    flag += chr(i^143)
print(flag)
#flag{x0r_15_symm3try_and_e4zy!!!!!!}
babyencoding

part1,base64

flag{dazzling_encoding#4e0ad4

part2,base32

f0ca08d1e1d0f10c0c7afe422fea7

part3,uuencode

c55192c992036ef623372601ff3a}

flag:

flag{dazzling_encoding#4e0ad4f0ca08d1e1d0f10c0c7afe422fea7c55192c992036ef623372601ff3a}
Affine

先利用已知的flag格式flag{爆破符合条件的a和b,再去遍历a,b解密密文,最后把包含flag{的明文打印出来

from binascii import *
import gmpy2

def find_keys(c,part_flag):
    keys = []
    for k in range(5):
        for i in range(1,101):
            for j in range(1, 101):
                a = i
                b = j
                try:
                    plain = (c[k]-j)*gmpy2.invert(a,256) % 256
                    if chr(plain) == part_flag[k]:
                        keys.append([i,j])
                except:
                    pass
    return keys

def get_flag(c,keys):
    for key in keys:
        flag = ''
        a = key[0]
        b = key[1]
        for i in c:
            plain = (i-b)*gmpy2.invert(a,256) % 256
            flag += chr(plain)
        if 'flag{' in flag:
            print(flag)
            break

if __name__ == '__main__':
    enc = 'dd4388ee428bdddd5865cc66aa5887ffcca966109c66edcca920667a88312064'
    c = unhexlify(enc)
    part_flag = 'flag{'
    keys = find_keys(c,part_flag)
    get_flag(c,keys)
	#flag{4ff1ne_c1pher_i5_very_3azy}
babyaes

先异或1得到xor_key_iv,然后取其前16字节得到key,再异或xor_key_iv得到iv

from Crypto.Util.number import *
from Crypto.Cipher import AES

c = b'>]\xc1\xe5\x82/\x02\x7ft\xf1B\x8d\n\xc1\x95i'
xor_data = 3657491768215750635844958060963805125333761387746954618540958489914964573229
xor_key_iv = xor_data^1
key = long_to_bytes(int(xor_key_iv))[:16]*2
iv = long_to_bytes(xor_key_iv^bytes_to_long(key))
aes = AES.new(key, AES.MODE_CBC, iv)
flag = aes.decrypt(c).split(b'\00')[0]
print(b'flag{'+flag+b'}')
#flag{firsT_cry_Aes}

【活着得,怎么就轻松惬意了,无需愧疚。】

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

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

相关文章

CART 算法——决策树

目录 1.CART的生成: (1)回归树的生成 (2)分类树的生成 ①基尼指数 ②算法步骤 2.CART剪枝: (1)损失函数 (2)算法步骤: CART是英文“class…

【Java 进阶篇】创建 HTML 注册页面

在这篇博客中,我们将介绍如何创建一个简单的 HTML 注册页面。HTML(Hypertext Markup Language)是一种标记语言,用于构建网页的结构和内容。创建一个注册页面是网页开发的常见任务之一,它允许用户提供个人信息并注册成为…

Logo制作方法大公开:初学者也能学会的Logo设计教程

Logo是品牌或企业的象征,一个好的Logo可以提升品牌的认知度和美誉度。但是,很多人在设计自己的Logo时都会遇到一些困难。今天,我们将为你揭示Logo制作的技巧和秘密,让你轻松设计出专业水准的Logo。 首先,你需要注册并登…

FPGA project : sobel

实验目标: sobel算法,处理100X100灰度图像:野火logo 边缘检测: 边缘检测,针对的是灰度图像,顾名思义,检测图像的边缘,是针对图像像素点的一种计算,目的是标识数字图像…

VM虚拟机扩容

背景介绍 在实现3D结构光扫描算法移植到嵌入式平台jetson Xavier NX时,需要在windows的电脑上安装VM虚拟机搭载Ubuntu,然后在Ubuntu 18.04上安装开发软件Nsight Eclipse Edition,在该集成开发软件上交叉编译jetson aarc64架构上可运行的文件…

SAE-J1939-21 (超8字节)多包数据----CAN传输协议

一、协议数据单元(PDU) 1. 优先级(P) 消息优先级可从最高 0(000)设置到最低 7(111)。 2. 保留位(R) 保留此位以备今后开发使用。 3. 数据页(D…

中国移动咪咕、阿里云、华为“秀肌肉”,这届亚运会的“高光”不止比赛

文 | 智能相对论 作者 | 青月 竞技体育的发展,其实也可以看作是一部“技术进化史”。 在1924年的巴黎,广播首次进入奥运会,人们第一次可以通过报纸以外的方式了解奥运会。 1928年,在荷兰申办的阿姆斯特丹奥运会,高…

mi note3 刷入lineageos

下载 twrp TWRP是国外安卓爱好者开发的一款工具,全名为Team Win Recovery Project,主要作用包括刷机、备份 ,救砖。 https://twrp.me/xiaomi/xiaomiminote3.html 一般下载最新版本,mi note 3对应 https://dl.twrp.me/jason/twrp-…

Hadoop----Azkaban的使用与一些报错问题的解决

1.因为官方只放出源码,并没有放出其tar包,所以需要我们自己编译,通过查阅资料我们可以使用gradlew对其进行编译,还是比较简单,然后将里面需要用到的服务文件夹进行拷贝,完善其文件夹结构,通常会…

Android笔记(二):JetPack Compose定义移动界面概述

一、JetPack Compose组件概述 JetPack Compose是Google公司在2021年正式推出的声明式UI工具包。Compose库用于开发原生Android应用界面。它取代传统XML文件配置界面,不需要界面编辑工具,而是采用强大Kotlin API以及函数搭建移动应用界面,代码…

请求的转发和重定向

RequestDispatcher接口实现转发: jsp1上链接到Servlet,Servlet再转发(关键在这里怎么实现转发??) 演示index.html页面---->Servlet1(转发到)------>Servlet2 实现转发流程 1.用HttpServletReques…

如何使用CDN加载静态资源

文章目录 前言工具场景七牛云创建空间存储 控制台查看后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:前端 🐱‍👓博主在前端领域还有很多知识和技术需要掌握,正在不断努力填补技术短板。(如果出现错误…

《机器学习》- 第3章 线性模型

文章目录 3.1 基本形式3.2 线性回归一元线性回归多元线性回归 3.3 对数几率回归3.4 线性判别分析3.5 多分类学习3.6 类别不平衡问题 3.1 基本形式 问题描述: 函数形式: 向量形式: 许多功能更为强大的非线性模型可在线性模型的基础上引入层…

Java项目如何防止SQL注入的四种方案

什么是SQL注入 SQL注入(SQL Injection)是一种常见的网络安全漏洞,它允许攻击者通过操纵应用程序的输入来执行恶意的SQL查询。这种漏洞发生在应用程序没有正确验证、过滤或转义用户提供的输入数据时。攻击者可以利用这个漏洞来执行未经授权的…

笔记本怎么录制屏幕?推荐3个实用技巧

在当今信息化快速发展的时代,笔记本录制屏幕成为人们日常生活中经常需要面对的问题。无论是办公、学习还是娱乐,录制屏幕都有着广泛的应用。可是笔记本怎么录制屏幕呢?接下来,本文将介绍3种常见的笔记本录制屏幕方法,我…

Python:Jupyter:OSError: Initializing from file failed

在学习Python的时候,我在进行导入外部文件的时候总是出现问题,总是乱导文件,可能碰巧文件导进去了,这次记录一下导入.csv文件失败的原因 read_csv时发生报错:OSError: Initializing from file failed filepathr"…

zabbix自定义监控内容和自动发现

6 目录 一、自定义监控内容: 1.明确需要执行的 linux 命令 2.创建 zabbix 的监控项配置文件,用于自定义 key: 3. 在 Web 页面创建自定义监控项模板: 3.1 创建模板: 3.2 创建监控项: 3.3 创建触发器&#…

C 语言数据类型概述

int 表示基本的整数类型, long, short, unsigned, signed 提供基本整数类型的变式. char 用于指定字符, 也可以表示较小的整数. float, double, long double 表示浮点数. _Bool 表示布尔值 (true 或者 false) _Complex 和 _Imaginary 分别表示复数和虚数. 通过这些关键字创…

Linux 内核 LTS 期限将从 6 年恢复至 2 年

导读在日前举行的欧洲开源峰会上,Linux 内核开发人员兼《Linux Weekly News》执行主编 Jonathan Corbet 介绍了 Linux 内核的最新动态以及未来的发展方向。其中一项即将发生的重大变化是:Linux 内核的长期支持 (LTS) 时间将从六年缩短至两年。 目前 Lin…

基于Java+SpringBoot+Vue在线家具商城系统的设计与实现 前后端分离【Java毕业设计·文档报告·代码讲解·安装调试】

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…