일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CodeEngn
- rev-basic-7
- L15
- basic_exploitation_000
- out_of_bound
- rev-basic-4
- off_by_one_001
- 포너블
- 코드엔진 베이직 13
- rev-basic-0
- Basic
- rev-basic-5
- rev-basic-1
- 드림핵
- 코드엔진 베이직
- L18
- L17
- Dreamhack
- rev-basic-2
- rev-basic-6
- coin1
- off_by_one_000
- RCE
- pwnable.kr
- basic_exploitation_001
- L16
- sd카드 리더기
- sint
- rev-basic-3
- Pwnable
- Today
- Total
목록분류 전체보기 (52)
서브웨이
아주 간결합니다. 왠지 어려울 것 같습니다. 패스워드만 찾으면 될 것 같네요. 일단 패킹은 안되어있습니다. 근데 디버거로 열려고하니 열리지가 않습니다. 한참을 헤매다가 찾아보니 C#으로 만들어진 파일은 닷넷프레임워크가 없는 환경에서는 분석이 되지 않는다고 합니다. 그럼 닷넷 디컴파일러 중에 프리웨어 중 아무거나 설치합니다. 저는 JetBrains의 dotPeek을 설치했습니다. https://www.jetbrains.com/decompiler/ dotPeek: Free .NET Decompiler & Assembly Browser by JetBrains dotPeek is a free tool based on ReSharper. It can reliably decompile any .NET assembl..
일단 키를 찾아봅시다. 성공메시지 위에 Dialog에서 Editbox에서 정수형을 받아오는 함수가 있는 것으로 보아 저걸 통해 키를 받아오는것으로 보이네요. 그러니 저곳에 중단점을 걸고 진행해봅시다. 간단히 12라는 수를 입력해봅시다. EAX에 C라는 값이 들어가는 것으로 보아 10진수로 받아서 저장하나봅니다. 왠지 맨밑에 7A2896BF를 비교를 해야할거같은데 저쪽에서 계속 돕니다. ESI의 값이 0일때까지 반복이니 ESI로 가봅시다. 별 의미없는 곳이네요... ESI가 0이 되는 지점에 중단점을 걸어줍니다. 7A2896BF가 키가 맞는 것 같습니다. 10진수로 변환한 2049480383를 입력해봅시다. 키는 찾았습니다. HxD에서는 간단히 이부분을 바꾸면 될 듯 합니다. 하지만 어차피 끝나는 부분만..
지금까지 해왔던 유형을 모아놓은 모양입니다. 어라 베이직 9번 문제랑 같은 파일인가 봅니다. 같은 파일 맞네요... 그럼 OEP는 40100C에서 Stolen Byte의 크기가 빠진 값이 되니 401000이고 Stolen Byte는 9번의 답과 같습니다. 해결
일단 패킹여부를 확인해봅시다. ASPack이라는 것으로 패킹이 되어있네요. 디버거로 봅시다. 보아하니 UPX랑 비슷한 방식인 것으로 예상됩니다. 첫번째 popad를 찾아봅시다. 왠지 ret 이후에 원래코드로 들어갈 것 같습니다. 맞네요. 그럼 OEP는 찾았습니다. 저 상태에서 모든 문자열을 찾아봅시다. 성공메시지가 바로 나옵니다. 해당 위치로 가보면 바로 전에 분기문이 보입니다. 저게 답입니다.
StolenByte가 뭔지는 모르겠지만 일단한번 봅시다. 패킹이 되어있네요. 일단 패킹을 풉시다. 패킹을 풀고 실행을 해보니 오류가 뜹니다. 흠... 원래는 이렇게 떠야 맞는데 언패킹하면서 문제가 생긴것 같습니다. 언패킹된 파일을 분석해봅시다. 시작부분이 nop로 되어있습니다 원래내용은 어디갔지 그럼 이쯤에서 Stolen Byte가 무엇인지 알아봅시다. https://muhan56.tistory.com/80 StolenByte StolenByte는 패커가 위치를 이동시킨 코드로써 보호된 프로그램의 코드의 윗부분(보통은 엔트리 포인트의 몇 개의 명령어) 이다. 이 부분의 명령어는 이동된 곳 이나 할당 받은 메모리 공간에서 실행된다. 보호된.. muhan56.tistory.com 위 블로그를 참고하면 일종의..