본문 바로가기

3. 쉘코드 제작 간단한 프로그램을 통한 system call을 어떤식으로 하는지 보았다. gdb로 open해서 mkdir함수를 따라서 들어가 보면, 시스템 콜 번호를 가지고 있는 헤더는 /usr/include/mipsel-linux-gnu/asm/unistd.h 에 있다. 특이한 점은 기준점이 4000이고 그걸 기준으로 시스템 콜 번호가 매겨진다. 그럼 v0에는 시스템 콜 번호를 넣으면 되고, a0에는 "sanguine"문자열 주소가 들어 가 있다. 그럼 이제 execve를 하는 쉘코드를 만들어 보자. execve의 시스콜 번호는 4011이다. 간단히 코딩해서 execve가 불릴당시 레지스터를 확인해보면 MIPS system call table을 쉽게 확인할 수 있다. 이처럼 3가지 인자는 a0, a1, a2를 통해서 .. 더보기
2. 프로그램 분석 스터디의 목표가 임베디드에 대한 어플리케이션 레벨에 대한 공격인 만큼, 원래 간단한 바이너리 부터 흐름을 천천히 분석 해 보면서, 변수선언 / 값 대입 / 함수호출 / 다양한 데이터형 에 관한 주제로 분석을 해 볼려고 했지만, 진도를 좀더 빠르게 빼기 위해서 실제 bof취약점이 있는 코드를 컴파일 해서 분석 해 보기로 하였다. 예제코드는 다음과 같다. /**************************** leaveret embedded study disable NX Make shellcode and attack!*****************************/#include #include int main(int argc,char *argv[]){char buf[100];strcpy(buf,argv.. 더보기
1. 환경구성 qmeu로 ubuntu에 에뮬레이팅을 통해서 시스템 구축을 했다.일단https://people.debian.org/~aurel32/qemu/ 에서 image와 해당 커널을 받을 수 있다. 나는 MIPSEL wheezy계열 이미지를 받고 32비트용 커널을 받았다.해당 사이트에 아래쪽에 설정하는 법이 잘 설명 되어 있으니 쉽게 설정 할 수 있다.그 다음에 할 있은 MIPS용 qemu를 받는것인데, apt-get install qemu-system-mips을 입력하면 시스템에 mips용 qemu가 설치된다. 그다음 매번 이미지와 커널을 인자로 주고 qemu를 설정 시키면 귀찮으니, 스크립트를 통해 실행시킬 수 있도록 만들어 준다. root@ubuntu:~/MIPS# cat > MIPSEL-qemu #!/bin.. 더보기