WARGAME/reversing 9

[코드엔진/CodeEngn] Advance RCE L03

실행파일 분석 문제를 실행하기 전에 exeinfo로 봅시다 패킹은 안되어있으니 바로 분석해봅시당 실행을 하면 이렇게 뜬다 좀 킹받게 살짝 투명하긴 한데, name와 serial을 입력받는 부분을 볼 수 있다. 문제에서 name이 CodeEngn일때의 시리얼값을 찾으라고 했으니 아마 name값에 따라서 시리얼값이 바뀌는것으로 예상된다. 실제로 아무거나 입력하고 check를 누르면 이렇게 뜬다 :) IDA 정적 분석 시작 함수는 다음과 같고 이 파일에 있는 함수들은 다음과 같다 이때 핑크색으로 되어있는 부분은 GUI 관련 함수인것 같으니 딱히 신경을 안써도 되고, 저기 start 밑에 있는 DialogFunc 부터 분석을 해보면 될 것 같다! 일단 엄청나게 크고... 우리는 저 메세지 출력 문자열을 찾으면 ..

WARGAME/reversing 2024.03.27

[코드엔진/CodeEngn] Basic RCE L13

실행파일을 열기전... 정적 분석을 하기 위해 IDA 로 돌려봤는데 오류뜨고 화면이 안 뜨네요... 일단 exeinfo로 열어서 파일을 살펴보겠습니당 언어가 C#으로 되어있고 .Net으로 되어있는것으로 보아 ILSpy로 볼 수 있을 것 같습니다 ^^ 우선 실행을 먼저 해보겠습니다 패스워드를 찾으면 되는 문제네용 ILSpy로 돌려봤습니다 ILSpy의 맛은 또 직접 실행할 수 있는거 아닐까요? 코드 저장하고 수정해봅시다 여기서 plainText를 암호화하여 생성하는 것을 볼 수 있고 우리가 입력한 값이 plainText와 같은지를 보고 있으므로 그냥 plainText를 프린트하면 될 것 같네요... 중간에 써주고 실행하면 나오네요 ㅎㅎㅎㅎㅎ

WARGAME/reversing 2023.11.13

[코드엔진/CodeEngn] Basic RCE L19

실행파일을 실행해보면 위와 같이 뜹니다. 그리고 시간이 좀 지나고 꺼지는 걸 알 수 있습니다. exeinfo로 분석한 모습입니다. upx 패킹이 되어있음을 볼 수 있으니 upx 언패킹을 합니다! 이제 분석을 해보려고 x32dbg로 분석을 하려는데 실행을 해보면 다음과 같이 제대로 창이 안뜨고 에러메세지가 뜹니다 우선 이 에러에서 AutoIt가 뭔지 찾아봤는데 AutoIt v.3.2.5.1 이하 버전들은 공식 디컴파일러가 디컴파일을 할 수 있다고 나와있는데 이 실행파일은 exeinfo에서 3.3 버전이라고 했으므로... ㅜㅜ 디컴파일러는 없고 그냥 분석에서 찾아야 할 것 같습니다 여기서 디버거를 탐지하는 함수를 찾아봤습니다 맨 위에 있는 거 더블클릭해서 들어가서 그래프로 보기 눌렀더니 아래와 같이!! 이렇..

WARGAME/reversing 2023.11.13

[dreamhack] rev-basic-3

파일 실행 실행을 해봅쉬다 문자열을 찾으면 메인함수를 쉽게 찾을 수 있을 것 같습니다!! 그럼 정적분석을 먼저 해봅시다~ 정적분석 8행의 sub_140001000 함수가 문자열을 검증하는 함수인가 봅니다. 이 함수 이름을 "check_input" 이라고 바꾸겠습니다 check_input의 함수를 한번 살펴봅시다 반복문에서 i가 18(hex, dec=24)까지 증가하며 byte_140003000 배열의 각 값이 i ^ *(unsigned __int8 *)(a1 + i)) + 2 * i 의 계산 결과와 같아야지만 Correct를 출력하는 것 같습니다. (이때 a1은 우리가 입력한 문자열) 여기서 알아야 할 것은 저 중간의 XOR(^) 연산인데, XOR 연산의 가장 대표적인 특징이 다음과 같습니다. if A ..

WARGAME/reversing 2023.09.22

[dreamhack] patch

