마지막입니다.



이번에는 포맷스트링입니다.(아직도 별 이해 못했습니다..ㅠ)



일단 버그있는거 확인했습니다. 12byte뒤에 입력이되는것도 확인됬고요



일단 익스플로잇에 사용할 쉘을 환경변수에 등록하고 주소를 출력합니다.(gdb는 main심볼이 삭제되서 출력이 안되네요...)



뭔가 이번에는 dtors라는걸 이용해서 공격을 진행하더라구요..일단 힘들게 주소 2바이트씩 나누는 계산을하고 코드를 삭성했습니다.

08049598이 dtors(소멸자)주소이며 69714가 환경변수 주소인 fcf2에 40을 뺸 값이며 49933이 1bfff - 69754를 뺀값입니다.


1bfff인 이유는 음수가 되버리니까 1을 앞으로 붙여서 양수가 나오도록 하는것이라고 하는군요



휴..성공했습니다.



결국 정말 오늘 다 해벼렸네요ㅋㅋㅋㅋㅋㅋ


뭔가 level20은 많이 부족했고 뭔가 설렁설렁 넘어간 느낌이 들지만...

느낌으로 넘겨버립시다ㅋㅋㅋㅋㅋ


FTZ는 여기서 마치도록 하겠습니다! 다른 할거를 빨리 찾아봐야겠네요ㅎㅎ(해공예도 뭔가 빨리 끝날거 같은 기분이...)

'포너블 > Hackerschool F.T.Z' 카테고리의 다른 글

20170813 F.T.Z level19  (0) 2017.08.13
20170813 F.T.Z level18  (0) 2017.08.13
20170813 F.T.Z level17  (0) 2017.08.13
20170813 F.T.Z level16  (0) 2017.08.13
20170812 F.T.Z level15  (0) 2017.08.12

19입니다ㅋㅋㅋㅋ



넘나 쉽게 느껴지지만 함정이 하나 설치되 있다죠....일단 해봅시다ㅋㅋ



처음에는 간단히 ret주소에 system + dummy(4byte) + /bin/sh를 넣어 쉘은 얻었지만 

권한 상승은 안됬습니다. 여기서 setuid가 안결려있다는걸 알게됬죠ㅋㅋ


17번 문제에서 엄청난 풀이를 보여준 친구가 ROP면 대부분 다된다고 해서 함 찾아본다음 끄적끄적 해봤는데


결국 실패...그냥 setuid설정한 쉘코드 구해서 그냥 환경변수 등록해서 헀습니다.



잘 올라갔습니다.



이렇게 해서 주소 구해주고요



가볍게(?) 성공했습니다ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ


빨리 마지막을 향해!


'포너블 > Hackerschool F.T.Z' 카테고리의 다른 글

20170813 F.T.Z level20  (0) 2017.08.13
20170813 F.T.Z level18  (0) 2017.08.13
20170813 F.T.Z level17  (0) 2017.08.13
20170813 F.T.Z level16  (0) 2017.08.13
20170812 F.T.Z level15  (0) 2017.08.12

얼마 안남았습니다ㅋㅋㅋㅋㅋ 18ㄱㄱ~



코드가 쓰잘데기 없이 깁니다. 다만 여기서는 개념 하나와 올라간 변수들 그림만 잘그리시면 정말 쉽습니다.


일단 string[-1] 이 되면 시작주소가 1바이트 뒤로 갑니다.


소스를 보면 check에 deadbeef를 넣으면 게임이 끝나지만


메모리 구조가

string

check


이렇게 되있기때문에 string시작주소를 -4로 해서 check영역에 침범해서 deadbeef를 넣어주면 됩니다.



\x08을 입력받으면 count주소가 -1이 더해지기때문에 4를 곱한뒤 리틀엔디언으로 deadbeef를 넣어주면 쉘을 얻으실 수 있습니다.


'포너블 > Hackerschool F.T.Z' 카테고리의 다른 글

20170813 F.T.Z level20  (0) 2017.08.13
20170813 F.T.Z level19  (0) 2017.08.13
20170813 F.T.Z level17  (0) 2017.08.13
20170813 F.T.Z level16  (0) 2017.08.13
20170812 F.T.Z level15  (0) 2017.08.12

바로 17을 풀어봅시다.



