본문 바로가기

Exploit

(33)
[MIPS] Shellcode mips 환경에 맞는 shellcode를 만들어보려고 한다. 먼저 어셈블리어로 간단한 write(1,"Hello, World!\n",14)를 만들어본다. root@debian-mipsel:/home/user# cat hello.s #Hello, World!.data#DATA SECTION## printing stringout_string:.asciiz"Hello, World!\n" .text#text section start.global main#main exportmain:#main labelli $2, 4004#syscall number writeli $6, 14#lenla $5, out_string#buf addrli $4, 1#stdoutsyscall#syscall li $2, 1#syscall ..
MIPS BOF 보호되어 있는 글입니다.
ARM Chain RTL 보호되어 있는 글입니다.
ARM RTL[Ret2ZP] 익숙한 RTL 기법이 ARM 환경에서는 Retern to zero prevention 이라고 한다.이름은 달라도, 원리는 비슷하다.스택에 실행 환경이 없을 때, 원래 프로그램의 흐름을 변경해서 system 함수 등, 권한을 획득 한다. 기존의 RTL과 차이점이라면 함수의 호출 방식의 차이다.Intel 환경에서는 함수를 호출 할 때, 32bit에서 스택을 통한 인자 구성, ret 보관 등 하였다.하지만 ARM은 레지스터를 이용하여서 인자를 구성하고, ret를 관리한다. 간단한 Ret2ZP를 해보고, Chain Ret2ZP[이런 명칭이 있는지는 모르겠다] 를 해보려한다. 환경은 ASLR OFF, NX bit ON system("/bin/sh\x00")을 실행 시키는 것을 목표로 한다.먼저 "/bin/sh\x..
표준 입,출력 함수 정리 입력 값을 넣을 때와, 출력 할 때 null을 넣는지 \n은 들어가는지 null까지 출력하는지 등 이러한 내용을 정리 해놓으려 한다. strcpy(char *dest, char* str) : src 에서 복사될때 '\0' 까지 복사된다. '\x00'뒤의 문자열은 복사 되지 않는다. gets(char *str) : stdin에서 문자들을 개행 문자 ('\n') 이나 파일 끝(EOF) 를 만나기 전 까지 가져와서 str 에 저장한다. --> str에는 "\n" 저장되지 않는다. fgets(char* str) : stdin에서 문자들을 개행 문자 ('\n') 이나 파일 끝(EOF) 까지 가져와서 str 에 저장한다. --> str에 "\n"이 저장된다. read(0, buf, 512) : \x00, \xn 모..
ARM BOF ARM BOF를 해본다. 별반 다를게 없다는 생각이 든다. 먼저 간단히 실행을 시켜본다.[출력 화면]인자에 값을 넣어주면 Hello BOF ARM과 함께 입력한 값을 보여준다. bof이기 때문에 일단 먼저 a를 무식하게 많이 넣어본다. [0x61616161] 위의 그림과 같이 eip가 61로 덮였다. 간단하게 위와 같이 확인하고 분석해보도록 한다. STMFD SP!, {R11,LR}ADD R11, SP, #4 //R11을 EBP 처리SUB SP, SP, #0x88 // Frame 공간 0x88 확보STR R0, [R11,#var_88] // argc를 r0에 복사STR R1, [R11,#var_8C] // argv를 r1에 복사LDR R0, =aHelloBofArm ; "Hello BOF ARM"BL p..
리눅스 방어기법 해체 보호되어 있는 글입니다.
라이브러리 메모리 확인방법 보호되어 있는 글입니다.