제목 : CTF의 암호화 연습 2

一、js代码分析之编码转换​

WRITEUP:OPEN index.htmlscript src='script-min.js'/script //먼저 .js 스크립트 유형='text/javaScript'var ic=false; #기본 IC 값은 false var fg=''입니다. 함수 getflag () {//함수 함수의 getfflag 버튼은 해당 이벤트 var token=document.getElementById ( 'sectoken'). //#텍스트 입력 상자의 값을 get token ic=checktoken (token); //확인 및 할당하려면 함수 checkToken (토큰)을 호출합니다. 함수 패키지에는 fg=bm (토큰); //showflag ()를 할당하려면 함수 checktoken (token)을 호출하여 showflag () function} function showflag () {//showflag () 함수의 출력 함수 var t=document.getElementById ( 'flagtitle'); var f=document.getElementById ( 'flag'); t.innerText=! IC? '당신은 아래에 깃발을 얻었습니다 !' : '잘못!'; t.classname=! ic? 'RightFlag': '잘못된 플래그'; f.innertext=fg; }/스크립트/헤드 바디 h1flag 손에 깃발을 가져 오기 위해 일부 토큰의 ptype ./p ptips: 플래그는 손에 있습니다 ./p div p spantoken3360/span span spaninput type='sectoken'//span/p p input type='vall!' onclick='getflag ()'//p2. 버튼을 클릭하면 getflag 함수가 트리거됩니다. 나는 거짓으로 기본적으로. CheckToken (토큰) 함수를 호출하므로 CheckToken 기능이 핵심 지점임을 의미합니다.
1049983-20210116190641610-327204732.png
3. CheckToken 기능을 열고 내용을 확인하십시오. 깃발이 가짜 고정
1049983-20210116190642196-1239862292.png
4 일 수 있습니다. 그러나 입력 후에도 여전히 오류가 발생하므로 FG=BM (토큰) 만 있습니다. 이 코드에는 문제가 있습니다.
1049983-20210116190642761-818150915.png
5. IC를 직접 검색하십시오. 즉, IC 가이 측면에서 거짓이되어야 함을 의미합니다.
1049983-20210116190643295-127675380.png
6. 왼쪽의 아이콘 아래의 중단 점을 클릭 한 다음 버튼을 클릭하고 성공적으로 파산했습니다. 함수 매개 변수 S는 입력 한 변수라는 다음 S의 길이를 A와 비교 한 다음 S 값을 사용하여 3과 값을 빼냅니다. 문제가되지 않으면 True를 반환하십시오. 따라서 진실을 반환하는 S를 반대로 추론하십시오. 솔루션 코드는 다음과 같습니다.
s='' '
A:의 I를 위해
s +=chr (i -3)
인쇄물)
1049983-20210116190643778-1376094959.png
8. Token Box
1049983-20210116190644283-660183141.png
9에 Security-XBU를 입력하십시오. 마지막으로 FLAG:RENIBYD8FGG5HAWVQM7TDQ

二、base64编码之键盘密码​

WRITETUP:1을 얻습니다. 파일을 열면 두 개의 16 진 문자열 636A5635279427363446C4A49454A7154534230526D6843 56445A31614342354E326C4B49467A57694269614530672. 육각형 문자열을 asciihttp://www.ab126.com/goju/1711.html로 변환하십시오. Base64
1049983-20210116190645986-89071016.png
get : r5yg lp9i bjm tfhb t6uh y7ij qsz bhm4. 4 글자마다 중간에 공간이 있음을보고 키보드를보고 키보드 암호, 즉 몇 글자가 키보드의 글자를 둘러싸고 있음을 알게됩니다. 예를 들어, r5yg는 서라운드 a t, lp9i는 a o o o o o입니다. 각 문자 그룹으로 둘러싸인 문자를 찾아 깃발을 형성하십시오. (접두사를 추가 할 필요 없음) 5. get : r5yg-t, lp9i-o, bjm-n, tfhb-g, t6uh-y, y7ij-u, qsz-a, bhm-n6. 마지막으로, FLAG:TONGYUAN