실행파일 실행 먼저 실행파일을 실행해보면 다음과 같은 화면이 뜹니다. 이때, 플래그 값이 어떤 줄들에 의해 지워진 걸로 보이네요!! 문제 설명에 나와있듯이 flag를 가리게 하는 어떤 루틴이 있는걸로 보입니다. 정적분석 IDA 로 한번 정적 분석을 해보겠습니다. 보면 WinMain 이라는 메인함수가 제일 먼저 호출되고 있습니다. 지금 실행시켜도 알겠지만 이 친구는 WinAPI 를 사용한 GUI 실행파일입니다. 따라서 이 점을 참고하고 디컴파일된 코드를 보겠습니다. 여기서 함수들을 분석을 할건데, 저는 WinAPI에 대해서 잘 모르기 때문에 마이크로소프트의 공식문서를 활용하여 분석을 해보도록 하겠습니다. 여기서 LoadStringW 이라는 함수에 대해서 자세히 알아보자면, 지정된 모듈과 연결된 실행 파일에..

WARGAME/reversing 2023.09.22

[dreamhack] rev-basic-1

분석 시작~! ida 로 정적분석 해봅시다 옹~ 얘도 chall0 처럼 비슷하네요 함수 이름 싹다 바꿔줍시다 그러면 중간에 있는 저 sub_140001000 함수가 굉장히 거슬리죠? 이 함수 코드를 함 봐봅시다 당황쓰... a1[] 이라는 리스트에 하나하나를 대입해서 아스키코드와 같은지 보고 있는 것 같다! 그럼 저 아스키 코드를 하나하나 변환해보면 답이 나오겠죠?? 꿀팁! IDA 에서 숫자를 문자로 (아스키코드) 바꾸고 싶다면 r 을 누르면 됩니다... 그럼 이렇게 바뀌어용~~~~ 이들을 다 조합해보면 답은? Compar3_the_ch4ract3r ^_^

WARGAME/reversing 2023.09.15

[dreamhack] rev-basic-0

분석을 해봅쉬다 먼저 실행을 해보면 다음과 같이 나온다 이때 아무거나 입력하면 당연히 실행이 종료되겠죠 IDA 로 정적분석을 해서 디컴파일을 해봅시다 여기서 sub_14001190 은 printf() 함수이고 sub_1400011F0 는 scanf() 함수로 보이네용 우리 가독성을 위해 각 함수명을 바꿔봅쉬다 이러면 조금 더 보기 편하죠 그럼 저 중간에 있는 sub_140001000 함수가 뭔지 알아야겟다! 당황쓰.. 바로 strcmp 함수였네요?! 저기서 Compar3_the_str1ng 이라는 문자열과 동일한 경우에만 1 을 리턴하고 있습니다 같지 않다면 0이 리턴되겠죠 그럼 메인 함수에서 같은 경우에는 Correct 가 나오고 안 같으면 Wrong 이 실행되고 종료되는 거겠네요... 그럼 정답은 ?..

WARGAME/reversing 2023.09.15

[Crackme] #1

학교 수업 중에 진행되었던 크랙미 1번을 풀이해봅시다~~ 실행을 하면 패스워드를 입력하라는 창이 뜨고 아무거나 입력해보면 프로그램이 꺼진다. 알맞은 패스워드를 입력해야지 실행되는것으로 보임! 아이다 프로로 먼저 분석을 해보자 일단 psedocode를 보면 다음과 같이 나와있는데, 무조건 패스워드의 길이는 24여야지 넘어가는것으로 보인다. 이부분은 어셈블리에서도 확인이 가능하다 여기에서 패스워드를 입력받고 esp+0ACh+Format 이라는 곳에 아까 저장해뒀던 eax 를 넣고 있고 (우리가 입력한 값) eax에 strlen이라는 함수를 불러 문자열의 길이를 저장하고 있다. 그 후, eax를 16진수로 18h, 즉 10진수로 24 길이와 비교하고 있다. 만약 아닐 경우 함수로 점프를 하지 못하게 되어 밑에..

WARGAME/reversing 2023.09.11

[abex crackme] 2번

2번을 실행해보면 다음과 같은 화면이 나온다 그리고 아무거나 입력해보면 다음과 같이 메세지 박스가 뜬다 디버거로 분석을 해보자. 우리는 저 문자열을 참조한 부분을 찾아보자. 다 중단점(F2)을 걸어놓고 더블클릭해서 자세히 봐보자. 그리고 점프 문들 위로 함수 호출 하는 부분들도 브레이크 포인트를 걸고 아무 값 입력해서 체크 버튼을 눌러보면 다음과 같다 이때, 계속 진행을 하다가 보면 Congratulations을 하기 위해서는 00403332에 있는 명령인 점프를 하지 않고 그냥 밑으로 진행을 해야한다. 그러면 test ax,ax 를 했을때 ZF 가 0으로 설정이 되면 안된다. push edx 와 push eax 에서 스택에 값을 넣고 있는데, 이때 스택을 따라가 보면 다음과 같다 여기서 aaaaaaaa..

WARGAME/reversing 2023.09.11