Hacking

    HackerSchool LOB Level 13

    ※ argc가 2보다 커야함 ※ argv[1][47]이 \xbf가 아니여야함 조건을 해석해보자면 ret에 스택의 주소가 오면 안된다는 조건임을 알수있다.이 문제는 RTL(Return To Libc) 기법을 이용하여 풀어야한다 RTL의 특징은 쉘코드가 없이 Exploit 하는것이다.RTL의 핵심은 RET에 Libc라고 하는 공유 라이브러리 내의 함수를 덮어씌우는 것이다. 시스템 함수의 주소를 알아내기위해 gdb로 bugbear를 복사한파일을 열고 p system으로 주소를 출력한다주소는 0x40058ae0 이다이제 인자로 들어갈 "/bin/sh"의 주소를 알아보자 "/bin/sh"의 주소를 구하는 간단한 파일을 만들어준다. /bin/sh 의 주소는 0x400fbff9 이다 아까 구한 주소들을 이용해 페이로..

    HackerSchool LOB Level 12

    이 문제는 FPO기법을 이해해야하는 문제라서 푸는데 오래 걸렸다.코드를 보면 ※ argc가 2보다 커야함 ※ problem_child 함수에 argv[1]이 인자로 들어간다 ※ problem_child 함수를 보면 버퍼가 40이고 인자값이 stp를 1바이트 침범함 위를 종합해보면 stp를 침범한 1바이트가 핵심인거같다.함수의 에필로그는 LEAVE mov esp, ebp pop ebp // esp를 ebp에 복사하고 ebp를 스택에서 꺼낸다RETpop eip jmp eip // eip를 꺼내고 eip로 점프한다 eip를 pop하면 +4가된다 -> 버퍼가 0에서 4가됨 darkknight.c를 복사해서 printf("0x%x\n",buffer-4); 코드를추가해준다eip가 4이기때문에 버퍼에서 -4로 설정해..

    Avex crackme 1번

    리버싱에 대해 아무것도 모르는 상태이므로 기초적인 Avex crackme부터 시작하도록 하겠다.처음이므로 상세하게 설명하겠다.일단 올리디버거를 다운받는다 올리디버거 상세 설정은 링크로 대신한다.http://t0x1c07.tistory.com/entry/%EC%98%AC%EB%A6%AC%EB%94%94%EB%B2%84%EA%B1%B0OllyDBG-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EA%B8%B0%EB%B3%B8-%EC%84%A4%EC%A0%95 avexcrackme도 다운받는다 실행하면 이런화면이 뜬다 해석해보자면 내가 너의 hdd를 CD-ROM으로 생각하게 만들어라 확인을 누르면 Error가 뜨면서 이것은 CD-ROM이 아니라고 한다 이제 이파일을 올리디버거로 열어보자 열면 이렇게 매..

    어셈블리어 (1)

    1. 어셈블리어란?기계어와 1대1로 대응되는 저급언어하드웨어를 컨트롤 하기편함2.어셈블리어 기본정리segreg : 16비트 세그먼트 레지스터mem : 메모리label : 지정된 레이블imm : 즉시값reg : 일반 범용 레지스터 Prologue (프롤로그) -> push EBP 함수가 호출될때 사용됨 ebp의 값을 push하고 esp의 값을 ebp에 저장함 mov EBP ESP Epilogue (에필로그) 프롤로그때 잡아줬던 스택 프레임을 해제하는것-> mov ESP EBP ebp의 값을 esp에 저장함 ebp를 ebp의 값을 push 함 pop EBP // 함수에 들어갓다가 다시 나올때 주소가 엇갈리지않게 하는 역할을함 push 스택에 값을 쌓음pop 스택의 최상단 값을 뽑아냄

    HackerSchool LOB Level 11

    이번 문제는 버퍼만 초기화 시키지않고 버퍼 뒷부분도 다 초기화 시켜버린다푸는 방법은 공유 라이브러리를 이용해서 풀면된다 간단한 파일을 만들어주고 공유 라이브러리로 컴파일한다공유 라이브러리 설정은 -fPIC -shared 이다 ※ 파일명에 경로를 설정해줘야한다. LD_PRELOAD 라는 환경변수에도 공유라이브러리를 등록해주어야한다 LD_PRELOAD=프로그램이 라이브러리를 가져오기전에 원하는 라이브러리를 먼저 등록해주는 환경변수 golem을 gole1로 복사해주고 놉 48개를 넣어 인자를 맞춘후 스택을 보면 bffff560 이 아까 등록한 공유 라이브러리의 주소이다 버퍼를 44까지 채우고 ret에 아까구한 공유라이브러리 주소를 넣어주면풀린다 비밀번호는 cup of coffee 이다

    HackerSchool LOB Level 10

    밑에 ultra argv hunter 를 해석하자면 모든 인자를 그 인자의 크기만큼 초기화 시키는 함수이다사진에는 보이지 않지만 버퍼는 40이다 8번과 같이 심볼링링크에 쉘코드를 넣어주고 argv[0]의 주소를 구해서 공략하면된다비밀번호는 shell coder 이다

    HackerSchool LOB Level 9

    argv[1] [46]이 xff면 안된다는 조건이 추가되었다.풀이방법은 주소를 xfe로 바꾸면된다 argv[1]에 ret을 대충 xfe로 해주고 argv[2]에 놉 , 쉘코드 순서대로 넣은다음 놉의 갯수를 조금씩 늘려가면된다 비밀번호는 music wolrd 이다

    HackerSchool LOB Level 8

    코드를 보면 argv[1]을 초기화시키는 구문이 추가되었다. troll.c 를 trola.c로 복사해주고 argv[0]의 주소를 구하기위해 trola.c 에 printf("%x\n", argv[0]); 를 추가한다 trola.c를 trola로 컴파일하고 쉘코드를 넣어 심볼링링크를 만들어준다. 심볼링링크로 trola를 실행시키고 인자값을 맞춰 넣어주면 주소가나온다주소는 bffffb6f 이다 이제 troll을 공략할 준비가 끝났다. 원본파일인 troll을 공략하기위해 troll에 아까와같이 앞글자만바꿔서 심볼링 링크를 걸어준다 아까와같이 페이로드를 작성해주면 풀린다 비밀번호는 aspirin이다