이번에는 shell함수가 없으니  직접 쉘을 환경변수에 올려서 사용하거나 eggshell을 사용하는 방법으로 갔습니다.(eggshell은 http://geundi.tistory.com/122에서 참고했습니다.)



디스어셈블 안해도 되요ㅋㅋ



이번꺼는 eggshell을 쓴건데 멋지게 실패했네요..아마 aslr때문일거 같기도 한데 말이죠....



이번에는 /bin/sh 주소를 10번 넣고 system주소를 넣었더니 성공?했습니다.(제가 아니라 제친구가 옆에서 풀어줘서 저도 왜 저렇게 돌아가는지....)



이번에는 ROP입니다. 위에 있는 libc-2.3.2.so에서 가젯을 찾아 저렇게 했는데 말이죠..(도데체 제 친구는 저걸 어떻게 한거지...)


뭐 일단 성공은 했으니 넘어가죠ㅋㅋㅋ 환경변수는 테스트 안해봤지만 성공합니다.


'포너블 > Hackerschool F.T.Z' 카테고리의 다른 글

20170813 F.T.Z level19  (0) 2017.08.13
20170813 F.T.Z level18  (0) 2017.08.13
20170813 F.T.Z level16  (0) 2017.08.13
20170812 F.T.Z level15  (0) 2017.08.12
20170811 F.T.Z level14  (0) 2017.08.11


오늘은 16부터 시작해서 20까지 다 포스팅 해버릴 예정입니다. 솔직히 끝내고 바로 해킹 맛보기를 제데로 볼려고 했는데


지금의 저로써는 포렌식을 제외하면 별로 의미가 없더라구요;;;;


일단 다 포스팅 하면 해공예도 볼려고 합니다.


제일 중요한건 shell()가 있다는 것과 *call 이라는 함수포인터 변수가 있다는 겁니다.


buf는 20이지만 48바이트만큼 입력을 받고 있으니 이걸 이용해서 *call에 printit대신에 shell함수 주소를 넣어주면 될거 같습니다.



<<objdump -d attackme>>명령어로 저렇게 함수 주소를 알아낼 수 있습니다.



자 바로 call하기전에 브포를 걸어서 


얼마나 dummy값을 넣어야되는지 계산해야되므로 AAAA넣고 돌려줍시다.


제가 표시해둔곳이 printit함수 주소가 들어간 곳이고요 0x41414141이 제가 입력한 AAAA가 있는부분이니까


A를 40개만 넣고 shell함수 주소를 넣으면 될거 같습니다.



성공! 다른것도 빠르게 쓰도록 하죠ㅋㅋ




'포너블 > Hackerschool F.T.Z' 카테고리의 다른 글

20170813 F.T.Z level18  (0) 2017.08.13
20170813 F.T.Z level17  (0) 2017.08.13
20170812 F.T.Z level15  (0) 2017.08.12
20170811 F.T.Z level14  (0) 2017.08.11
20170810 F.T.Z level13  (0) 2017.08.10

미리 풀었음에도 불구하고 스샷을 안찍어서 재빠르게 찍고온 CodeByO입니다...



level14랑 * 만 빼면 똑같습니다. 하지만 *의 비중이 너무 크다는....


일단 포인터로 선언되면 *check에서 deadbeef말고 함수 주소를 넣어야된다는게 포인트 입니다.


뭐 buf에다가 deadbeef를 넣고 buf주소를 check에다가 넣는 방법도 있지만


심플하게 deadbeef가 저장된 주소를 찾아서 넣어줍시다.









간단하네요ㅋㅋ



이야 pwnable.kr과 비교할 수 도 없는 쉬움입니다ㅋㅋㅋ 이거 먼저 풀걸 그랬어요ㅠ



오늘은 뭔가 날로 먹는 느낌이 들지만 여기서 마치도록 하겠습니다ㅋㅋㅋㅋㅋㅋ


'포너블 > Hackerschool F.T.Z' 카테고리의 다른 글

20170813 F.T.Z level17  (0) 2017.08.13
20170813 F.T.Z level16  (0) 2017.08.13
20170811 F.T.Z level14  (0) 2017.08.11
20170810 F.T.Z level13  (0) 2017.08.10
20170809 F.T.Z level 12  (0) 2017.08.09

또 늦게 올리게 되는 CodeByO입니다.

유튭에서 식빵 팝콘이란 요리가 있어서 한번 해봤는데 요리에서도 삽질을...(카라멜 만들기 ㄹㅇ 힘들더군요...)

그래서 조금 늦었습니다.(사실 멍때리고 있었다는..)


저번 문제하고 많이 유사합니다. 이번에는 굳이 /bin/sh 를 힘들게 입력 할 필요 없이 buf에 쓰레기 값좀 넣어주고 check에 deadbeef를 밀어 넣어주면

될거 같습니다.



넣어야될 크기 차이는 0xffffffc8 - 0xfffffff0을 빼면 40이 나오고 그렇게 해서 넣어주면 됩니다.



일단 level14디렉에 있는건 r명령어가 안먹히니 tmp디렉토리에 옮겨서 했습니다.



원래는 이렇게 하면 되지만...stdin떄문에 cat명령어를 붙여야지 종료가 안됩니다.



그리고 my-pass를 하면



안되네요...젠장....level 15~16은 됬던걸로 기억하니 그때를 기약해야죠...


내일은 level20까지 그냥 다 끝내버릴 생각이기도 합니다.


끝내고 눈으로만 읽었던 '해킹 맛보기'와 '해킹 공격의 예술'책을 진지하게 해서 끝낼려고 합니다.


차근차근 나가봐야겠죠..


오늘은 여기서 마치도록 하겠습니다.



'포너블 > Hackerschool F.T.Z' 카테고리의 다른 글

20170813 F.T.Z level16  (0) 2017.08.13
20170812 F.T.Z level15  (0) 2017.08.12
20170810 F.T.Z level13  (0) 2017.08.10
20170809 F.T.Z level 12  (0) 2017.08.09
20170808 F.T.Z level 11  (0) 2017.08.08

바로 시작하도록 하겠습니다.



ㅎㅇ i가 버퍼오버플로우를 막는 역할을 하고 있습니다.



디스어셈블하고



밑에서 2번째 줄에 0x01234567이 i 부분이고 나머지는 A i 부분에만 0x01234567을 넣고 하면 될거 같습니다.



전 분명 책보고 따라했는데 왜 안되는걸까요.....뭔가 요즘 계속 쉘이 안따지는거 같네요...ㅠㅠㅠ 이거 이렇게 못둡니다. 20까지 끝낸다음 안되는거 재 도전할겁니다!! 일단 오늘은 여기서 마치도록하고 빨리 다른걸 경험하도록 하겠습니다.


'포너블 > Hackerschool F.T.Z' 카테고리의 다른 글

20170812 F.T.Z level15  (0) 2017.08.12
20170811 F.T.Z level14  (0) 2017.08.11
20170809 F.T.Z level 12  (0) 2017.08.09
20170808 F.T.Z level 11  (0) 2017.08.08
20170807 F.T.Z level 10  (0) 2017.08.07

바로 시작해 보도록하겠습니다.



전형적인 버퍼오버플로우네요 

256(str)+8(dummy)+4(sfp)+4(ret)

로 쉘코드를 만들어주면 될거 같습니다.



맨 위에서 0x108이 str+dummy값입니다.



실제 구조를 보기 위해 브포를 걸고 돌려봤습니다.



왼쪽 2번째 줄에 0x41414141이 올라가시는걸 보실 수 있습니다. 저렇게 실제 거리를 재야되죠



system(/bin/sh)를 사용해야되니 system함수 주소와


쉘의 주소를 알아내도록 합니다.(저 코드는 한 블로그에서 퍼왔습니다.)


이렇게 해버리면 프로그램이 그냥 하고 종료가 되어버립니다. cat명령어로 다시 실행시키면 해결됩니다.



쉘 구조는 str(268)+system()+dummy+/bin/sh 입니다.



저는 이상하게 또 안되더라구요...(도데체 뭐가 문제지...) 일단 이론적으로 알고 했으니 오늘은 여기서 마치도록 하겠습니다.


'포너블 > Hackerschool F.T.Z' 카테고리의 다른 글

20170811 F.T.Z level14  (0) 2017.08.11
20170810 F.T.Z level13  (0) 2017.08.10
20170808 F.T.Z level 11  (0) 2017.08.08
20170807 F.T.Z level 10  (0) 2017.08.07
20170802 F.T.Z level 9  (0) 2017.08.02

요즘 잘 까먹네요.....


음..역시 단기적인 목표가 없으면 의욕이 떨어지나... 대회가 끝나서 그런지 조금 소강상태네요(내일부터도 미리 풀어논 문제가 없어서 풀어야된다는,...)


일단 기록을 시작하도록 하겠습니다.



전형적인 포맷스트링버그입니다.



어.....왜 중간 설명이 없는지 궁금하시곘지만 바로 윗사진은 그 풀이를 보고 적은 쉘코드들인데.....


원래는 포맷스트링과 디버거 쓰는법에 익숙해 질러고 해봤습니다....


그런데..!


이놈이 마음대로 동작을 안해주네요..ㅠㅠ


맨탈 나가서 그냥 풀이보고 하는데....(3일동안 붙잡았습니다.)


그래도 안되서...

일단 이해는 했습니다만...


뭐 여긴 풀이를 해주는곳이 아니라 제가 한걸 기록하는곳이니까요ㅋㅋㅋㅋㅋㅋㅋ


일단 나중에 성공했습니다.

근데 스샷이 안찍혀있네요..ㄷㄷㄷ


뭐 일단 여기서 마치도록하죠(내일부터는 원상태로 복귀해야될거 같네요..)


'포너블 > Hackerschool F.T.Z' 카테고리의 다른 글

20170810 F.T.Z level13  (0) 2017.08.10
20170809 F.T.Z level 12  (0) 2017.08.09
20170807 F.T.Z level 10  (0) 2017.08.07
20170802 F.T.Z level 9  (0) 2017.08.02
20170801 F.T.Z level 8  (0) 2017.08.01

+ Recent posts