본문 바로가기

shayete

6. Return Oriented Programming (ROP) 6. python programming 관련 동영상입니다. 설명은 생략하도록 할게요. 필요하신 분은 참고하세요! python 바이너리 사용법은 ./python [port] 입니다. 7. ROP 6은 건너뛰고 왜 7이냐면, 중간에 python basic programming 이 있었지만 설명할 게 별로 없으므로 넘어가기로 했습니다. 이번 7번째 강의시간은 Return Oriented Programming을 배워보도록 합니다. 이 기법은 리얼월드에서도 자주 쓰이는 기법으로 , 아직까지 ROP를 막는 방법이 연구되지 않았습니다. ROP(Return Oriented Programming)는 현재 수행중인 프로그램 코드 안에 존재하는 서브루틴이 리턴 명령어에 닿기 전에 선별된 기계 명령어 또는 기계 명령어 덩어리.. 더보기
리스트의 문자열을 int 형태로 변환 list_a = ['1', '2', '3', '4'] -> list_a = [1, 2, 3, 4] 로 바꾸고 싶을 때, python 2. list_a = map(int, list_a) python 3. list_a = list(map(int, list_a)) 를 해주면 된다. 혹은 list_a = [int (i) for i in list_a] 더보기
5. Format String Attack (FSB) Shayete 입니다. 5번째 강의는 포맷스트링 버그에 대해 알아보도록 하겠습니다. 포맷스트링버그는 개발자가 printf()함수 구현 시, 해킹 공격을 고려하지 않고 개발하여 생긴 보안 취약점입니다. printf()를 "printf(buf)" 와 같은 형태로 사용했을 때 출력할 buf의 값이 포맷스트링이라면 buf 값을 문자로 취급하는게 아닌, 서식문자로 취급하여 취약점이 일어날 수 있습니다. 위의 그림에서 보이듯이 fgets() 로 buf에 서식문자를 집어넣고 그걸 printf() 로 출력했을 때 출력될 buf 배열에 서식문자가 있을 경우, buf배열을 가리키는 주소의 다음 4바이트 위치를 참조하여 그 서식문자의 기능대로 출력합니다. 이게 무슨말일까요. printf나 scanf에 쓰이는 서식문자는 위와.. 더보기
최신 우분투 환경에서 환경변수를 이용한 쉘코드 테스팅 시스템해킹 수업 중 해커스쿨 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 .. 더보기
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위까지 찍었다가 접은 게임인데 (접은 시점이 제가 공부를 시작한 시점이었을 거에요.) 예전 생각나서 포스팅합니다. 지금은 이 게임 망해서 접속도 못하네요 ㅠ 진짜 잘 만든 명작이었는데 왜 망했는지는 모르겠네요. 여튼.. 애착을 가지며 .. 더보기