三、工业流量包分析​

WRITEUP33601. 트래픽 패킷을 열고 ARP, UDP, SNA 프로토콜에 대한 트래픽 패킷이 있으며 그림과 같이
1049983-20210116190646894-14432056.png
1049983-20210116190647403-33300728.png
2와 같이 많은 양의 UDP 트래픽이 있습니다. 먼저 UDP 트래픽 패킷을 분석하고 길이가 많은 UDP 트래픽 패킷이 많으며 총 길이가 나타납니다. 16 17 12 14 10 18 19 20 22 25 32 89 95 104 105 116 131 137 524 528,이 길이 중에서 12, 89, 104, 105, 131, 137이 한 번만 나타나는 경우가 많습니다. 한 번만 나타나는 패킷.
1049983-20210116190647894-1525626995.png
3. 여기서 UDP 스트림 추적은 12 개의 길이로 수행되며 의심스러운 캐릭터가 발견됩니다.
1049983-20210116190648614-263546795.png

4. 문자열 666C61677B37466F4D3253746B6865507A7D를 추출하여 해당 ACII 코드 http://www.ab126.com/goju/1711.html
1049983-20210116190649365-668088756.png
5. FLAG {7fom2TKHEPZ} 33361110111011110111011111011111011111111111111111111111111111111111111111111111111111까지 해당 ACII 코드로 변환합니다. 1. 첨부 파일을 다운로드 한 후 큰 텍스트라는 것을 알았습니다. 텍스트를주의 깊게 관찰 한 후, 나는 텍스트에 고의적으로 대담한 대문자가 많이 있다는 것을 알았습니다.
1049983-20210116190649976-606127678.png

2. 수도를 필터링하십시오
CATF590C0F99C014B01A5AB8B611B46C57C.TXT | GREP-O '[A-Z]'| TR-D '\ N'여기서 :
Grep -o는 일치하는 문자열 tr -d 삭제 지정된 문자
1049983-20210116190650668-734421655.png
3 만 표시합니다. 필터링 된 문자 얻기 : Zeroonezerozerozerozeroonezeroonezeroonezeroonezeroonezeroonezeroonezeroonezeroonezeroonezeroonezeroonezeroonezeroonezeroonezero ONEONEZEREZERONEONEONEONEONEENEREONEZERONEZERONEZERONEZERONEZERONEZERENEREZERZERZEROZEREZERONEONEZERZEREZEREZEROONEZEROONEZERONEZEREZEREZERZERZERZEREZERONEONEZEREZEREZERONEZERONEZEROONEONEONEONEONEONEZERENEZERENEZERENEZERENEZENEZENEZERENEZERENEZERENEZERONEZERZEREZERENEONEONEZE ROONEONEONEZEROONEZEROONEONEONEENEZERONEZERONEZERONEZEREZEREZEREZERONEZERONEZEROONEZEROONEZEREZEREZEREZEREZEREZERONEZEREZEREZEREZEREZEREZERONEZEREZERONEREZERZEREZEREZERO ONEZERONEZEROONEZEROONEZEROONEZEROONEZEROONEZEROONEONE4. 기사에서 모든 대문자를 추출하고 0과 1으로 구성된 문자열을 얻으십시오. 숫자 0 및 1을 숫자 1으로 바꾸어 바이너리 표현 숫자를 얻은 다음이 숫자를 문자열로 변환합니다.
0100001001001001010101000100100100100100110101000100011001110110100001001001100100001100110101111110011 00010110111111111111111100001001001001101001001100011111111111001101001001001001101110011001101111101
5. 온라인 바이너리 - 문자열 :
1049983-20210116190651285-1781803721.jpg
6.Python 스크립트 획득
#Coding:UTF-8FROM 문자열 수입 대문자
crypto.util.number import long_to_bytes
Def Solve () :
f: #datle.txt as as f: #data.txt는 olope ( 'data.txt', 'r')를 사용하여 위에 필터링 된 대문자입니다.
data=f.read ()
cip=''
데이터 :의 C의 경우
대문자 인 경우 3:
CIP+=c
cip=cip.replace ( 'Zero', '0')
cip=cip.replace ( 'one', '1')
Return long_to_bytes (long (cip, 2))
__name __=='__ main __': 인 경우
print solve ()
1049983-20210116190652418-619045835.png

