WarGame(229)
-
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 -
LOB - 11. skeleton -> golem
이번문제는 처음에 만났을때 한 30분 정도 고민을하다가 이거는 신박한방법으로 풀어야겠다고 생각을해서 다른분들의 블로그를 참고해보았다. 로그인과 소스코드를 분석해보자. 위 소스를 봐도 감이 안와서 검색을해보니 공유라이브러리를 사용하면 풀을 수 있다고 하셨다. tmp라는 파일을 touch해주고, 공유라이브러리를 제작한다. 그후 위의 라이브러리를 LD_PRELOAD에 등록시킨다. 메인함수의 어셈을 보고 main+166에 bp를 걸어줍니다. 다음과 같이 expliot해준다! ./golem `python -c 'print "A"*44 + "\x34\xf5\xff\bf"'` passwd : cup of coffee 공유 라이브러리는 아직 어렵게 느껴진다 다시한번 조금더 깊게 보아야겠다.
2018.07.29 -
LOB - 10. vampire -> skeleton
선배님께 과제를 받아서 다시 오래간만에 lob를 풀어본다. 혼자서 계속 열심히하면 좋겠다만... 쉽지가않다..:( 먼저 로그인을 하고 \ 소스코드를 확인해보자 보니까 우리가 인자값으로 넘겨주는 부분은 모두 벤되었네요.. OTL평상시에 쓰던 환경변수도 막힌 상태고,,,일단 그럼 뜯어보죠! 메인이 끝나는 저부분에 bp를 걸어줍니다!(분석을 해야하기 때문이죠 :)조건을 만족시켜주기위해서 "\xbf"*48을 넣어준상태로 실행시키고! 파일을 한번 쭉 살펴보죠 맨 아래에 초기화되지않은 값이 존재합니다. 파일의 위치네요.7번인가 8번의 orgc와 비슷한 문제로추정됩니다. shellcode에 \x2f가 들어가지 않는 쉘코드를 구글에서 구해왔습니다../`python -c 'print "\x90"*150+"\xeb\x11..
2018.07.29 -
3. LOS - GOBLIN
GOBLIN 3번째 write-up 이다.허접한글이지만 지금 보시는분들덕분에 열심히 쓰는 중입니다..goblin도 마찬가지로 소스코드부터 확인해보죠. 마찬가지로 3번도 id가 admin이면 solve가되는 구조입니다.하지만 get[no]가 2개라서 id에 값을 입력해줄 변수는 보이지 않습니다.어떤 방법으로 시도해 봐야할까요? no값을 정해준 후 id값을 다시 정해주면 될 것 같습니다. 어랏...코드를 다시 살펴보니 ' 도 막혀있네요.. 한번더 우회해서 id 에 admin을 넣어주면 잘 풀릴거같은데...흠plaintext를 16진수 hex값으로 바꾸어주면 string으로 변환되서 들어갑니다.http://freaka.freehostia.com/charset2.php 이 사이트에서 string을 16진수 he..
2018.07.15