반응형

Security&Hacking 103

Crackme3

crackme 3 crackme3.exe을 실행시키면 다음과 같이 나온다. Keyfile을 찾을 수 없다는 내용이 나온다. Crackme3.exe를 Ollydbg로 확인하자. 중간에 CreateFileA라는 부분이 보이고 파일 이름은 abex.l2c로 보인다. abex.l2c 파일을 임의로 만들어 주었다. 그랬더니 다른 결과 창이 나왔다. 찾은 파일이 올바른 파일이 아니라고 나온다. breakpoint를 걸고 살펴보았다. 윗부분에는 EAX와 12를 비교하여 같은 경우 올바른 결과의 주소로 가는 것으로 보인다. EAX의 값을 살펴보면 18로 되어있다. 만들어주었던 내용의 길이를 살펴보니 24글자로 이는 16진수 18에 해당한다. 그럼 이 값을 16진수 12인 18글자로 변경해보자. 18글자를 입력해주고 저..

Crackme2

crackme 2 crackme2.exe 파일을 실행하면 다음과 같이 나온다. Name과 Serial에 아무 값이나 넣어서 check 버튼을 눌러보면 오류 창이 뜬다. 해당 Name에 맞는 올바른 Serial값을 넣어야 하는 것으로 보인다. 그럼 이 파일을 Ollydbg에서 실행을 해보자 여기서 올바른 Serial 값을 넣었을 때 출력되는 내용을 찾아보자 오른쪽 마우스를 눌러 Search for -> All referenced text strings를 눌러준다. 그러면 String 값들이 나오게 되고 내리다 보면 Congratulation 이라는 성공 했을때의 문자열이 보인다. 그럼 break point를 걸어 실행을 해보자 Wrong serial! 이라는 string이 써 있는 곳에 F2를 눌러 bre..

Crackme 1

crackme 1 abex' crackme #1.exe 파일을 실행하면 다음과 같이 나온다. 처음엔 HD를 CD-Rom으로 생각하도록 하라고 나오고 확인을 누르면 error창이 나오면서 이것은 CD-Rom이 아니라고 출력 되는 것을 볼 수 있다. 해당 파일을 Ollydbg에 올려보면 다음과 같이 나온다. Messagebox 부분이 끝나면 call이 실행되면서 messagebox가 나오게 된다. 다음 부분을 보면 EAX와 ESI를 비교하고 같다면 주소를 점프하도록 되어있다. 점프하는 주소는 올바른 결과가 출력되는 곳의 주소로 보인다. 그렇다면 점프하는 부분을 EAX와 ESI가 같을 때 점프하는 것이 아닌 무조건 점프하도록 바꾸어주자. 해당 줄을 더블클릭하면 다음과 같이 나온다. 원래의 내용으로 해당 내용을..

해커스쿨 ftz level20 (macOS)

해커스쿨 ftz Level20 MacOS에서 푸는 해커스쿨 ftz 해커스쿨 ftz level20 단계이다. 드디어 마지막이다. 먼저 ftz서버를 실행한다. 서버 실행을 모르면 ftz trainer1 단계에 소개되어 있다. Mac의 터미널을 열어 서버에 접속합니다. 명령어는 ssh -c aes128-cbc level20@서버ip 라고 입력합니다. Id: level20, pw: we are just regular guys 로 로그인하고 파일을 확인하였다. hint를 확인하니 이번에는 배열의 크기보다 작은 크기의 값을 입력받는다. 이번에는 printf에 bleh라는 배열을 그대로 넣어 출력하기 때문에 이를 이용해야겠다. 프로그램을 실행하여 아무값이나 넣어보았다. 일반 문자는 그대로 출력하는 반면 서식문자는 메..

해커스쿨 ftz level19 (macOS)

해커스쿨 ftz Level19 MacOS에서 푸는 해커스쿨 ftz 해커스쿨 ftz level19 단계이다. 먼저 ftz서버를 실행한다. 서버 실행을 모르면 ftz trainer1 단계에 소개되어 있다. Mac의 터미널을 열어 서버에 접속합니다. 명령어는 ssh -c aes128-cbc level19@서버ip 라고 입력합니다. Id: level19, pw: swimming in pink 로 로그인을 하고 파일을 확인하였다. hint를 확인하였는데 비교적 짧은 코드가 나왔다. setreuid함수가 없어서 이를 포함한 쉘코드를 환경변수를 사용하여 풀어야겠다. Gdb를 실행하였다. Main함수의 구조를 살펴보니 44바이트를 채우고 shell 코드의 주소를 넣으면 될 것 같다. tmp로 이동하여 환경변수에 등록하..

