최신 우분투 환경에서 환경변수를 이용한 쉘코드 테스팅 시스템해킹 수업 중 해커스쿨 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 부분이 맞게 세.. 더보기 이전 1 ··· 11 12 13 14 15 16 17 ··· 23 다음