FTZ
[해커스쿨] FTZ level17 풀이과정
2017/01/12 - [Study :)/FTZ] - [해커스쿨] FTZ level16 풀이과정 힌트 보자..level16에서는 shell()함수가 따로 존재하여 shell()함수에 setreuid()함수가 들어있었다.그래서 printit()함수를 불러오는 주소에 shel()함수 주소를 대체해서 넣어서 문제를 풀었다면,level17에서는 shell()이라는 함수가 따로 없고 main()함수에 포함되어 있다.문제를 풀기 전 예상을 해보면, main()함수에 call(); 명령어를 통해서 원하는 주소의 값을 실행 하는 방법과, 앞서 풀었던 BOF방식으로 RET주소에 원하는 주소를 넣는 방법이 있을 것 같다고 판단된다.이렇게 2가지 방법을 생각해 두고 문제를 풀어보자.... 먼저, hint의 내용을 /home..
[해커스쿨] FTZ level16 풀이과정
2017/01/11 - [Study :)/FTZ] - [해커스쿨] FTZ level15 풀이과정 힌트 볼깝숑~ㅋㅋㅋㅋㅋshell()함수가 정의되고, printit()함수가 정의되고, main함수에서 printit()함수가 불러지는 것을 확인 할 수 있다.딱 보니 감이 오지 않는가? shell()함수는 정의해놓고 안불러오는것을 보니, printit()함수를 불러오는 버퍼에 shell()함수의 주소를 대체해서 넣으면, printit()함수가 아닌 shell()함수를 불러오게 되면서 해결될 것 같지 않은가? 음하하하하하하하하하하하하하하~ㅋㅋㅋ; [ebp-16]에 "0x8048419"주소를 넣는다. 그리고 부분에보면 [ebp-16]의 값을 eax에 넣고, eax의 값으로 call을 한다. 이부분이 분명 prin..
[해커스쿨] FTZ level15 풀이과정
2017/01/11 - [Study :)/FTZ] - [해커스쿨] FTZ level14 풀이과정 level14(http://eunice513.tistory.com/59)랑 매우 흡시하지만.. 이번엔 check라는 변수가 포인터이다. 이것만 다르고 다 똑같다.gdb로 파헤쳐보자~ 0x38(56byte)만큼 공간 할당하고... 사용자로 부터 입력받은 값을 [ebp-56]에 저장하고..[ebp-16]의 주소를 eax에 넣어서 , eax에 있는 주소의 접근한 값이 "0xdeadbeef"인지 확인.. 맞으면 setreuid를 실행...일단, 사용자로부터 입력받은 값은 [ebp-56]이고, "0xdeadbeef"의 주소가 들어있는 값은 [ebp-16]이니까, 40byte만큼 떨어져있다는것을 확인 할 수 있다.에 B..
[해커스쿨] FTZ level14 풀이과정
2017/01/11 - [Study :)/FTZ] - [해커스쿨] FTZ level13 풀이과정 보자보자!! 힌트를 보자!!!int 변수를 2개 선언하고, 20byte 배열 하나 선언하고 ... 그런데 45byte만큼 buf로 fgets 하네...check라는 변수에 0xdeadbeef가 들어있나 확인하네.. 정확하게 gdb로 파헤쳐보자. 보아하니.. 0x38(56byte)만큼 공간 할당하고, [ebp-56]에 fgets로 받은 문자열을 저장하고, [ebp-16]에 0xdeadbeef가 있구먼... fgets함수 바로 다음인 에 BP걸고 대충 아무 값인 "AAAAAAAA"을 넣고 실행해보니..일단 입력 받은 문자열이 들어가는 주소는 "0xbffff210"이네... 그런데 "0xdeadbeef"값이 안보인..
[해커스쿨] FTZ level13 풀이과정
2017/01/11 - [Study :)/FTZ] - [해커스쿨] FTZ level12 풀이과정 소스코드를 보니 long형 변수 i가 존재하고, i의 값이 0x1234567이 아니면 경고 메시지가 출력하는걸 볼 수 있다. 즉, i라는 변수의 값을 체크해서 오버플로우됬는지 판단하는 보안코드라고 볼 수 있겠다.하지만, 이는 너무 단순한 보안코드이다. 그러면 i형 변수가 가리키는 버퍼에 0x1234567을 넣으면 되지 않을까? 공격하자! gdb로 분석해보면, 일단 0x418(1048)만큼 공간을 확보하고, 0x1234567을 [ebp-12]에 저장한다.그리고 strcpy로 argv[1]인자를 복사하고나서 부분에 ebp-12의 값이 0x1234567의 값으로 잘 저장되어 있는지 체크한다.그럼 우리는 앞서 했던 ..
[해커스쿨] FTZ level12 풀이과정
2017/01/11 - [Study :)/FTZ] - [해커스쿨] FTZ level11 풀이과정 자.. 뭘해야될지.. 알지?...요? 힌트를 보장~ level11이랑 비슷하게 보이지만, 다르다.(당연히 다르니까 level12겠지!!)level11은 인자값으로 문자열을 입력받았다면, level12은 gets함수를 통해서 문자열을 입력 받는다. level12도 str(256) + dummy(8) + SFP(4) + RET(4) 이렇게 메모리 구조가 되겠다.level11과 똑같은 구조이지만, 입력받는 방식이 다르다는 차이점이다. 와 을 비교해보면 알 수 있다. 따라서, 문자열을 입력시키는 방법만 다르게 하면 문제는 level11과 똑같이 풀릴것이다.그래서 우린 Pipe('|')를 이용할 것이다. Pipe명령어..
[해커스쿨] FTZ level7 풀이과정
2017/01/11 - [Study :)/FTZ] - [해커스쿨] FTZ level6 풀이과정 자... 힌트를 보자.. /bin/level7 을 실행시켜 보자 /bin/wrong.txt 파일이라는게 없덴다... 뭔가 이상해서 검색해보니.. 해커스쿨 FTZ에 오류랜다.. 그래서 이 문제를 풀려면 /bin 디렉토리에 wrong.txt라는 파일을 추가해줘야 된다. 일단 root로 접속해서 해당 디렉토리에 wrong.txt를 만들고 내용은 이렇게 저장하자. Can't Password. Near the Password!--_--_- --____- ---_-__ --__-_- 이렇게 내용을 저장하고 다시 level7계정으로 접속후 /bin/level7을 실행시켜보자. 이미 /bin/level7을 실행시키면 /bin..
[해커스쿨] FTZ level6 풀이과정
2017/01/11 - [Study :)/FTZ] - [해커스쿨] FTZ level5 풀이과정 level6의 힌트를 보자. 힌트를 보니 많이 사용하는 해킹 방법 이랜다... 그런데.. password라는 파일이 보인다... 뭐지.. 열어 보았다. 뭐지.. 바로 level7의 패스워드가 들어있다. 뭔가.. 문제가 잘못된듯 하다.문제의 의도대로 다시 풀어보기로 했다.password파일 말고도 tn이라는 파일이 보여서 한번 실행 시켜 보았다. 이러한 화면이 출력된다. 하이텔, 나우누리, 천리안 이렇게 번호를 선택해서 엔터를 쳐보면.. 해당 ip로 접속되는것 처럼 보이면서 아무런 반응이 보이지 않는다... 어떻게 해야 될까... 힌트에서 보았듯이 인포샵 bbs의 해킹방법을 검색해 보기로 했다.... 인포샵 bb..