제목 : 2022 세 번째 "Net Ding Cup"네트워크 보안 경쟁 - Qinglong Group 일부 글쓰기

MISC​

签到题​

네트워크 보안에서 8 개의 객관식 질문에 대해 Baidu는 답변을 검색 할 수 있습니다. 여기서 몇 가지 질문에 대한 답을 알고 있다면 열거를 사용하여 퍼즈 답변을 테스트하고 깃발을 얻을 수 있습니다.
1049983-20220829111934840-398261753.jpg

FLAG:
플래그 {A236B34B-8040-4EA5-9E1C-97169AA3F43A}

RE​

re693​

첨부 파일을 직접 다운로드하여 Golang으로 열어
주요 함수를 살펴보면 6 개의 매개 변수가있는 함수를 입력하고 세 번째는 glihr이며 3 번이라고 불리며 chzv5op8romlakb6으로 호출됩니다.
6 개의 매개 변수가 있고 세 번째는 GLIHR:이라는 첫 번째 함수를 입력합니다.
첫 번째 함수를 입력하고 6 개의 매개 변수가 있고 세 번째는 glihr입니다.
입력 3 개의 호출이 있고 chzv5op8romlakb6:이라는 함수를 호출합니다.
3 개의 발신자가 있고 chzv5op8romlakb6이라는 함수를 호출하는 두 번째 함수를 입력하십시오.
직접 글로벌 검색, 첫 번째 기능은 6 개의 매개 변수가있는 Zlxdjkh3ozn4mayd입니다.
1049983-20220829111935787-1852581138.jpg
두 번째 함수는 먼저 CHZV5OP8ROMLAKB6을 전 세계적으로 검색 하여이 기능을 호출 할 기능을 확인한 다음 기호가 질문의 의미를 충족하는지 여부를 확인할 수 있습니다. 해당 함수는 uhncm82sdge0zlyo입니다
1049983-20220829111936524-69971324.jpg
6 개, 외출과 자신, 그리고 다음 번에는 두 개의 반복 판단이 있으면 3 번의 전화가 있습니다.
1049983-20220829111937099-603256132.jpg
다음 주요 기능을보십시오
func main () {
var nfazj, cuskl 문자열
jjxxf :=[] byte {
37, 73, 151, 135, 65, 58, 241, 90, 33, 86, 71, 41, 102, 241, 213, 234, 67, 144, 139, 20, 112, 150, 41, 7, 158, 251, 167, 249, 249, 129, 72, 64, 83, 142, 166, 67, 18, 2111111111111111111111111111111111111111111 38, 83, 147, 40, 78, 239, 113, 232, 83, 227, 47, 192, 227, 70, 167, 201, 249, 156, 101, 216, 159, 116, 210, 152, 234, 38, 145, 198, 58, 24, 183, 72, 143, 136, 234, 246}
kdlah :=[] byte {
191, 140, 114, 245, 142, 55, 190, 30, 161, 18, 200, 7, 21, 59, 17, 44, 34, 181, 109, 116, 146, 145, 189, 68, 142, 113, 0, 33, 46, 184, 21, 33, 66, 99, 124, 167, 201, 88, 133, 20, 211, 20, 133, 250, 62, 28, 138, 229, 105, 102, 125, 124, 208, 180, 146, 67, 39, 55, 240, 239, 203, 230, 142, 20, 90, 205, 27, 128, 136, 151, 140, 222, 92, 152, 1, 222, 138, 254, 246, 223, 223, 33, 60, 170, 189, 77, 124, 72, 135, 46, 235, 17, 32, 28, 245}
fmt.print (mpyt9gwtrfafnvb1 (jjxxf))
fmt.scanf ( '%20s', nfazj)
fmt.print (kz2bfvoxepd5aldr (kdlah))
fmt.scanf ( '%20s', cuskl)
vnvuo :=gwsqnhq7dpxpig64 (nfazj)
yjcya :=''
mvoxk :=yi3z8zxokhflmtpc (cuskl)
mvoxk!=nil {인 경우
yjcya=mvoxk ()
}
if yjcya!=''vnvuo!=''{
fmt.printf ( 'flag {%s%s} \ n', vnvuo, yjcya)
}
}
플래그는 두 섹션으로 나뉘고 첫 번째 섹션은 vnvuo이고 두 번째 섹션은 yjcya입니다.
첫 번째 기능
func gwsqnhq7dpxpig64 (cjptr string) 문자열 {
yrxqd :=hex.encodetostring ([] byte (cjptr))
return fmt.Sprintf('%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c', YrXQd[22], YrXQd[19], YrXQd[20], YrXQd[21], YrXQd[28], YrXQd[10], YrXQd[20], yrxqd [7], yrxqd [29], yrxqd [14], yrxqd [0], yrxqd [18], yrxqd [3], yrxqd [24], yrxqd [27], yrxqd [31])
}
첫 번째 단락 Exp
yrxqd=bytes.hex ( 'zlxdjkh3ozn4mayd'.encode ())
print (yrxqd [22], yrxqd [19], yrxqd [20], yrxqd [21], yrxqd [28], yrxqd [10], yrxqd [20], yrxqd [7], yrxqd [29], yrxqd [14], yrxqd [0], yrxd [18], yrxqd [3], yrxqd [24], yrxqd [27], yrxqd [31], sep='')
두 번째 단락에는 기능이 포함됩니다
1049983-20220829111937715-426100571.jpg
이 부분은 반환 기능이며 UHNCM82SDGE0ZLYO로 전화해야합니다.
func uhncm82sdge0zlyo () string {
sythk :=[] byte {
159, 141, 72, 106, 196, 62, 16, 205, 170, 159, 36, 232, 125, 239, 208, 3}
var vw2mj, nij87, zvclr 문자열
chzv5op8romlakb6 (sythk, vw2mj, nij87, zvclr) 반환
}
func chzv5op8romlakb6 (higxt [] byte, vgvny string, zokkv string, eu0ud String) 문자열 {
qtk4l :=make ([] byte, 20)
ek08m :=[16] 바이트 {
167, 238, 45, 89, 160, 95, 34, 175, 158, 169, 20, 217, 68, 137, 231, 54}
i :=0; I 16; i ++ {
qtk4l +=ek08m ^ higxt
}
리턴 스트링 (qtk4l)
}
다음 몇 가지 VW2MJ, NIJ87, ZVCL은 유효하지 않은 매개 변수입니다
Exp:
qtk4l=[0]*16
sythk=[159, 141, 72, 106, 196, 62, 16, 205, 170, 159, 36, 232, 125, 239, 208, 3]
Ek08m=[167, 238, 45, 89, 160, 95, 34, 175, 158, 169, 20, 217, 68, 137, 231, 54]
범위 (16) :의 I의 경우
qtk4l =chr (ek08m ^ sythk )
qtk4l:에서 i를 위해
print (i, end='')
1049983-20220829111938354-1590376853.jpg
예기치 않게, Go 환경 중 첫 번째는 팀원이 달릴 때 직접 종료 될 것입니다.
1049983-20220829111939003-1595737541.jpg
FLAG:
플래그 {3A4E7644935C4148CE3DA2B46019F75}

