KoreanHackerTeam
Moderator
MISC
签到题
네트워크 보안에서 8 개의 객관식 질문에 대해 Baidu는 답변을 검색 할 수 있습니다. 여기서 몇 가지 질문에 대한 답을 알고 있다면 열거를 사용하여 퍼즈 답변을 테스트하고 깃발을 얻을 수 있습니다.
FLAG:
플래그 {A236B34B-8040-4EA5-9E1C-97169AA3F43A}
RE
re693
첨부 파일을 직접 다운로드하여 Golang으로 열어주요 함수를 살펴보면 6 개의 매개 변수가있는 함수를 입력하고 세 번째는 glihr이며 3 번이라고 불리며 chzv5op8romlakb6으로 호출됩니다.
6 개의 매개 변수가 있고 세 번째는 GLIHR:이라는 첫 번째 함수를 입력합니다.
첫 번째 함수를 입력하고 6 개의 매개 변수가 있고 세 번째는 glihr입니다.
입력 3 개의 호출이 있고 chzv5op8romlakb6:이라는 함수를 호출합니다.
3 개의 발신자가 있고 chzv5op8romlakb6이라는 함수를 호출하는 두 번째 함수를 입력하십시오.
직접 글로벌 검색, 첫 번째 기능은 6 개의 매개 변수가있는 Zlxdjkh3ozn4mayd입니다.



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='')
두 번째 단락에는 기능이 포함됩니다

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='')


플래그 {3A4E7644935C4148CE3DA2B46019F75}
re694


IDA를 열고 키워드 문자열을 찾은 다음 키 기능을 찾습니다.

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

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

$ 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 '
또는

비밀 수입 플래그에서
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 블로그)

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