7. 깃발 얻기 : bitsctf {h1d3_1n_pl41n_5173}

四、文本中有规律的大写字母​

질문 설명 : Fady는 당신이 신인이라고 생각했고 그가 게시 한 내용을 보는 것을 두려워하지 않았습니다. 그는 친구들에게 평범한 텍스트로 다음을 보냈습니다. P=0xA6055EC186DE51800DDDDDD6FCBF0192384FF42D707A55F57AF4FCFB0D1DC7BD9 7055E8275CD4B78EC63C5D592F567C66393A061324AA2E6A8D8FC2A910CBEE1ED9 Q=0xFA0F9463EA0A93B929C099320D31C277E0B0DBC65B189ED76124F5A1218F5D 91FD0102A4C8DE11F28BE5E4D0AE91AB319F4537E97E97ED74BC63E972A4A9119307 e=0x6d1fdab4ce3217b3fc32c9ed480a31d067fd57d93a9ab52b472dc393ab785 2FBCB11ABBEBFD6AAAE8032DB1316DC22D3F7C3D631E24DF13EF23D3B381A1C3E 04ABCC745D402EE3A031AC2718FAE63B240837B4F657F29CA4702DA9AF22A3A01 9D68904A969DDB01BCF941DF70AF042F4FAE5CBEB9C2151B324F387E525094C41 C=0x7FE1A4F743675D1987D25D38111FAE0F78BEA6852CBABBEDA47DB76D119A3EFE24CB04B94449F53BECD43B0B46E269826A983F832ABBBB7A7E24A4AC 8344ed5C20F51E268186D24C76050C1E73647523BD5F91D9B6AD3E86BBF912658 8B1DEE21E6997372E36C3E742847347489182965086E0DC523ED23C386BB520 그는 우리의 암호 해독 기능 쓰기 :을 심각하게 과소 평가했습니다
1. 질문의 16 진수 유형을 소수점으로 변환합니다.
P=869522411503DOCTYPE5850657111973929603627134786101811381684843310817772517 24030872198128017695392696427341394692321761207006107496533302611389853049
Q=130967498239562807893093616192673136955083801075399508616099067145714985 02884697636982960384583841424972203851444351198874971414804975486079751
E=766297813873972426431167098743175782714413925556392807529834168670153073 520143866486739421791381558178218663648159185965227493031187833624358994 867175044572333364982956317635394981714997732764355819103705959439570436120 5962111489732707756573946764130942694290065376811474983298999999800641
C=8980138943569569573984069547075984927639234185685360303323546082787583233104 3119736437911111769703259483590290058204039436748082980089723192338077427838935 8031404278064633333362614933672494854865041439061149419625092476244194480 03604874406282213609341704339025169015252280292002222643430028280630082. 스크립트를 통해 RSA의 M 값을 얻으십시오
# 코딩=UTF-8
GMPY2 가져 오기
crypto.util.number import *에서 *
GMPY2에서 Iroot 가져 오기, 반전
P=869522411503DOCTYPE5850657111973929603627134786101811381684843310817772517 24030872198128017695392696427341394692321761207006107496533302611389853049
Q=130967498239562807893093616192673136955083801075399508616099067145714985 02884697636982960384583841424972203851444351198874971414804975486079751
E=766297813873972426431167098743175782714413925556392807529834168670153073 520143866486739421791381558178218663648159185965227493031187833624358994 867175044572333364982956317635394981714997732764355819103705959439570436120 5962111489732707756573946764130942694290065376811474983298999999800641
C=89801389443569569573984069547075984927639234185685360303354608278758333331043119736437910117 697032594835902900582040394367480829800897231925233807742783893580314042780646433331366149333499
 
뒤로
상단