re694​

1049983-20220829111939697-2115694814.png
은 Magic에 의해 수정되었으며 Fuk는 UPX로 수정되었으며 쉘을 제거하는 것이 정상이었습니다.
1049983-20220829111940314-377427137.jpg
그런 다음 분석하십시오
IDA를 열고 키워드 문자열을 찾은 다음 키 기능을 찾습니다.
1049983-20220829111940994-841696591.jpg

두 가지 주요 판단 기능, 첫 번째 판단 기능은 들어가서 길이가 20인지 확인하고 입력 값은 xor0x66입니다.
1049983-20220829111941689-265183684.jpg

두 번째 판단 기능은 첫 번째 판단 된 값을 10에 추가 한 다음 XOR0x50에 추가 한 다음 DWORD_14001D000의 숫자와 비교하는 것입니다.
1049983-20220829111942331-1878237441.jpg

$ flag=((ENC \ OPLUS0x50) -10) \ oplus0x66 $입니다
X=[ '4B', '48', '79', '13', '45', '30', '5c', '49', '5a', '79', '13', '70', '6d', '78', '13', '6f', '48', '5d', '64', '64']
x:에서 i를 위해
chr (((int (i, 16) ^0x50) -10) ^0x66), end='')
FLAG:
플래그 {why_m0dify_pux_shell}

CRYPTO​

crypto091​

설명과 그에 언급 된 논문에 따르면 해시 값은 전화 번호의 SHA256입니다.
섹션 170의 숫자 분포에 대한 China Unicom 수의 첫 번째 배치는 1709로 시작하여 직접 폭발 할 수 있습니다 :
X='C22A563ACC2A587AFBFAAAAAAAAAAAAAAA6D67BC6E628872B00BD7E9998873881F7C6FDC62FC'
hashlib을 가져옵니다
n=B'861709 '
s=list ( '0123456789'.strip ())
IterTools 가져 오기
Itertools.product (s, report=7) :의 i의 경우
d=''.join (i) .encode ()
g=n+d
hashlib.sha256 (g) .hexDigest ()==x:입니다
인쇄 (g)
부서지다
# B'8617091733716 '
또는
1049983-20220829111942983-1849565841.png

비밀 수입 플래그에서

crypto162​

