giant(2)
-
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