해커스쿨 ftz level18 (macOS)

해커스쿨 ftz Level18 MacOS에서 푸는 해커스쿨 ftz 해커스쿨 ftz level18 단계이다. 먼저 ftz서버를 실행한다. 서버 실행을 모르면 ftz trainer1 단계에 소개되어 있다. Mac의 터미널을 열어 서버에 접속합니다. 명령어는 ssh -c aes128-cbc level18@서버ip 라고 입력합니다. Id: level18, pw: why did you do it 으로 로그인하여 파일을 확인하였다. hint를 확인하니 이전보다 긴 코드가 출력되었다. 쉘이 실행되기 위해서는 shellout함수가 실행되어야하고 그러기 위해서는 check값이 0xdeadbeef가 되어야 한다. gdb를 실행하였다. Main함수를 보니 코드처럼 내용이 많았다. check의 값보다 높은 주소에 string..

해커스쿨 ftz level17 (macOS)

해커스쿨 ftz Level17 MacOS에서 푸는 해커스쿨 ftz 해커스쿨 ftz level17 단계이다. 먼저 ftz서버를 실행한다. 서버 실행을 모르면 ftz trainer1 단계에 소개되어 있다. Mac의 터미널을 열어 서버에 접속합니다. 명령어는 ssh -c aes128-cbc level17@서버ip 라고 입력합니다. Id: level17, pw: king poetic 로 로그인을 하고 파일을 확인하였다. hint를 확인하니 이전단계의 코드에서 shell함수가 사라졌다. 쉘코드를 환경변수를 이용하여 사용해야겠다. gdb를 사용하였다. Main함수를 보니 15바이트의 nop코드 후 shell코드를 넣으면 될 것 같다. $export EGG=`python -c 'print"\x90"*15+"\x31\..

해커스쿨 ftz level16 (macOS)

해커스쿨 ftz Level16 MacOS에서 푸는 해커스쿨 ftz 해커스쿨 ftz level16 단계이다. 먼저 ftz서버를 실행한다. 서버 실행을 모르면 ftz trainer1 단계에 소개되어 있다. Mac의 터미널을 열어 서버에 접속합니다. 명령어는 ssh -c aes128-cbc level16@서버ip 라고 입력합니다. Id: level16, pw: about to cause mass 로 로그인하여 파일을 확인하였다. hint를 확인하니 shell함수와 printit함수, main함수가 보인다. Main함수는 printit 함수의 주소를 호출하는데 이를 shell함수의 주소로 바꾸어주면 될 것 같다. gdb를 통해 main함수를 확인했다. 20바이트의 buf와 20바이트의 dummy를 아무값으로 채..

해커스쿨 ftz level15 (macOS)

해커스쿨 ftz Level15 MacOS에서 푸는 해커스쿨 ftz 해커스쿨 ftz level15 단계이다. 먼저 ftz서버를 실행한다. 서버 실행을 모르면 ftz trainer1 단계에 소개되어 있다. Mac의 터미널을 열어 서버에 접속합니다. 명령어는 ssh -c aes128-cbc level15@서버ip 라고 입력합니다. Id: level15, pw: guess what 으로 로그인하여 파일을 확인하였다. hint를 확인하니 이번엔 check가 주소값을 입력받도록 되어있다. gdb로 가서 0xdeadbeef가 존재하는 곳을 찾아보았다. 값들 사이에 beef와 dead가 나뉘어 숨어있는 것을 볼 수 있다. 0x80484b2 주소에 0xdeadbeef 값이 들어 있는 것을 알 수 있다. (python -..

해커스쿨 ftz level14 (macOS)

해커스쿨 ftz Level14 MacOS에서 푸는 해커스쿨 ftz 해커스쿨 ftz level14 단계이다. 먼저 ftz서버를 실행한다. 서버 실행을 모르면 ftz trainer1 단계에 소개되어 있다. Mac의 터미널을 열어 서버에 접속합니다. 명령어는 ssh -c aes128-cbc level14@서버ip 라고 입력합니다. Id: level14, pw: what that nigga want? 로 로그인을 하고 파일을 확인하였다. hint 를 확인하니 이번엔 check 값이 0xdeadbeef가 되어야 함을 알 수 있었다. gdb를 통해 보면 buf 20바이트, dummy 20바이트 후에 check값 4바이트가 나오는 것을 확인하였다. (python -c 'print "A"*40+"\xef\xbe\xad..

반응형