분류 전체보기
-
ELF Memory Protection - RELROSystem hacking training/Knowledge 2018. 3. 7. 15:52
codegate 2013 문제를 풀이하려고 보호기법을 확인해 보니 partial RELRO가 걸려있었다. 이 보호기법에 대해 공부를 해본적이 없어서 정리를 해본다. 먼저 RELRO를 이해하기 위해 배경지식이 필요한데 Lazy Binding 이라는 개념에 대해 정리를 하겠다. Lazy Binding 이란?-> 모든 외부 함수의 주소를 한 번에 로딩하지 않고, 함수 호출 시점에 해당 함수의 주소만 공유 라이브러리로부터 알아오는 것을 의미한다. Dynamic Linking 방식으로 컴파일된 ELF 바이너리는 공유 라이브러리 내에 위치한 함수의 주소를 동적으로 알아오기 위해 GOT(Global Offset Table)를 이용한다. Dynamic Link 방식은 공유 라이브러리를 하나의 메모리 공간에 매핑하고 여..
-
Plaid CTF 2013 ropasaurusrex write-upCTF Write-Up 2018. 3. 6. 06:57
Plaid CTF 2013 ropasaurusrex 라는 문제를 풀어봤다. 먼저 정적분석을 위해 IDA로 열어본다. 먼저 main()를 살펴보면 어떤 함수를 호출하고 write()를 호출하여 win\n 이라는 문자열을 출력해주는 것을 볼 수 있다. 그 어떤 함수에 들어가 보면 바로 취약점을 찾을 수 있는데,이는 char buf 가 bp-88 즉, 136 byte의 공간을 할당 받았지만, 바로 밑 read()에서 256 byte를 입력받게 되어있기 때문에buffer overflow 취약점에 해당된다. 여기까지 정적분석을 마쳤으니 동적분석을 해보자. 먼저 실행을 해보면 예상처럼 입력을 받고, win이라는 문자열을 출력해준다. 그리고 memory 보호기법을 확인 해보면 NX bit 만 걸려있었다. 이는 쉘코드..
-
ELF Technique - ROPSystem hacking training/Knowledge 2018. 3. 5. 03:46
ROP 를 배우기 전에 선행되어야할 개념들이 존재한다. RTLRTL ChainingGOT Overwrite 위 내용을 선행한 후 ROP 를 이해할 수 있다. ROP 란? Return Oriented Programming의 약자로, 우리말로 하면 반환 지향형 프로그래밍이다. 현재 수행중인 프로그램 코드 안에 존재하는 서브루틴이 리턴 명령어에 닿기 전에 기계 명령어 또는 기계 명령어 덩어리를 간접적으로 실행시키기 위해 콜 스택을 제어하는 기술이다. 실행되는 모든 명령어들이 원래 프로그램 안에 존재하는 실행 가능한 메모리 영역에서 추출한 것들이기 때문에, 이러한 기술은 사용자 제어 메모리 공간에서 명령어 수행을 방지하는 DEP/NX bit, ASLR들을 우회하는 코드 인젝션과 같은 기술들을 사용하지 않아도 우..
-
oh my zshtmp/Tip 2018. 2. 28. 17:48
[install] apt-get install zsh apt-get install git-corewget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | zsh chsh -s `which zsh` vim ~/.zshrc 하여 테마 변경 -> .zshrc 의 ZSH_THEME="agnoster" cd ~ ; git clone https://github.com/powerline/fonts.git cd fonts; ./install.sh 여기까지 하고, 터미널 설정을 바꿔주면 되는데 font는 Liberation Mono Bold 로 바꿔준다. 추가적으로 root는 테마가 적용되지 않기 때문에 적용시킨 계정의 ~/.zsh..
-
ELF Technique - GOT OverwriteSystem hacking training/Knowledge 2018. 2. 28. 03:51
GOT Overwrite란? Dynamic Link 방식으로 컴파일된 바이너리가 공유 라이브러리를 호출할 때 사용되는 PLT와 GOT를 이용하는 공격 기법이다. PLT는 GOT를 가리키고, GOT에는 함수의 실제 주소가 들어있다.이 GOT값을 원하는 함수의 실제 주소로 변조시킨다면, 원래의 함수가 아닌 변조한 함수가 호출될 것이다.이것이 바로 GOT Overwrite이다. GOT Overwrite는 간단하게 설명하면 printf("/bin/sh") -> system("/bin/sh") 처럼 특정 함수의 got 값을 변경하여 원래 수행하고자 했던 함수외에 다른 함수를 호출하는 것을 말한다. 이를 실습하기 위해 간단한 바이너리를 만들었다. [Got_Overwrite.c]#include int main() {..
-
[2018] 17th HackingCampfkillrra ?/conference 2018. 2. 27. 03:34
2018년 2월 24일(토) ~ 25일(일) 2일간 PoC가 주관하는 17th 해킹캠프에 다녀왔습니다. 3번정도를 지원한것같네요. ㅎㅎ..ㅎㅎ.. 발표를 들으면서 정리한 내용입니다.[1일차][정진욱(POCSEC), 해킹캠프] keynote [심준보, 핵알못 vs 핵잘알] 해킹 공부 순서핵알못 vs 핵잘알(천재처럼하는 해커) -> 차이 : 어떤 자세로 임하는가 (해킹을 대하는 자세) ==> 대회 or etc.. 순위를 결정함 원래 해커의 기본 소양 -> 해킹을 못하더라도 공부 자체에 만족 -> 결국 해킹을 잘하게 된다.따라하는것은 해킹이 아니다.해킹 기법을 만드는 사람이 훌륭한 해커다. 결론 : 즐겨라~ [신정훈, LTE? is it secure?] 無 에서 有를 창조LTE 네트워크펨토셀 벤더들 펨토셀이란..
-
ELF PLT & GOTSystem hacking training/Knowledge 2018. 2. 27. 02:29
ROP라는 기법을 익히기 위해서는 PLT 와 GOT라는 녀석들의 개념을 알고있어야 한다. PLT 란?Procedure Linkage Table의 약자로 외부 프로시저를 연결해주는 테이블이다.PLT를 통해 다른 라이브러리에 있는 프로시저를 호출해 사용할 수 있다. PLT는 일종의 실제 호출 코드를 담고 있는 테이블로써 이 내용 참조를 통해 _dl_runtime_resolve가 수행되고,실제 시스템 라이브러리 호출이 이뤄지게 된다. GOT 란?Global Offset Table의 약자로 PLT가 참조하는 테이블이다.프로시저들의 주소가 들어있다. GOT는 프로시저들의 주소를 가지고 있다.PLT가 어떤 외부 프로시저를 호출할때 이 GOT를 참조하여 해당 주소로 점프하게된다. ※뇌피셜 TipProcedure ==..
-
ELF Technique - RTL ChainingSystem hacking training/Knowledge 2018. 2. 22. 21:49
RTL Chaining 이란 RTL 기법을 응용하여 라이브러리의 함수의 호출을 연계하는 것입니다. RTL 기법에서는 하나의 함수만 호출하였다면, RTL Chaining에서는 여러 함수를 연계하여 호출하는 것을 말합니다. [Link] RTL(Return To libc) 이전의 RTL에서는 return address가 들어가는 곳에 AAAA(dummy(4))를 넣어줬었는데요. 바로 이 AAAA를 넣어줬던 위치에 pop ret 과 같은 명령어의 주소를 넣어 스택 포인터를 다음 함수로 위치시키는 기법이 RTL Chaining입니다. [실습]먼저 실습환경은 pwntool 사용을 위해우분투 64bit 환경에서 바이너리를 32bit로 컴파일 하였다. 먼저 취약한 바이너리부터 만들어줍니다. read()로 buf에 51..