일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 리버스 엔지니어링
- 해킹캠프
- Basic
- 워 게임
- PYTHON
- write up
- 풀이
- 파이썬
- 변수
- 라이트 업
- 시탭
- 코드엔진
- 라이트업
- probgame
- hackingcamp
- c언어
- 드림핵
- ctf
- ShaktiCTF
- 라업
- 리버싱
- 히공
- 2021
- 뭉뭉
- vsCode
- 강의
- write-up
- reversing.kr
- reversing
- web
목록전체 글 (108)
히공
립케알에 2번째 문제를 풀어보겠습니다. 이러한 프로그램입니다. Reame.txt입니다. 시리얼이 저 값일때 네임값이 뭐냐고 물어보는군요. ida 헥스레이로 분석해보니 Name값으로 어떤 문자열을 만들고 시리얼하고 비교하는 문제 같습니다. 아무값이나 넣어보고 디버거로 확인해 봅시다. scanf로 받는 부분입니다. [esp+10]부분이 입력한 네임값 입니다. 여기가 이 for문의 해당하는 부분입니다. 40107c에서 ecx에 esp+esi+C부분에 있는 값을 넣는데 보니까 0x10,0x20,0x30이 배열형태처럼 저장되어 있었습니다. ecx 에는 0x10,0x20,0x30이 번갈아 가면서 들어가고, edx 에는 네임의 요소들이 하나하나 들어갑니다. 그리고 둘을 xor연산한 값을 16진수 형태로 문자열로 만들..
립케알 문제중 첫번째 Easy Crack문제를 풀어보겠습니다. 실행화면 아무값이나 넣고 확인을 누르면 틀렸다는 메세지가 출력됩니다. 아까 봤던 틀렸다는 메세지로 찾습니다. 분기점 입니다. 분기점에서 올라가면서 분석해봅시다. 아무값이나 넣어보고 브포를 걸어서 분석해 봅시다. cmp로 [ebp+5]를 'a' 하고 비교합니다. 저희는 123456를 넣었는데 2부분하고 a를 비교하는것을 보면 ebp+4부터 입력한 문자열의 시작이라고 볼 수 있습니다. 일단 그러면 2부분을 a로 바꾸어서 보겠습니다. 5y하고 3456을 어떤함수에 인자로 넣어줍니다. 함수의 반환값이 0이여야 401135로 점프를 안합니다. (401135로 점프하면 틀렸다는 메세지 출력) strcmp인거 같으니 한번 3456부분에 5y를 넣어보겠습니..
05번 문제를 풀겠습니다. 이러한 문제 입니다. 실행시키면 이러한 창이 나타납니다. 문제를 풀기 전에 PEID라는 것으로 저 프로그램의 정보를 확인해 봅시다. 여기를 클릭하시면 다운하실 수 있습니다. (출처 : playthegame00.tistory.com/5) 실행시키고 05.exe를 열어보면 upx패킹이 되었다고 알려줍니다. 자 UPX 패킹이란 파일 크기를 줄이고 내부 코드와 리소스를 감추기 위한 목적으로 사용 됩니다. 실행 압축 방식으로 파일 내부에 압축해제 코드를 포함하고 있기 때문에 실행되는 순간에 메모리에서 압축을 해제하여 바로 실행할 수 있습니다 한마디로 어떠한 주소에 OPCODE(기계어)를 작성하고 그 작성한 주소로 jump하게 됩니다. x32dbg로 보면 pushad에서 멈췄습니다. UP..
4번 문제를 풀어보겠습니다. 이러한 문제입니다. 실행 했을때 이런식으로 뜨는군요. x32dbg로 실행했을때는 디버깅 당함이라고 출력됩니다. 자 그러면 문자열 검색으로 디버깅 당함을 검색해 봅시다. 여기를 들어가 봅시다. 보면 IsDebuggerPresent라는 함수의 반환값을 가지고 디버깅 당함, 정상을 분류하는것으로 볼 수 있습니다. 부가설명 : je,jne 는 zf(제로플래그)라는 것의 따라 점프를 할지 말지를 결정합니다. eax가 참일때 (0이 아니란 뜻) test eax, eax를 실행하면 zf가 0이 됩니다. je는 zf가 0일때 점프하지 않고, jne는 zf가 0일때 점프합니다. 같은 원리로 cmp도 zf를 바꾸는 역할을 합니다.(조금 달라요) 그러면 IsDebuggerPresent가 디버깅 ..
코드엔진 basic 03를 풀어보겠습니다. 실행했을 때 화면 입니다. 여기서 위에 Az라고 있는 것을 눌러주시면 이런창이 뜹니다. 한번 페스워드 같아보이는 2G83... 을 눌러봅시다. 이런 화면으로 넘어왔습니다. vbaStrCmp를 호출하는 군요. 2G83G35Hs2를 입력해서 맞다고 뜨면 vbaStrCmp가 문자열 비교 함수 라고 생각할 수 있지요? 맞다고 뜨는 군요 정답 : vbaStrCmp
코드엔진 basic 2번 문제를 풀어보겠습니다. 실행파일이 손상되었다고 합니다. 실제로 실행이 불가 한것을 볼 수 있습니다. 한번 HXD로 분석해 보겠습니다. 여기 를 눌러서 다운 받을 수 있습니다. (hxd) 실행해 주세요. 이런식으로 뜹니다. 여기다가 02.exe를 끌어서 넣어보세요. 이런식으로 나오는데 GetDigItem같은 자주 사용하던 함수들 이름이 보입니다. 스크롤 해서 밑으로 내려가 보겠습니다. 어머! 너무 대놓고 비밀번호가 있습니다.!! 정답 : JK3FJZh
오늘은 코드엔진 basic 1번 문제 풀어보겠습니다. MessageBox로 나오는 군요. 확인을 눌러보니 또 나왔습니다. x32dbg로 확인해 보았습니다. 0x401026부분이 성공, 실패로 가는 분기점 입니다. cmp, je를 같이 해석해보자면 if (eax==esi) 라고 볼 수 있습니다. 그리고 GetDriveTypeA를 호출합니다. docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getdrivetypea GetDriveTypeA function (fileapi.h) - Win32 apps Determines whether a disk drive is a removable, fixed, CD-ROM, RAM disk, or network..
보호되어 있는 글입니다.