일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- vsCode
- c언어
- 라이트업
- 뭉뭉
- 풀이
- 시탭
- reversing.kr
- reversing
- 워 게임
- 강의
- ctf
- 라업
- 파이썬
- Basic
- 코드엔진
- 리버스 엔지니어링
- 2021
- ShaktiCTF
- web
- write up
- 드림핵
- hackingcamp
- 라이트 업
- PYTHON
- probgame
- 변수
- write-up
- 리버싱
- 히공
- 해킹캠프
목록Basic (14)
히공

20번을 풀어보겠습니다. 드디어 마지막 문제입니다. 이러한 문제입니다. 실행했을때 이런식으로 나옵니다. x32dbg로 열었습니다. 파일을 만드는 부분인것 같습니다. cmp eax, 0xffffffff로 eax를 비교하는데 eax가 0xffffffff가 아니여야 합니다. 그래야 ReadFile을 호출하는 부분으로 갈 수 있습니다. 여기 나와있는 파일이름을 만들어보았습니다. 다시실행 후 CreateFileA를 실행해보았습니다. 0xffffffff가 아닙니다. 1단계는 성공했습니다. 이제 저 파일에 아무 글자나 써보겠습니다. HxD로 1234를 넣었습니다. 0x402008에 1234 가 들어갑니다. 그리고 cmp로 [4021A0] 와 0x12를 비교합니다. 저 값을 살펴보니 4였습니다. 인자들을 확인해보겠습니..

19번을 풀어보겠습니다. 이러한 문제입니다. 실행화면 입니다. UPX패킹입니다. bp걸고 실행해줍시다. oep 입니다. bp부분에서 오류가 납니다. 다시실행하고 bp부분으로 들어왔습니다. 또 여기서 오류가 납니다. bp안으로 들어와봤습니다. IsDebuggerPresent가 보입니다. 다시실행 후 함수로 들어와줍니다. 이 부분을 je로 바꿔줍니다. 그리고 나서 이 함수를 검색해 줍시다. (함수 호출을 살펴봤는데 이 함수가 의심스러웠습니다.) 전부 bp 걸어줍니다. f9를 누르면 여기서 멈춥니다. 그리고 여기서 분기합니다. eax와 [ebx+4]를 비교합니다. bp걸고 확인해봅시다. 여기와 eax를 비교합니다. 0x2b70 = 11120 정답 : 11120

18번을 풀어보겠습니다. 이러한 문제입니다. 실행화면 입니다. check를 눌러보았습니다. x32dbg에서 문자열을 찾아보았습니다. 2번째를 더블클릭해서 봐봅시다. cmp eax,5 를 하고나서 eax가 5미만인지 체크합니다. 구글에 msdn GetDlgItemTextA 이라고 쳐서 return값을 알아보았습니다. 한마디로 문자열의 길이를 반환해줍니다. bp를 걸고 실행해봅시다. check를 눌러줍니다. 4076F0이 Name입니다. 분기점 입니다. 보면 제가 입력한 abcd와 1879321517CE7930를 strcmp로 비교하는것을 볼 수 있습니다. Check를 눌러보겠습니다. 잘뜹니다. 같은방법으로 CodeEngn을때 Serial을 구해봅시다. 입력해줍니다. 06162370056B6AC0하고 입력한..

17번을 풀어보겠습니다. 실행화면 입니다. 1234, 1234를 입력해보니까 아무 반응이 없습니다. Name이 한자리라고 해서 1,1 을 입력해보았습니다. 근데 Please Enter More Chars... 이라고 나오는군요. f8을 계속 눌러보니 제가 bp걸은 함수에서 gui창이 뜹니다. 저 함수에 enter을 눌러서 들어가서 문자열 참조로 Please를 찾아보면 아까 봤던 글자가 있습니다. 이런식으로 나옵니다. 위쪽부분에 bp를 걸고 를 입력하고 Check it! 을 입력해봅시다. 이런식으로 나왔습니다. 이곳은 Name값의 길이가 3이하인지 체크 하는겁니다. 문제에서 Name이 한자리라고 했으니까 저기 부분을 patch 하고 넘어갑시다. 다시 실행하고 입력해줍시다. 이거를 jmp로 바꿔줍니다. 그리..

15번 문제를 풀어보겠습니다. 이러한 문제입니다. name, serial을 입력하고 Check it ! 을 누르면 정답인지 아닌지 확인합니다. 이런식으로 확인합니다. 패킹은 안되어있습니다. x32dbg에서 실패했을때 나왔던 Try Again으로 검색해보았습니다. 이런 코드를 발견했습니다. bp가 있는곳이 분기점 입니다. 한번 Name에 CodeEngn, 비번에는 1234를 넣고 f9를 눌러서 eax값과 45B844의 값을 확인해보겠습니다. eax값 입니다. 제가 입력했던 비밀번호 입니다. 덤프 따라가기로 45B844의 값을 확인해보겠습니다. (dword ptr 로 받아오니 4바이트만 비교합니다.) 0x6160 입니다. (리틀엔디안이기 때문에 반대로 봐야합니다.) 0x6160은 10진수로 24928입니다...

14번을 풀어보겠습니다. 실행 화면 (앞으로 첫번째 입력을 name 두번째 입력을 비번이라고 하겠습니다.) pushad발견 oep로 가는 점프문 oep 틀렸을때 나오는 You Have 어쩌구 저쩌구로 가봅시다. 여기서 좀만 더 위로 올라가봅시다. 분기점에 bp를 걸고 실행한 후 name에는CodeEngn을 입력하고 비번에는 123을 입력해봅시다. 그리고 eax, esi값을 확인해봅시다. esi : 76193(10진수) eax : 123 제가 비번으로 입력한 값 입니다. 그러면 비번으로 76193을 입력해야 한다고 생각이 듭니다. 정답입니다. ++ 한번 비번을 만드는 루틴을 확인해보겠습니다. 입력한 상태에서 분석하면 편합니다. xor로 esi를 0으로 만들고 시작합니다. eax를 1로 만들고 시작합니다. ..

13번을 풀어보겠습니다. 정답을 구하라고 합니다. 그냥 정답을 입력하는 프로그램 입니다. C#으로 만들어졌습니다. 한번 디컴파일 해보겠습니다. dotpeek 으로 디컴파일 해보았습니다. visual studio로 열어주었습니다. str의 값을 알아내야 합니다. (C#을 몰라도 풀 수 있는 문제입니다. 저는 C# 몰라요.) 그냥 str를 출력하도록 변경 답 : Leteminman

12번을 풀어보겠습니다. 패킹은 안되어 있습니다. cmp, jne로 eax와 7A2896BF가 같으면 점프를 하지않고 맞췄다는 메세지박스를 출력합니다. 7A2896BF(16진수)는 10진수로 2049480383 입니다. 헥스 에디터로 오픈했습니다. (2번째 문제 풀때쓰던것) 이걸로 이제 맞았다고 출력되는 부분을 살펴봅시다. Congratulation부터 right key까지 출력되는 부분입니다. 2049480383이거를 복사 수정되었습니다. Key : 2049480383 영역 : 0D3B0D45 합치면 : 20494803830D3B0D45 입니다. 성공! 답 : 20494803830D3B0D45 ++ 추가로 컨트롤 + s로 저장하고 실행하면 오류가 뜹니다. 원인은 여기서 파일크기를 변경합니다. 이것이 문..