Nightmare
-
[LOB] nightmare > xaviusWargame/Lord of Buffer Overflow 2021. 7. 16. 13:19
[LOB] nightmare > xavius stack, code, ret , LD 등 필터링이 다 걸려있다. 쉘 코드 넣을 곳을 찾아야 하는데 이번 문제는 이전의 문제들과 달리 fgets를 통해 stdin으로 입력을 받는다. 이때 stdin에 buffer가 생기는데 이 공간을 사용하면 된다. fget의 세번째 인자가 stdin인데 부분이다. 이렇게 찾을 수 있다. 이제 입력을 받고 다시 확인해보자 : 문자의 끝 : 문자 길이 : 문자의 시작 즉 0x40015000에 입력이 있다는 소리다. 이곳에다가 쉘 코드를 박으면 된다. xavius / throw me away
-
[LOB] succubus > nightmareWargame/Lord of Buffer Overflow 2021. 7. 16. 10:59
[LOB] succubus > nightmare PLT Return Address에 strcpy가 들어가야 한다. 그리고 27번 줄에서 Return Address다음 4Byte를 A로 바꾸는데 RTL Chaning을 방지하는 것 같다. Return Address에 strcpy를 넣고 이를 통해 A로 바뀐 4Byte를 원하는 주소로 바꿔서 RTL Chaning을 할 수 있다. gdb로 메인 함수를 살펴보면 이렇게 친절하게 strcpy의 PLT가 보인다. 0x8048410 이제 core dumped를 일으켜 strcpy의 Return Address의 주소와 쉘 코드가 들어갈 주소를 찾아보자 A가 들어간 0xbffffad0가 strcpy의 첫 번째 인자가 되고 두 번째 인자인 다음 4Byte(0xbffffad..