Protostar - Format 2 (포맷 스트링 버그) 포스팅 썸네일 이미지

시스템 해킹 (Pwnable)/Wargame

Protostar - Format 2 (포맷 스트링 버그)

Format2.c 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 #include #include #include #include int target; void vuln() { char buffer[512]; fgets(buffer, sizeof(buffer), stdin); printf(buffer); if(target == 64) { printf("you have modified the target :)\n"); } else { printf("target is %d :(\n", target); } } int main(int argc, char **argv) { vuln(); } Colored by Color Scripter cs i..

2021.09.30 게시됨

Protostar - Format 1 (포맷 스트링 버그) 포스팅 썸네일 이미지

시스템 해킹 (Pwnable)/Wargame

Protostar - Format 1 (포맷 스트링 버그)

Format1.c 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include #include #include #include int target; void vuln(char *string) { printf(string); if(target) { printf("you have modified the target :)\n"); } } int main(int argc, char **argv) { vuln(argv[1]); } Colored by Color Scripter cs target 변수만 건들면, 풀리는 문제다. target은 전역변수이니 objdump로 구할 수도 있다. printf 문이 있으니, 포맷 스트링 버그를 이용하면 된다. printf() 함수..

2021.09.25 게시됨

Protostar - Format 0 (포맷 스트링 버그 + 버퍼 오버플로우) 포스팅 썸네일 이미지

시스템 해킹 (Pwnable)/Wargame

Protostar - Format 0 (포맷 스트링 버그 + 버퍼 오버플로우)

의도치 않게 프로그램의 메모리를 확인할 수 있는 버그인 Format String bug 를 이용한다. 이해하기 쉬운 예인 하트블리드(Heartbleed) 사례를 보고오면 바로 이해 가능하고, 아래의 사진으로도 간단하게 파악할 수 있다. https://ko.wikipedia.org/wiki/%ED%95%98%ED%8A%B8%EB%B8%94%EB%A6%AC%EB%93%9C 하트블리드 - 위키백과, 우리 모두의 백과사전 하트블리드심장출혈을 나타내는 로고이다. 이 로고와 "하트블리드"라는 이름은 이 문제에 대한 대중의 인식을 이끌어내는데 기여했다.[1][2]CVE 식별자CVE-2014-0160발견일2014년 4월 1일 (7년 전)(2014-04 ko.wikipedia.org Format0.c 1 2 3 4 5 ..

2021.09.23 게시됨

ROP(Return Oriented Programming)를 이용한 시스템 해킹 포스팅 썸네일 이미지

시스템 해킹 (Pwnable)/Archive

ROP(Return Oriented Programming)를 이용한 시스템 해킹

이 게시글은 Protostar stack7 문제를 다룰 것이다. x86 기반의 문제 파일이 필요하다 디버깅을 해서 system()의 주소, /bin/sh의 주소를 확인한다 패턴을 이용해서 스택의 첫 요소까지의 값(패딩 값)을 확인한다. 위의 Invalid $PC address : 0x41414a41 부분이 걸린 부분이다. 따라서 해당 값 0x41414a41 을 복사해서 patter offset 0x41414a41 를 입력하면 된다. 위의 내용들로 페이로드를 구성하면, 아래 처럼 작성할 수 있을 것이다. 하지만 이 방법으로 쉘을 얻을 수 없다. sys의 주소가 ret에 들어가서 조건문에 막히기 때문 즉 ret에 system()의 주소가 아니라, ret 명령어가 있는 곳을 넣는다. ret -> ret 주소 ..

2021.09.12 게시됨

Protostar - Stack 7 (쉘 코드 + 버퍼 오버플로우 + RTL) 포스팅 썸네일 이미지

시스템 해킹 (Pwnable)/Wargame

Protostar - Stack 7 (쉘 코드 + 버퍼 오버플로우 + RTL)

stack7.c 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 #include #include #include #include char *getpath() { char buffer[64]; unsigned int ret; printf("input path please: "); fflush(stdout); gets(buffer); ret = __builtin_return_address(0); if((ret & 0xb0000000) == 0xb0000000) { printf("bzzzt (%p)\n", ret); _exit(1); } printf("got path %s\n", buffer); return strdup..

2021.09.12 게시됨

x86와 x64에서 RTL을 이용한 페이로드 작성 시 주의점 포스팅 썸네일 이미지

시스템 해킹 (Pwnable)/Archive

x86와 x64에서 RTL을 이용한 페이로드 작성 시 주의점

먼저 x86 방식같은 경우 아래의 게시글과 같이 작성한다. https://kkomii22.tistory.com/73 시스템 해킹을 위한 ret2lib 기법 해당 기법은 Protostar - Stack.5 문제를 기반으로 작성함. 기법을 실습하기 위해 관련 문제 이미지 파일이 필요하다. 해당 파일은 바이러스, 악성코드 파일이 아님을 밝힘. gdb stack5 실행 후 메인 함수 kkomii22.tistory.com 위 stack5.py 파일은 32비트 기반의 Protostar 이미지 파일에서 사용한 것이다. 하지만 64비트 기반의 파일의 경우 이야기가 달라진다. 그렇다면 어떻게 해야할까? 아래의 내용은 Protostar 워게임 stack6 문제를 다룬다. 해당 문제가 64비트 기반의 파일을 공격하는 방법에..

2021.09.01 게시됨

Protostar - Stack 6 (쉘 코드 + 버퍼 오버플로우 + RTL) 포스팅 썸네일 이미지

시스템 해킹 (Pwnable)/Wargame

Protostar - Stack 6 (쉘 코드 + 버퍼 오버플로우 + RTL)

Stack6.c 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 #include #include #include #include void getpath() { char buffer[64]; unsigned int ret; printf("input path please: "); fflush(stdout); gets(buffer); ret = __builtin_return_address(0); if((ret & 0xbf000000) == 0xbf000000) { printf("bzzzt (%p)\n", ret); _exit(1); } printf("got path %s\n", buffer); } int main(..

2021.09.01 게시됨

반응형