일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 히공
- 드림핵
- 리버싱
- web
- ShaktiCTF
- 풀이
- 코드엔진
- hackingcamp
- 강의
- 파이썬
- ctf
- write-up
- write up
- 변수
- 리버스 엔지니어링
- 시탭
- reversing
- 라업
- PYTHON
- reversing.kr
- Basic
- c언어
- vsCode
- 라이트 업
- 뭉뭉
- 워 게임
- probgame
- 라이트업
- 2021
- 해킹캠프
목록히공 (61)
히공
오늘은 코드엔진 basic 6번 문제를 풀어보겠습니다. 이러한 문제입니다. 실행시켰을때 입니다. UPX로 패킹이 되어있습니다. pushad 발견 popad 후 jmp 원본코드 그러면 OEP는 00401360 입니다. 문자열 찾기로 틀렸을때 나오는 Wrong serial!!! 로 이동해봅시다. 0040107D가 분기점입니다. 브포 걸고 실행한 다음에 12345 입력 후 Check Serial 클릭 401290을 호출한다. 그리고 내가 입력한 Serial이랑 AD56DFS547을 push한다. 반환값이 1이다. 일단 strcmp라고 추측해볼 수 있다. 다시 실행해서 AD46DFS547를 입력해보니 반환값이 0이다. 이제 f9로 실행을 하면 잘 동작한다. 그러면 Serial은 : AD46DFS547 OEP :..
립케알에 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를 넣어보겠습니..
코드엔진 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..