본문 바로가기
728x90
반응형

리버싱8

리버싱 - go 언어 .exe 파일 main 함수 및 print 함수 찾기 main 함수 찾은 방법 IDA에서 함수 목록을 보니깐 main_main이 그대로 노출되어 있었음 (x64dbg에도 ida처럼 서브루틴을 리스트화하는 기능이 있었으면 좋겠다.. ) x64dbg에서는 함수들을 찾기 어려웠는데 코드를 한줄한줄씩 천천히 실행을 하면 스레드 문제인지 자꾸 예외 오류가 뜬다.. (찾아보니깐 SEH: Structured Exception Handling라는 것 같다. 주로 잘못된 메모리를 참조하는 경우 발생) Exception 0x80000004 0x0 0x0 0x623c1d PC=0x623c1d runtime.mstart0() C:/Program Files/Go/src/runtime/proc.go:1553 +0x5d fp=0x74521ffb38 sp=0x74521ffb10 pc=.. 2024. 3. 7.
리버싱 - Bush hid the facts, 윈도우 XP 메모장 버그 문제 확인 1. 메모장을 새로 만들어서 안에 "Bush hid the facts"를 입력한다. "부시 대통령은 진실을 숨기고 있다"라는 뜻의 심오한(?) 내용이다. 2. 메모장을 저장한 후에 다시 파일의 내용을 들여다본다. 그러자 본래 내용이 없어지고 글자가 깨져서 나온다. 문제 분석 1. 혹시나 메모장에서 발생하는 오류 아닐까 하고 cmd 창에서 type 명령어로 파일의 내용을 확인해 보았다. 확인해본 결과 실제 파일의 내용은 그대로인걸 보아 메모장에서 생기는 오류인 것이다. 2. 깨진 파일을 (B.txt로) 저장하고 헥스 에디터로 분석해본다. 분석을 해보면 원본인 A.txt는 내용이 잘 저장되있는 반면 B.txt는 내용 앞에 FF FE라는 파일 헤더가 들어가게 된다. 확인해 본 결과 FF FE는 UT.. 2023. 7. 12.
리버싱 - 바이너리에 설정된 보호 기법 확인(checksec) checksec -f {파일} RELRO(RELocation Read-Only): Read-Only 권한 설정으로 Write 가능한지 여부 Stack Canary: Return Address Overwrite 여부 확인 Stack Canary는 카나리를 통해 스택 오버플로우를 감지한다. NX(No-eXecute): NX를 우회할 수 있는 가장 대표적인 방법은 ROP(Return Oriented Programming) NX(No-eXecute)는 쉘코드 실행을 방지한다. ASLR(Address Space Layout Randomization): 실행될 때마다 데이터 영역(스택, 힙, 라이브러리 등)의 주소를 랜덤으로 변경 Windows용 checksec https://github.com/Wenzel/che.. 2023. 3. 26.
리버싱 - 윈도우 쉘코드 실행 C언어 소스 #include #include int main(void){ char shellcode[] = {0x00,}; void *exec = VirtualAlloc(0, sizeof shellcode, MEM_COMMIT, PAGE_EXECUTE_READWRITE); memcpy(exec, shellcode, sizeof shellcode); ((void(*)())exec)(); return 0; } 2023. 3. 23.
리버싱 - 리버스 코어(ReverseCore) https://reversecore.com/18?category=216978 PE(Portable Executable) File Format (1) - PE Header Introduction Windows 운영체제의 PE(Portable Executable) File Format 에 대해서 아주 상세히 공부해 보도록 하겠습니다. PE format 을 공부하면서 Windows 운영체제의 가장 핵심적인 부분인 Process, Memory, D.. reversecore.com 리버싱 핵심 원리 저자분이 운영하시는 블로그인데 운영체제의 구조 원리(PE)와 DLL Injection, API Hooking과 같은 자세한 해킹 기법의 원리도 잘 설명이 되어있다. 2022. 9. 16.
Dreamhack - 워게임, rev-basic-2 풀이 https://dreamhack.io/wargame/challenges/16/ rev-basic-2 Reversing Basic Challenge #2 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출 dreamhack.io 이번에는 배열을 비교해가면서 내가 입력한 문자열이 장답 배열이 가지고 있는 문자와 똑같은지를 비교하는 원리였다. 이렇게 주석을 적어가면서 하면 이해하기가 쉽다. 프로그램이 계속해서 참조하는 저 배열의 주소를 덤프 창에서 따라가 보았더니 "Comp4re_the_arr4y"라고 배열이 각 4바이트 떨어진 간격으로 저장이 되어있었다. 그렇기 때문에 cmp .. 2021. 12. 3.
Dreamhack - 워게임, rev-basic-1 풀이 https://dreamhack.io/wargame/challenges/15/ rev-basic-1 Reversing Basic Challenge #1 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출 dreamhack.io rev-basic-0번과 비슷한 구조로 짜여있으며, 다만 다른 점은 rev-basic-0은 strcmp로 "문자열의 비교"로 두 문자가 일치한지를 판단하였으면, rev-basic-1은 "문자의 비교"로 한글자 한글자씩 사용자 입력 문자와 정답을 비교했다. 주석 부분을 다 맞춰보면.. "Compar3_the_ch4ract3r"라는 문자열이 나온다. 2021. 12. 1.
Dreamhack - 워게임, rev-basic-0 풀이 https://dreamhack.io/wargame/challenges/14/ rev-basic-0 Reversing Basic Challenge #0 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출 dreamhack.io 문제의 실행파일을 실행시키니 사용자에게 입력을 받으며, 아무 글자를 입력하니 Wrong을 출력하고 바로 꺼져버립니다. 목표는 알맞은 정답을 입력해서 Correct를 출력시키는 것이 목표입니다. 문제의 실행파일을 디버거에 넣어 실행시켜 F9를 눌러 엔트리 포인트로 이동해줍니다. 코드를 한번에 실행시키지 않고 한줄한줄씩 코드를 실행시켜 콘솔 창이 변화하는.. 2021. 11. 30.
728x90
반응형