문제에 아른헴 CrackRTF 솔루션

이 질문은 문제 해결의 충분한 수의 참조를 만들고, 이해하려고 노력

우선, 첨부 파일을 다운로드 한 후, 나는에서 IDA (안 포격, 다행히 아무 쉘)에 직접 있도록 개방하는 암호 등을 한 다음 당겨 후, 그 EXE를 발견 한 후 풀 후, 그림 삽입 설명 여기
주요 기능은 다음 main0를 입력해야 :
그림 삽입 설명 여기
pbData를 입력하고, 길이는 6 자 인 필요 발견 2에서
와 (3) 디지털 ASCII 코드로 변환되어, 사용 : HTTPS : //blog.csdn.net/zmx2473162621 / 103937585 / 기사 / 세부 사항
및 (5) strcat와 사용 : HTTPS : //blog.csdn.net/zmx2473162621/article/details/103937695

우리는이 디지털 입력에 다음이 100,000보다 커야하지만,이 시간, 우리가 믿는 이유가 있음을 발견 할 것이다 그 다음하지 않을 경우, 사용 atoi 함수 기능보다 이상을 충족하는 이상으로 변환 할 수 없기 때문에, 디지털되는 입력 문자열 (100) 000!
입력의 뒷면에 부착 된 "@DBApp"다음에,
그 함수가 우리 안으로 돌아 가야한다, 발견 :
그림 삽입 설명 여기
나는 확인이 일이, 암호화 라이브러리, 그가 암호화 알고리즘을 선택, 우리는보고 ... 암호화의 결과는 다음과 같습니다 6E32D0943418C2C33385BC35A1470250DD8923A9는,이 메인 함수 내부에, 다음 (40)의 길이를 보면, 당신은 SHA1 암호화를 추측, 40 평 후 암호화 한 후 암호화 프로세스 이야기, 당신이 직접 폭력!

##import hashlib
##flag = "@DBApp"
##
##for i in range(100000,999999):
##    s=str(i)+flag
##    x=hashlib.sha1(s.encode())
##    if x.hexdigest()=="6e32d0943418c2c33385bc35a1470250dd8923a9":
##        print(str(i)+flag)

得出123321@DBApp,所以密码是123321
第一层密码破解出来了,然后看第二层:第二层大体差不太多,只是把123321@DBApp,追加到了输入的后边,然后发现:
그림 삽입 설명 여기
也是一个加密,但是应该不是sha1加密了,看加密后的27019e688a4e62a649fd99cadaafdb4e,是32位的,那么就有理由猜测是md5加密,查了一下,md5加密是不可能被暴力破解的,因为有6+6+6个字符
所以就有一些不知所措,然后看别人的分析,发现里面还有一层if,就进去
그림 삽입 설명 여기
之后发现,这是个啥,就跟着大佬的思路去走,然后看见FindResourceA( )查找资源,(百度的),然后就是找到这个AAA文件,这时候也不知道改咋办,就接着跟着大佬的思路走,发现要用그림 삽입 설명 여기
这个软件打开这个exe文件,所以打开一下,发现:
그림 삽입 설명 여기
这个里面有数据;先放这里,然后继续看,接下来就是加载资源什么的,然后再看到CreateFileA,前有一个函数,进去:
그림 삽입 설명 여기
就是AAA取出的数与输入的数据(因为%v5了,所以就6个)异或一下,然后就得出结果,接下来的地方我也没看懂,大佬说的异或出来的结果应该是rtf文件的头文件,我就直接用winhex打开一个头文件,然后看一下格式:
그림 삽입 설명 여기
取前六个就可以了,然后和AAA前六个异或一下,就可以得到输入;
py代码:

rtf=[0x7b,0x5c,0x72,0x74,0x66,0x31]

aaa=[0x05,0x7d,0x41,0x15,0x26,0x01]

flag=""
for i in range(6):
    tmp=rtf[i]^aaa[i]
    flag+=chr(tmp)

print(flag)

得到flag:~!3a@0
第二层密码,然后输入,会发现在本目录下多了一个rtf文件,然后就得出来了flag:Flag{N0_M0re_Free_Bugs}

게시 29 개 원래 기사 · 원의 찬양 (13) · 전망 2734

추천

출처blog.csdn.net/zmx2473162621/article/details/103937462