본문 바로가기

분류 전체보기

4. Return to Library (RTL) Shayete입니다. 4번째 시간에는 최신환경의 우분투에서 Return to library 기법을 학습하겠습니다. Return to Libc 기법은 말 그대로, 라이브러리의 함수로 리턴해서 그 함수를 실행할 수 있습니다. 가령, 우리들이 임의로 짠 바이너리에 system() 함수가 없어도 라이브러리의 system()을 호출해서 그 바이너리에서 쓸 수 있지요. 이 기법을 알기 전에 리눅스의 plt, got가 어떤건지 이해하시면 좋습니다. 1. PLT & GOT plt는 procedure linkage table이라고, 외부라이브러리에서 함수를 가져다 쓸 때에 이 프로시져 테이블에서 함수의 실제주소( got ) 를 참조합니다. plt는 어떤 프로시져들(함수들)이 있는지 나열되어있는 테이블이라고 생각하시면 편.. 더보기
3. 핸드레이 & 기본 어셈블리 명령어 Shayete입니다. 3번째 강의는 어셈블리 핸드레이에 대해 포스팅하도록 하겠습니다. 어셈블리 핸드레이는 어셈블리어를 C언어로 복원시키는 걸 의미합니다. C에서 어셈블리어로도 복원시킬 수 있다면 베리 나이스구요. C에서 어셈으로 복원하는 건 우선 바이너리를 많이 뜯어보고 어셈이 눈에 익은 다음에 시도하도록 합니다. 핸드레이를 하려면 기본적인 어셈블리어 명령어를 알아야 합니다. 1. Basic Assembly Instruction # cmp a ,b 부분의 assembly가 at&t형식일 때에 위처럼 zf, cf가 셋팅됩니다. intel 형식일 때는 반대로 봐주세요. 혹시 flag 확인이 헷갈리시다면 info reg 에서 eflags 부분을 계산기에 넣고 이진수로 바꾸신 다음 cf 와 zf 부분이 맞게 세.. 더보기
2. Stack Corruption & gdb 명령어 Shayete입니다. 오늘은 기본적인 Stack Corruption 및 gdb명령어 사용법에 대해 배워보도록 하겠습니다. Stack Corruption은 Buffer Overflow의 현대적 용어로 의미는 같습니다. Buffer Overflow가 스택에 할당된 버퍼의 메모리를 흘러넘치게 해서 메모리를 오염시키는 것처럼 Stack Corruption의 의미는 메모리 오염입니다. 오늘 공부할 Stack Corruption을 이해하려면 기본적인 메모리, 레지스터, 스택 지식이 필요한데, 가령 메모리 구조는 이렇게 생겼습니다. 유저가 침입할 수 없는 Kernel 공간, 유저영역의 스택, 라이브러리, 힙, 초기화된 & 되지않은 전역변수 데이터, 코드영역 등 메모리는 크게 커널과 그 외로 나뉩니다. 메모리는 필요에.. 더보기
1. 시스템 해킹이란? (linux 기초명령어 & vim 명령어 사용법) 안녕하세요. Shayete입니다. 시스템해킹 공부를 하고 싶은데 어떻게 시작해야할지, 어느 책을 보고 공부해야할지 잘 모르시는 분들을 위해 포스팅을 시작했습니다. 시스템해킹은 리버싱과 다르게 특별하게 정리가 잘 된 서적(예를 들어 리버싱 핵심원리 랄지, 리버싱엔지니어링 비밀을 파헤치다 등)이 없기 때문에 공부할 때 불편함을 겪는 분들이 많으실 거라 봅니다. 저도 해킹 공부를 하면서 책을 본 기억이 없습니다. 결론은 인터넷에서 그때그때 자료를 찾아보면서 공부하는 방법밖에 없는데, 막연하게 인터넷에서 어떤 것부터 검색해야할지 모르는 분들이 많으실거라 생각합니다. 그런 분들을 위해 Basic System Hacking Technique 카테고리를 만들어 포스팅을 시작했습니다. 제가 지금부터 포스팅하는 공부환경.. 더보기
[2015 Plaid CTF] pwnable_EBP 160p 대학원 준비하느라 많이 바쁜 관계로 가볍게 한문제 풀고 포스팅합니다. 2015. 4. 18일 오전 3시인가 0시부터 시작했던 ppp팀 주관의 2015 plaid ctf , pwnable 문제 ebp 입니다. 전형적인 포맷스트링 버그 문제입니다. 바이너리는 매우 단순합니다. 제가 문제풀면서 적당히 정리한 text 라 지금 response와 buf 배열이 함수 내에 존재하는데원래 바이너리에 buf[1024]와 response[1024]는 전역변수로 선언되어 있습니다. 이 바이너리를 간단하게 요약하면 #include char buf[1024];char response[1024]; void main(){while(1){fgets(buf, sizeof(buf), stdin);echo();}} void echo().. 더보기
Shayetet 13 제 아이디는 4년 전 (2011), 갓워즈 라는 네이버 소셜게임을 할 때 쓰게 됬어요. 웹게임에 그다지 애착이 없던 시절, 갓워즈를 접하게 됬는데 아이디를 뭘로 할까 하다가 네이버 메인에 세계 특수부대 정리! 비슷한 글을 본 것 같네요. 거기서 특수부대 구경좀 하고 있는데 이스라엘 특수부대 이름이 Shayetet 13 인겁니다. 한국어로 발음할 때에 샤에테 13 이라고 했던것 같은데, 이 이름이 마음에 들어서 뒤에 t 빼고 쓰는 중입니다. 어쩌다 갓워즈에 중독되서 랭킹 11위까지 찍었다가 접은 게임인데 (접은 시점이 제가 공부를 시작한 시점이었을 거에요.) 예전 생각나서 포스팅합니다. 지금은 이 게임 망해서 접속도 못하네요 ㅠ 진짜 잘 만든 명작이었는데 왜 망했는지는 모르겠네요. 여튼.. 애착을 가지며 .. 더보기
[Linux] Oh-my-Zsh! - agnoster theme 설정 Oh-my-Zsh! 의 agnoster 테마입니다. 간단하게 설정하는 방법을 알려드리겠습니다. 저 테마를 쓰려면 zsh 쉘이 있어야 합니다. Oh-my-Zsh! 는 Github에서 받거나 apt로 받을 수 있는데 sudo apt-get install zsh 로 설치해줍니다. 그 후, cd ~/.dotfiles/zsh/themes; git clone https://gist.github.com/3712874.git 로 테마폴더에 agnoster 를 받아줍니다. (혹여나 저 .dotfiles에 zsh가 존재하지 않는다면 find 명령어로 find / -name "*zsh*" -print 2>/dev/null 찾아서 그 폴더로 갑니다.) #이렇게 찾아도 안보이면 그냥 git에서 zsh 다운받아 설치하고 ~/.o.. 더보기
[2014 Christmas CTF] The Magic Picture Book write up이 풀려있기 때문에 슬슬 소스, 바이너리, 플래그파일을 뿌립니다. http://gon.kaist.ac.kr/?cat=1 여기 링크는 카이스트 곤 동아리 분들이 푼 write up 사이트입니다. 제가 아직 지식이 부족해서 바이너리를 복잡하게 꼬았어요. 미안합니다 ㅠ 다음엔 더 질좋고 공부하기에도 좋은 문제를 만들도록 하겠습니다.열심히 공부할게요. 문제는 이런식으로 생겼고 Weights and Measures 와 같이 exploit 코드는 공개하지 않겠습니다. signal()을 쓰면 fork()로 연결된 child 프로세스가 종료될 때 종료되지 않고 남아있는 걸 해결할 수 있다네요. 바이너리 사용법은 간단합니다. ./The_Magic_Picture_Book 4940 이런식으로 바이너리 옆에 사.. 더보기
[2014 Christmas CTF] Weights and Measures write up도 다들 올리시고들 하니, 이번에 냈던 2014년 크리스마스 ctf 알고리즘 문제 Weights and Measures 바이너리파일, C코드, 플래그 파일 올립니다. ..... 카이스트 곤 분들이 제 문제를 첫번째, 두번째 순서로 올려놔주셨네요. 감사합니다 ㅠ http://gon.kaist.ac.kr/?cat=1 여기 링크로 가시면 카이스트 곤 크리스마스 ctf 문제풀이를 보실 수 있습니다. 제가 임의로 짠 exploit 코드는 공개하지 않겠습니다. 제가 예상하지도 못한 방법으로 풀었던 우수한 write up들이 많기 때문이지요. 문제를 만들면서 많이 배웠습니다. 앞으로 더 재밌는 문제 준비할게요. 감사합니다. 사용법은 간단합니다../turtle 4940 같이 바이너리 옆에 사용할 포트를 .. 더보기
Alpha-Numeric Shellcode (Ascii Shellcode) 알파뉴메릭 쉘코드 제작방법에 대해 포스팅합니다. 말 그대로 숫자, 영어만으로 쉘코드를 제작할 수 있습니다. 오래된 기법이긴 하지만 이리저리 국내, 해외사이트를 뒤져봐도 정작 제작하는 방법은 안 나와있고 여러가지 툴을 이용한, Alpha3으로 제작하기, 메타스플로잇 alpha_mixed 옵션을 이용해서 만들기 밖에 없네요. 아스키쉘코드를 적용시키려면 우선 환경이 중요합니다. esp컨트롤로 스택포인트를 eip에 위치시켜서 xor한 값을 실행시킬 수 있습니다. 우선, 제일(?) 유명할 거라 생각되는 리눅스 쉘코드를 던져봅니다. http://shell-storm.org/shellcode/files/shellcode-827.php #include #include char *shellcode = "\x31\xc0\.. 더보기