m0nday(61)
-
LOB - 17. zombie_assassin -> succubus
이번문제 17단계 치고는 꾀나 쉬웠던 것 같습니다. 로그인을 하고 소스코드를 봅시다 문제를 보니 코드가 엄청 길군요... 위에 함수들을 살펴보면 각각 순서대로 이어주면 될거같은 느낌입니다.! 크게 아래 메인함수에 신경쓰지않아도 이번문제는 풀 수 있을 것 같습니다! 그럼 각각의 함수를 이어주기 위해서 각각 함수의 주소를 얻어보죠! 함수의 주소를 얻은 뒤에는 4btye+&shellcode+"/bin/sh" 각각 이어준다음에 쉘코드의 주소를 얻기 위해서 "ABCD"를 넣어주고 코어를 만들어냅니다! 그러고 코어를 분석해서 "/bin/sh"가 들어갈 위치를 찾습니다! 그 코드를 기반으로 exploit해주면!? .....패스워드가 의미심장하다.. 다음문제에서 엄청 화가날 것으로 예상된다. (grin...)
2018.07.31 -
LOB - 16. assassin -> zombie_asssassin
위 문제를 풀다가 도저히 이해가 힘들어서 Fedora3를 풀어봤는데 Fedora3의 gate문제도 비슷한 문제였습니다 ㅎㅎ 그래서 fakeebp를 풀어보고, 비슷한 방법으로 이 문제를 시도해봤지만.. 역시 안되더군요 ㅎㅎ 그래서 초심으로 돌아가봤습니다. 일단 로그인을 합니다. 소스코드를 봅니다. FEBP를 사용하라고하고, 리턴 뒤에값을 사용하지 못하는군요..ㅠ2번문제를 포스팅했던 RTL을 이용해서 풀어볼 예정입니다. 계획한 payload는 다음과같습니다.RTL*12 + "\n90"*28 + "buffer-4" + leavebuffer sfp ret 1. system함수 위치 2. /bin/sh 위치3. buffer-4 위치4. leave위치만 알면 됩니다. system 함수는 아래와 같 이 찾습니다. 이..
2018.07.30 -
LOB - 15. giant -> assassin
어느때와 다름없이 먼저 로그인을 합니다. 당연히 소스코드를 열어봅니다. 예전에 봤던 문제들하고 비슷한 유형이네요.이번에는 리턴값 시작이 "\xbf", "\x40"이 아니여야하네요! 그리고 가장 중요한!! 저희가 넣을 수 있는 버퍼의 최대값이 없다는 점입니다.buffer와 sft는 초기화가 되지만 그 뒤는 저희의 맘대로니까요!!(grin) 그럼 argv[2]에 인자를 넣어주고, 그 값이 어디로 가는지를 찾아봅시다! 위의 곳으로 가네요! 하지만 리턴주소를 보면 "\x90\xfa\xff\xbf"로 향해야하는데조건에 맞아서 종료되게 됩니다! 조금 돌려서 생각해보니 리턴주소를 자기 자신으로 하면 리턴을 한번 더 실행하니 그 뒤에 우리가 원하는 ret주소를 입력하면 무난히 통과할 것 같습니다! 리턴주소를 찾기위해 ..
2018.07.30 -
LOB - 14. bugbear-> giant
이번문제 엄청 어려웠어요..ㅠㅠ다른분들의 글을 보고도 상당히 많이 어리버리깠습니다 ㅎ. ㅠㅠㅠ 로그인부터합니다. 소스코드 확인! 와우...........엄청긴데요 ㅠfd를 쓰는걸보아 다른파일을 열어오나?? 추측도 했었어요 그런데 아니더라고요 ㅋㅋ 파일에 있는 글을 보니 "You must use execve!"execve를 쓰라고만 되어있네요! execve함수는 뭐지?인자값으로 파일명, 인수, 환경설정, 반환값을 정하네요. 그럼 각각 execve위치, system위치, exit위치, /bin/sh위치, NULL값 을 구하면 되겠네요! 파일을 복사시키고 디버깅을통해서 execve, system, exit를 찾았습니다. 그리고 프로그램을 돌려서"/bin/sh"의 위치를 찾았습니다. 항상 값이 NULL인 부분의..
2018.07.30 -
LOB - 13. darkknight-> bugbear
이번문제 코드를 보자마자 기분이 좋았습니다. :)마찬가지로~~ 로그인을 합니다. \ 코드를 살펴봅니다. 간단하게 해석하면 리턴 맨앞을 "\xbf"로 맞춰주고, 인자는 1개이상 넣어줘야겠군요.하지만 (stack betrayed you!!\n");부분을 보니 스택은 사용이 안되겠군요 ㅠ저번 2번문제를 RTL로 풀었던 기억이 나네요.. 그대로 하면 됩니다. RTL기법을 이용해서 쉘을 탈취한다. RTL기법이란 (Return-to-Libc)의 약자로 리턴을 libc로 주는 것이다.함수가 실행될때에는 system이라는libc를 사용하게되는데. 이 함수내에는 우리가 원하는 "/bin/sh"도 포함이 되어있다.ASLR이 적용되어있지않아서 저 함수가 실행되게끔 이동하게된다면 shell을 얻을 수 있을 것이다.RTL기법이..
2018.07.30 -
LOB - 12. golem -> darkknight
이번에는 darkknight입니다. 먼저 로그인을하고, 소스코드를 봐봅시다! 이번에는 소스는 간단해보입니다.그런데 char buffer은 40byte의 버퍼를 가지고있는데strncpy는 41개를 넣으니 여기서 취약점이 발생할거 같네요. 메인에 bp를 걸고 살펴보려고하였으나.. 취약점이 main에서 나오는 것이 아니라 함수 내에서 발생하므로 함수 내부를 살펴보아야 할 것 같습니다. problem_child()함수 내에 끝나는 부분에 bp를 걸고, 스택 바로뒤에있는 리턴부분이 0xbffffaa4쪽으로 가면 스택부분이 실행되므로, 스택부분에 쉘코드를 넣어주고, 리턴값 1byte 를 바꾸어주면 될 것 같습니다. success.!
2018.07.30