분류 전체보기

Name이 CodeEngn 일때 Serial을 구하시오 이전포스팅인 https://imoracle.tistory.com/entry/Reversing-CodeEngn-Basic-RCE-L14 [Reversing] CodeEngn - Basic RCE L14Name이 CodeEngn 일때 Serial을 구하시오(이 문제는 정답이 여러개 나올 수 있는 문제이며 5개의 숫자로 되어있는 정답을 찾아야함, bruteforce 필요)  라고한다.  브루트포스가 무엇이냐면 무차별 대입imoracle.tistory.comhttps://imoracle.tistory.com/entry/Reversing-CodeEngn-Basic-RCE-L15 [Reversing] CodeEngn - Basic RCE L15Name이 Cod..
Name이 CodeEngn 일때 Serial을 구하시오라고 한다. 프로그램 실행모습옛날 델파이7을 만지작거릴때의 글꼴이 떠오른다. 그룹박스도 특유의 델파이 느낌이 있다. PEID 로 본결과 패킹은 되어있지 않았고 델파이로 만들어진게 맞다. 이전 포스팅과 분석방법은 같다. 단지 개발언어의 차이일 뿐https://imoracle.tistory.com/entry/Reversing-CodeEngn-Basic-RCE-L14 [Reversing] CodeEngn - Basic RCE L14Name이 CodeEngn 일때 Serial을 구하시오(이 문제는 정답이 여러개 나올 수 있는 문제이며 5개의 숫자로 되어있는 정답을 찾아야함, bruteforce 필요)  라고한다.  브루트포스가 무엇이냐면 무차별 대입imora..
Name이 CodeEngn 일때 Serial을 구하시오(이 문제는 정답이 여러개 나올 수 있는 문제이며 5개의 숫자로 되어있는 정답을 찾아야함, bruteforce 필요)  라고한다.  브루트포스가 무엇이냐면 무차별 대입공격으로, 예를 들어 2010년대만 해도 회원가입을 할 때인증절차없이 이름 주민번호만 넣으면 가입이 되곤 했었는데 이를 이용해 이름과 생년월일만 알고 있다면 주민번호 뒤7자리에 무차별 적으로 값을 계속 넣어 결국 올바른 주민번호를 뽑아냈던 그런 방법이다. 어쨌든 이제부터 살펴보자 프로그램 실행화면당연히 틀렸다고 나온다.  PEID를 살펴보자 upx 패킹이 되어 있어서 언패킹을 해주었다. IDA로 살펴보자 대충 타고 따라가다보면 분기점이 나온다. 분기점 우의 cmp eax, esi로 값을 ..
정답은 무엇인가 를 묻고있다. 프로그램 실행화면대충 이런 프로그램이다.  PEID로 보니 C#으로 만들어진 프로그램이다. 패킹은 되어있지 않다.C#에서의 출력은 cw 이니...  그리고 이녀석 64비트 프로그램이다. x64Dbg로 열 수 있다. IDA, x64Dbg에 붙여보니 뭔가 이상하다 그래서 조금 찾아보니...C# 으로 만들어진 녀석들은 동적 분석도구로는 분석이 어렵다고 한다.그래서 전용 디컴파일 도구를 검색해보니 여러가지가 나오는데 그 중에서 "dotPeek"을 다운받았다. dotPeekSimple 클래스에서는 암호화와 복호화를 하는 로직이 들어있다.  SimpleTest 클래스를보니 훤히 다 보인다. MD5 알고리즘을 이용하는듯. Console.ReadLine() == str 에 브레이크 포인트..
Key를 구한 후 입력하게 되면 성공메시지를 볼 수 있다. 이때 성공메시지 대신 Key 값이 MessageBox에 출력 되도록 하려면 파일을 HexEdit로 오픈 한 다음 0x???? ~ 0x???? 영역에 Key 값을 overwrite 하면 된다.문제 : Key값과 + 주소영역을 찾으시오 라고한다. 프로그램 실행화면  IDA로 보자익숙한 녀석이 보인다. DialogFunc 를 타고 들어가자 MessageBox를 띄워주는 곳이 보인다. 그렇다면 Key값은 2049480383 인가? cmp eax, 7A2896BF 후 분기한다. 7A2896BF를 Decimal로 변환하면 2049480383이 나온다. Key값을 찾았다  이제 메세지 박스의 Text를 Key값으로 바꿔주면된다.  x32Dbg로 보자40353..
OEP를 찾으시오. / Stolenbyte 를 찾으시오.정답인증은 OEP + Stolenbyte 라고 한다. 실행시켜보자 프로그램 실행화면 어디서 많이 봤다. 그래도 혹시 모르니 언패킹 후 빠르게 찾아주자. 그냥 똑같다. https://imoracle.tistory.com/entry/Reversing-CodeEngn-Basic-RCE-L09 [Reversing] CodeEngn - Basic RCE L09StolenByte를 구하시오 라고 한다. StolenByte가 뭐냐고? 본인이 간단한 안티치트툴을 만들어보며 작성했던 pdf 파일에서 발췌해 왔다. 조금 더 덧붙이자면  안티 디버깅 기법중 하나이며, 단어의imoracle.tistory.com여기서 풀이한 프로그램과 똑같으며, OEP와 StolenByt..
OEP를 구한 후 "등록성공" 으로 가는 분기점의 OPCODE를 구하시오.정답인증은 OEP + OPCODE 라고한다. 프로그램 실행모습이번 회차에선 프로그램 실행모습은 크게 의미가 없다   패킹을 확인하자 ASPack 으로 패킹되어 있다.ASPack : UPX와 유사하지만 선호도가 낮다언패킹 : PUSHAD -> 압축해제 코드 -> POPAD -> RETN 으로 동작한다. UPX는 POPAD 이후 나오는 JMP 인스트럭션을 통해 OEP로 분기한것과 살짝 다르다 F9로 실행하니 PUSHAD 로 도착했다.밑으로 내리다보면 POPAD를 만나게 된다.POPAD 를 찾았고, 밑에 PUSH 0 과 RET에 브레이크포인트를 걸고 살펴보자PUSH 0 이었던 부분이 PUSH 445834 로 바뀌었다. 445834가 OE..
StolenByte를 구하시오 라고 한다. StolenByte가 뭐냐고? 본인이 간단한 안티치트툴을 만들어보며 작성했던 pdf 파일에서 발췌해 왔다. 조금 더 덧붙이자면  안티 디버깅 기법중 하나이며, 단어의 의미처럼 코드를 훔쳐 다른 곳으로 옮긴 것이다. OEP 주소의 코드를 분리해 점프 직전 Push로 넘겨준다. 프로그램 실행모습  언패킹 해주자  다시 실행하자메세지박스가 깨져서 나온다.UPX는 제일 위 사진의 설명처럼 upx0, upx1로 나뉘어 있다. Peview를 통해 보게되면SECTION UPX0 : 섹션 및 기타 초기화 코드 -> 압축코드가 해제될 곳SECTION UPX1 : 복호화 알고리즘 -> 압축코드가 저장된 곳 IDA로 보자12바이트만큼 NOP처리가 되어있다. 저 곳에 StolenBy..
OEP를 구하시오 라고 한다. 구해보자. Upx Unpacking 우선 언패킹 해주었다. 프로그램 실행 화면그냥 단순한 계산기 프로그램이다. 언패킹을 한 순간부터 OEP는 이미 구했다. 이전 Basic RCE L06 풀이에서 설명했다시피 https://imoracle.tistory.com/entry/Reversing-CodeEngn-Basic-RCE-L06 [Reversing] CodeEngn - Basic RCE L06Unpack을 한 후 Serial을 찾으시오. 정답인증은 OEP + Serial 이라고 되어 있다. Serial만 찾으면 되지만 OEP도 찾아보자 OEP ( Original Entry Point ): 패킹된 파일의 시작 부분을 의미한다. OEP 이전 실행 부분은imoracle.tistor..
컴퓨터 C 드라이브의 이름이 CodeEngn 일경우 시리얼이 생성될 때 CodeEngn은 '어떤것'으로 변경되는가라고 물어온다. 시리얼이 생성될 때 어떠한 과정을 거쳐 기존의 문자열이 다른 것으로 변경된다는 말이지 않을까? 프로그램 실행화면 IDA로 열어보자 GetVolumeInformationA 함수를 호출한다.지정된 루트 디렉터리와 연결된 파일 시스템 및 볼륨 관련 정보를 검색합니다 라고 msdn에서 설명하고 있다. lpVolumeNameBuffer 가 보이는데 지정된 볼륨의 이름을 받는 버퍼에 대한 포인터입니다. 버퍼 크기는 nVolumeNameSize 매개 변수로 지정됩니다.라고 msdn에서 알려준다. C드라이브의 이름이 CodeEngn 일 경우라고 했으니 저 인자가 저장된 곳에 드라이브 이름이 ..
Unpack을 한 후 Serial을 찾으시오. 정답인증은 OEP + Serial 이라고 되어 있다. Serial만 찾으면 되지만 OEP도 찾아보자 OEP ( Original Entry Point ): 패킹된 파일의 시작 부분을 의미한다. OEP 이전 실행 부분은 패킹된 파일이 메모리에로드되어 압축을 푸는 명령어가 들어있다.  EP ( Entry Point ) : 프로그램이 실행될 때 시작되는 지점을 가리킨다. 대부분의 프로그래밍 언어에서는 "main()" 함수가 이 역할을 수행한다. OEP는 언패킹한 프로그램의 EP와 같다. ImageBase 인 00400000 + 00001360 [ ep ] 를 해주면 00401360 으로 oep를 구했다. 프로그램 실행모습  UPX Packing이 되어있다. 언패킹 ..
이 프로그램의 등록키는 무엇인가 라고 묻고있다. 프로그램 실행화면텍스트박스가 2개인걸 봐선 전부 맞는 값이어야 통과가 되지 않을까 예상해본다. IDA로 열어보자열자마자 UPX라는 단어가 보인다. 분석을 어렵게 하기위해 Packing을 하는데 그 중 하나인 UPX Packing으로 패킹된거 같다.PEID로 다시 확인해보자.UPX 로 패킹된걸 확인했다. UPX는 언패커가 나와있기 때문에 손쉽게 언패킹이 가능하다. 언패킹을 해주자언패킹이 완료 되었다.다시 IDA로 돌아가면 기존엔 함수부분에 Start만 떴지만, 많이 뜨는 걸 볼 수 있다.string 검색을 해주자Wrong Serial try, again! 부분을 찾았다 따라가보자Registered_User.Text = "Registered User" 인 걸 ..
시유리
'분류 전체보기' 카테고리의 글 목록 (3 Page)