Hacking/LOB(RedHat)

    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이다

    HackerSchool LOB Level 7

    6번과 모두 같으나 argv[0]이 77이어야한다는 조건이 추가되었다.심볼링 링크를 이용하여야한다ln -s [링크걸 파일이름] [링크] ln -s orge `python -c 'print "./"+"A"*75'` // 링크에 ./도 포함되어야한다 이하는 6번과 같다비밀번호는 timewalker 이다

    HackerSchool LOB Level 6

    소스를 보면 5번과 거의같다 다른점은 argv[1]의 길이가 48보다 클경우 종료되는 코드가 추가되었다.5번과 똑같이 풀면된다 비밀번호는 kernel crashed 이다

    HackerSchool LOB Level 5

    소스를 보면 4번과 거의같다. 버퍼를 0~40까지 0으로 초기화 시키는 코드가 추가되었을 뿐이다. 4번과 풀이 방법은 같다 비밀번호는 love eyuna 이다

    HackerSchool LOB Level4

    orc.c 소스를 본다 조건을 보면 버퍼[40] stp[4] ret[4]argv[1] [47] 에 주소가 들어가야하고환경변수를 사용하지못한다. orc를 or1로 복사해주고 gdb로 열어준다main함수에 브레이크포인트를 걸고 파이썬으로 인자값을 정확히 맞춰서 넣어준다 argv[2] 의 주소는 0xffffc2c 이다.argv[1]에 놉을 44개 넣어서 stp까지 스택을 채운다음 ret 주소를 argv[2]주소로 변조시켜준다. argv[2]에 놉을 30개 넣고 쉘코드를 넣어주면 풀린다.비밀번호는 cantata 이다