gremlin
-
[LOB] gremlin > coboltWargame/Lord of Buffer Overflow 2021. 5. 22. 20:54
[LOB] gremlin > cobolt 우선 cobolt.c 코드를 보면 저번 문제와 동일하게 strcpy() 함수에서 취약점이 있는 것을 알 수 있다. 하지만 이번 문제에서는 buffer의 크기가 16byte이기 때문에 buffer에 쉘 코드를 넣을 수 없다. 그렇기 때문에 쉘 코드를 아래와 같이 사용해야한다. buffer [16byte] | sfp [4byte] | ret [4byte] | shell code 이런 식으로 쉘 코드를 ret 뒷 공간에 넣고 ret에 쉘 코드 주소를 넣으면 쉘이 실행된다. 그럼 쉘 코드가 들어갈 주소를 찾아보자. 스택에 buffer 크기만큼 16byte의 공간이 생긴 것을 확인했다. 취약점이 터지는 strcpy 부분에 break를 걸고 ret 위치를 확인했다. ret는..
-
[LOB] gate > gremlinWargame/Lord of Buffer Overflow 2021. 5. 22. 17:35
[LOB] gate > gremlin 주어진 c코드를 보면 strcpy(buffer, argv[1])로 argv[1]을 buffer로 복사하는데 이 과정에서 strcpy() 함수가 복사하는 문자열 길이 검사를 하지않아 Buffer Overflow 취약점이 발생한다. buffer에 쉘 코드를 넣고 ret를 쉘 코드 주소로 변조시켜 공격하면 될 것 같다. gdb로 buffer의 위치를 구해보자. 권한 문제로 복사해서 진행 intel 문법으로 바꾸어 확인하였다. 해당 부분을 보면 buffer의 크기만큼 256byte의 공간이 스택에 생긴 것을 확인할 수 있다. buffer [256] | sfp [4] | ret [4] buffer의 위치는 0xbffff908이다. 이제 쉘 코드를 넣고 ret에 0xbffff9..