본문 바로가기

stack corruption

[Lv.2] Gremlin Gate에 이어, Gremlin을 풀이합니다. Login : gremlinpass : hello bof world gremlin 환경에 주어진 cobolt.c 코드입니다. 1번과 다른점은, 버퍼(배열)가 작네요. 이게 의미하는 건 기본적으로 redhat에서 동작하는 system("/bin/sh") 쉘코드가 24바이트인데 이걸 다 넣지 못한다는 거에요. 즉, 버퍼에 쉘코드를 삽입하는 방법은 쓰지 못하게 되었습니다. 하지만, 이 redhat 환경에서는 아무런 보호기법이 걸려있지 않기 때문에 스택의 어느곳이든 값을 넣을수만 있다면 쉘코드 실행이 가능합니다. 가령, argv[] 나 환경변수 영역에 값을 넣어도 말이지요. (이 두 군데는 저희들이 임의로 값을 input할 수 있는 곳이고 스택의 주소값이 바뀌지 않.. 더보기
최신 우분투 환경에서 환경변수를 이용한 쉘코드 테스팅 시스템해킹 수업 중 해커스쿨 ftz나 lob를 접하신 분들이 환경변수를 이용해 쉘을 얻고싶으시다는 질문을 하여 글을 쓰게 됬습니다. 제가 포스팅할 환경은 Ubuntu 14.04 3 32bit와 64bit 입니다. 32비트와 64비트는 비슷하지만 64비트 주소값이 8바이트가 들어간다는 점에서 약간 접근이 힘들 수도 있습니다. 기본적인 Stack Corruption을 일으켜 환경변수를 이용한 쉘 획득을 해보겠습니다. 1. 32bit Test 테스트할 코드는 아주 간단합니다. 버퍼를 20만큼 채워서 sfp 4바이트 넣고 return address 4바이트를 채우면 우리가 원하는 eip를 제어할 수 있습니다. gcc -fno-stack-protector -mpreferred-stack-boundary=2 -o .. 더보기
2. Stack Corruption & gdb 명령어 Shayete입니다. 오늘은 기본적인 Stack Corruption 및 gdb명령어 사용법에 대해 배워보도록 하겠습니다. Stack Corruption은 Buffer Overflow의 현대적 용어로 의미는 같습니다. Buffer Overflow가 스택에 할당된 버퍼의 메모리를 흘러넘치게 해서 메모리를 오염시키는 것처럼 Stack Corruption의 의미는 메모리 오염입니다. 오늘 공부할 Stack Corruption을 이해하려면 기본적인 메모리, 레지스터, 스택 지식이 필요한데, 가령 메모리 구조는 이렇게 생겼습니다. 유저가 침입할 수 없는 Kernel 공간, 유저영역의 스택, 라이브러리, 힙, 초기화된 & 되지않은 전역변수 데이터, 코드영역 등 메모리는 크게 커널과 그 외로 나뉩니다. 메모리는 필요에.. 더보기
stack corruption basic 요즘은 Buffer Overflow 라는 표현보다 Stack corruption, Heap Corruption이라는 표현을 쓰더라구요. 저도 트랜드(?)에 맞춰서 스택커럽션이라는 표현을 쓰도록 할게요. 시스템 포스팅을 시작하기에 앞서 시스템 해킹이 뭔지 알아보겠습니다. 우선, 간단하게 취약한 코드를 코딩합니다. 환경은 공지사항에도 올려놨듯이, ubuntu 14.04, 커널환경은 linux 3.13.0-36-generic 입니다. 컴파일 옵션에 -fno-stack-protector, mpreferred-stack-boundary=2 옵션을 주었는데 -fno-stack-protector 를 걸면 컴파일된 프로그램에 메모리보호기법인 ssp(stack-smashing-protector) 를 걸지 않습니다. 카나.. 더보기