Hashlib import Md5, SHA256에서
Crypto에서 Cipher Import AES에서
cof_t=[[353, -1162, 32767], [206, -8021, 42110], [262, -7088, 31882], [388, -6394, 21225], [295, -9469, 44468], [749, -3501, 4059] 10210], [354, -5383, 18437], [491, -8467, 26892], [932, -6984, 20447], [731, -6281, 11340], [420, -5392, 44071], [685, -6555, 40938] 47959], [182, -9857, 49477], [593, -3584, 49243], [929, -7410, 31929], [970, -4549, 17160], [141, -2435, 36408], [344, -1949] -7457, 40587], [765, -7011, 32097], [700, -8534, 18013], [267, -2541, 33488], [249, -8934, 12321], [589, -9617, 41998], [840, -1166, 22814] -5660, 41003], [206, -7195, 46261], [784, -9270, 28410], [338, -3690, 19608], [559, -2078, 44397], [534, -3438, 47830], [515, 39546] -6460, 49953], [234, -6824, 12579], [805, -8793, 36465], [245, -5886, 21077], [190, -7658, 20396], [392, -7053, 19739], [609, [4959] -8172, 45734], [321, -7102, 41224], [720, -4487, 11055], [208, -1897, 15237], [890, -4427, 35168], [513, -5106, 45849], [666, 23725] -6732, 39995], [589, -6421, 43716], [866, -3265, 30017], [416, -6540, 34979], [840, -1305, 18242], [731, -6844, 13781], [561, 1028, 13781] [863, -5953, 23132], [204, -4208, 27492], [158, -8701, 12720], [802, -4740, 16628], [491, -6874, 29057], [531, -4829, 29205], [363, 4117] -9206, 46164], [317, -9270, 18290], [680, -5136, 12009], [880, -2940, 34900], [162, -2587, 4981], [997, -5265, 20890], [485, -9395, 23048] -1652, 18926], [691, -7844, 11180], [355, -5990, 13172], [923, -2018, 23110], [214, -4719, 23005], [921, -9528, 29351], [349, -7957, 20161] -1889, 46170], [244, -6106, 23879], [419, -5440, 43576], [930, -1123, 29859], [151, -5759, 23405], [843, -6770, 36558], [574, -6171, 33778] -1073, 44718], [932, -4037, 40088], [848, -5813, 27304], [194, -6016, 39770], [966, -6789, 14217], [219, -6849, 40922] -8254, 29748], [618, -5887, 15535], [202, -9288, 26590], [611, -4341, 46682], [155, -7909, 16654], [935, -5739, 39342], [998, -6538, 24363] -5679, 36725], [507, -7074, 15475], [699, -5836, 47549]]
Devcal (I, COF) :
I가 3: 인 경우
반환 i+1
else:
반환 COF [2]*cal (I-3, COF)+COF [1]*cal (I-2, COF)+COF [0]*CAL (I-1, COF)
s=0
I를 위해 (100) :
s +=cal (200000, cof_t )
인쇄물)
s=str (s) [-2000:-1000]
key=md5 (s) .HexDigest (). decode ( 'hex')
Check=SHA256 (key) .HexDigest ()
verify='2CF44EC396E3BB9ED0F2F3BDBE4FAB6325AE9D9D9EC3107881308156069452A6D5'
assert (check==확인)
aes=aes.new (key, aes.mode_ecb)
data=flag + (16-len (플래그)%16)*'\ x00'
print (aes.encrypt (data) .encode ( 'hex'))
#4F12B3A3ADC4146386F473226F02BD03114A404BA4CB2DABAE213ECEC451C9D52C70DC3D254B5AF8A304AFAFED87
질문 팁에 따르면, 나는 재귀 공식을 행렬로 변환하는 것을 생각했습니다 (재귀 시퀀스의 일반적인 용어 공식을 해결하려면 선형 대수를 참조하십시오 _wdq347의 블로그 -CSDN 블로그)
1049983-20220829111943877-1568817961.jpg

Hashlib import Md5, SHA256에서
Crypto에서 Cipher Import AES에서
cof_t=[[353, -1162, 32767], [206, -8021, 42110], [262, -7088, 31882], [388, -6394, 21225], [295, -9469, 44468], [749, -3501, 4059] 10210], [354, -5383, 18437], [491, -8467, 26892], [932, -6984, 20447], [731, -6281, 11340], [420, -5392, 44071], [685, -6555, 40938] 47959], [182, -9857, 49477], [593, -3584, 49243], [929, -7410, 31929], [970, -4549, 17160], [141, -2435, 36408], [344, -1949] -7457, 40587], [765, -7011, 32097], [700, -8534, 18013], [267, -2541, 33488], [249, -8934, 12321], [589, -9617, 41998], [840, -1166, 22814] -5660, 41003], [206, -7195, 46261], [784, -92
 
뒤로
상단