hacking 3

objdump을 통한 해부

바이너리 파일 해킹 시 사용되는 툴 리눅스는 아래의 a.c에서 만든 main()을 어떻게 실행시키는가. 요약 1. GCC는 crtbegin.o, crtend.o, gcrt1.o를 첨가형 프로그램을 컴파일한다. 이 때 다른 기본 라이브러리들도 동적으로 링크된다. 프로그램의 시작 주소는 _start의 주소로 설정된다. 2. 커널은 실행 파일을 읽어들여 /text/data/bss/stack을 생성한다. 이 때 매개변수와 환경변수를 위한 페이지를 할당하고 필요한 정보는 스택에 push 한다. 3. _start가 실행된다. _start는 스택에서 커널이 집어넣은 정보를 얻고 __libc_start_main을 위한 매개변수 스택을 만든 후 _start를 부른다. 4. __libc_start_main은 malloc과..

OS/Linux 2012.01.18

SetUID in Linux

hacking에는 두가지. Remote Hacking : 자신이 해킹하고자 하는 서버에 아이디가 없는 경우 아이디를 얻고자 시도 Local Hacking : 해킹하고자 하는 서버에 일반 계정을 가지고 있을 때 root 권한을 얻기위해. How to get ROOT? Ans : SetUID SetUID : ID를 일시적으로 변경 ex) if 패스워드 변경을 위해 passwd를 쓰면 shadow 파일의 내용을 변경한다는 의미가 된다. 이는 passwd 파일에는 root 권한의 SetUID가 걸려있어서 일반사용자들이 passwd를 실행시키는 동안 root의 권한을 쥐게 된다. ls -al을 통해 passwd를 보면 -r-s--x--x이다. 's'가 바로 SetUID. s는 x 포함. server 전체에서 Se..

OS/Linux 2011.07.14
반응형