문제풀이 메모리 보호 기법을 먼저 보시면 canary적용과 NX가 있죠 RELRO는 저게 된건가? Relro는 다음에 자세히 서술할 시간이 오겠죠 그러니 이 내용은 패스하고 코드를 보면서 뭐가 취약한 코드인지 시큐어 코딩과 유사하게 지적까지 해볼까요 HTML 삽입 미리보기할 수 없는 소스 이 코드입니다. 제목과 주제가 주제이므로 당연히 BOF가 적어도 두 번 나오겠죠 코드를 보시면... 솔직히 저 case 모두 취약한 코드이긴 해요 뭐가 문제인지 하나씩 알아볼까요 위 코드는 BOF를 발생시킬 수 있지만 치명적인 코드 실행까지는 불가능하므로 Canary값을 생성하는데.. 왜냐하면 Box의 변수명인 변수 배열의 길이가 0x40이니까 그 이상으로 입력하시면 되겠죠 두 번째 코드는 우리가 입력값의 인자의 길이를..
파일 실행 먼저 다운로드 받은 파일을 실행하여 프로그램이 어떤 식으로 동작하는지 확인합시다. 참고로 위게임 문제와 같이 신뢰할 수 없는 프로그램을 실행할 때는 가상환경(VM)에서 실행하는 것이 good! 만약 문제 정보를 통해 프로그램의 동작 방식이 예상이 간다면 실행하지 않고 정적분석을 먼저 시도도 좋은 방법 윈도우 OS에서 기본적으로 제공되는 Windows PowerShell에 문제 파일을 실행한 모습을 보여주자면.. 문제가 사용자에게 문자를 입력받고 프로그램 내부의 어떤 검증과정을 거쳐 입력한 문자열이 검증을 통과했다면 Correct, 통과 못하면 Wrong을 출력하는 방식으로 동작하는 걸 유추가능 그렇다면 문제의 정답(flag)은 검증과정을 통과하여 Correct가 출력되도록 하는 입력값이 될 거..
x86 Assembly🤖: Essential Part x86 Assembly: Essential Part 해커의 언어: 어셈블리💬 PC에서 복잡한 논리적 인과관계, 여러 개체가 상호작용하며 그 세계에서 통용되는 기계어(Machine Code)언어 핵심! 시스템 해킹을 할 때는 컴퓨터 언어, 운영체제, 네트워 dystopia050119.tistory.com Quiz: x86 Assembly Quiz: x86 Assembly dystopia050119.tistory.com 기존에 정리된 부분이 있었네요.. 시스템을 하기전에 이 커리큘럼을 먼저할걸.. ㅠ 제가 이 블로그를 하는 이유는 여러 이유가 있지만 그 중에 하나가 포폴용이라서 이번만 날먹할께요 헷 참고 자료 x86 Assembly🤖: Essential ..
Computer Architecture Computer Architecture 1. 컴퓨터 구조(Computer Architecture) 컴퓨터 과학에서는 PC설계를 여러 하드웨어가 개발되고, 이들을 조립해서 컴퓨터가 완성한 것이 컴퓨터 구조! 더보기 📜개요📜 컴퓨터 구조(Computer Architecture) dystopia050119.tistory.com 퀴즈는 딱히 설명 안 할께요 저거 봤으면 진짜로 기초니까 어짜피 모르시면 다시 배워야해요 Background: Windows Memory Layout 메모리 레이아웃(Memory Layout) : 프로세스 가상 메모리(Virtual Memory)의 구성 프로그램을 실행하면 OS는 프로세스에 사용 가능한 메모리 공간을 할당하며, CS에선 이 공간을 ..
리버스 엔지니어링 정적 분석(Static)과 동적 분석(Dynamic) 구분 정적 분석 : 외적인 관찰만을 통해 정보를 취득 동적 분석 : 실행을 통해 동작을 분석하는 것! 대게 정적인 방법과 동적인 방법을 적절히 혼용하면 대상을 효과적으로 분석 가능! 동적인 방법만을 고수하면 큰 구조를 놓칠 수 있고, 반대로 정적만 고수하면 실행을 통해 직관적으로 알 수 있는 부분을 분석하느라 시간을 허비할 가능성이 농후하죠.. 따라서 우리는 정적 분석과 동적 분석 중 한 방법만을 고수하는 것이 아닌 상황에 따라 적절한 방법으로.. 어떤 상황에 어떤 방법을 선택할 것이냐가 실력을 좌우하는 중요한 요소죠 정적 분석(Static Analysis)🔍 정적 분석(Static Analysis) : 프로그램을 실행시키지 않고 분..
스택 카나리(Stack Canary) 스택 버퍼 오버플로우로부터 반환 주소를 보호하는 기법 함수의 프롤로그에서 스택 버퍼와 반환 주소 사이에 임의의 값을 삽입하고, 함수의 에필로그에서 해당 값의 변조를 확인하는 보호 기법입니다. 카나리 값의 변조가 확인되면 프로세스 강제 종료! BOF로 RET를 덮으려면 반드시 카나리를 먼저 덮어야하므로 카나리 값을 모르는 공격자는 반환 주소를 덮을 때 카나리 값을 변조하게 됩니다. 그러하다면 변조가 확인되어 공격자는 실행 흐름을 획득하지 못하게됩니다. TMI. 카나리라는 이름의 유래 카나리 보호 기법의 이름은 카나리아(Canary)라는 새에서 유래되었습니다. 19세기, 20세기에는 일산화탄소 농도의 측정 기술이 부족했고, 탄광에서 유출된 일산화탄소에 광부가 중독사하는 ..
basic_exploitation_001 문제 풀이 자 들어가기 전에 문제가 발생했습니다.. 바로 NX가 적용된 코드라는 것이죠 참고로 32-little endian linux이고요 그럼 들어가기 앞써서 NX에 대해 알아봐야겠죠? NX(Bit | MS : DEP) NX-Bit(Never eXecute Bit; 실행 방지 비트) - 프로세스 명령어나 코드 또는 데이터 저장을 위한 메모리 영역 분리 CPU의 기술 - NX 특성으로 지정된 모든 메모리 구역은 데이터 저장을 위해서만 사용됨 - 프로세스 명령어가 그곳에 상주하지 않게 실행시켜줌 DEP(Data Execution Prevention) - MS windows OS에 포함된 보안 기능이며, 악의적 코드 실행 방지를 위한 메모리 확인 기술 - DEP는 ..
basic_exploitation_000 문제풀이(pwntools와 shellcode) 밑에 링크는 앞으로 기재될 문제 풀이에서 큰 도움이 될거예요 추가로 필요한 정보는 차차 기재할께요 Memory Corruption: Stack Buffer Overflow 스택 버퍼 오버플로우(Stack Buffer Overflow) 세계 최초의 웜이라고 불리는 모리스 윔도 이 공격을 통해 전파됨 보안 공부를 모르는 개발자도 알만큼 유명하고 역사가 오래된 취약점입니다. 이렇게 dystopia050119.tistory.com //file name : basic_exploitation_000.c //Complie : gcc -o basic_exploitation_000 basic_exploitation_000.c #inc..