WarGame/LOB(22)
-
LOB - 4. goblin -> orc
이번 문제는 1번부터 4번까지 풀면서 가장 오랜 시간을 소비한 문제같다. 쉘코드를 구글에서 구해서 풀었지만, 쉘코드를 만들어야 실력이는다는 조언을받아서 10번정도까지 풀어보고 쉘코드 만드는 것을 공부해야겠다. 이 문제의 소스코드부터 보죠 특징을 살펴보면1 .매번 환경변수 초기화를 시키고2. 48번째의 자리에는 "\bf"만 와야한다. (그렇지 않으면 종료) 환경변수를 설정해 줄수 없으므로 공격하는 구문안에 직접 쉘코드를 집어넣어야한다. 그리고 48번째는 리턴값의 마지막주소이므로 리턴값을 조작하는데에도 까다로울 것으로 예상된다. 일단 이번에 사용한 쉘코드는 이것이다. "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x..
2018.07.05 -
LOB - 3. cobolt -> goblin
드뎌 LOB3번째 문제이다.3번째 문제 먼저 로그인을하고 cat명령어를 사용하여 소스코드를 보자. 기존에는 모두 strcpy 명령어를 사용하였지만 3번 부터는 puts라는 함수를 사용한다. 이에따라서 공격기법도 조금 바뀌었다. 하지만 그 사이의 기존과정은 모두 같기에 크게 어렵게 생각할 필요는 없다. 똑같다. 쉘코드를 환경변수에 등록해준다. 마찬가지로 쉘의 주소를 따고 이제 공격을 넣어준다. 짠..간단하다 stdin함수로 input을 받을때에는 ()로 묶어서 공격을 해주어야하고,strcpy와 같은 함수로 input을 받을때에는 ``로 묶어야 한다.
2018.07.05 -
LOB - 2. gremlin -> cobolt
후..두번째문제 한 선배님께서 포너블은 처음에는 엄청어려운데 조금하면 쉬울때가 온다고 해주셨다. 틀린말이 아닌 것 같은 실감이 든다. 본론으로 들어가면 2번 문제인 cobolt 도 1번하고 완전 똑같은 문제라고 보아도 무방하다. 물론 버퍼의 크기만 다르다. 먼저 실행하고 ls 명령어를 쳐본다 cobolt.c의 소스코드를 보자. 버퍼가 16byte이므로 sfp까지 20을 덮어주고 ret를 조작해주면 될 것이다. export명령어를 써서 shell코드를 환경변수에 넣어주고 shell코드의 메모리위치를 얻어온다. 1번과 똑같이 버퍼크기만 바꾸어서 대입해준다. 가끔 이렇게 나오시는분들은 꼭 bash2를 해주셔야 합니다. 그럼 bash2하고 다시시도! bash짠! (grin) 후후 포너블은 꿀잼이다.
2018.07.05 -
LOB - 1. gate ->gremlin
첫 LOB문제이다. 처음이라그런지 오랜시간이 걸리기는 했지만, 하면 할수록 더 늘거라 믿는다 ㅎㅎ 먼저 gate/gate로그인을 하고 보면 이렇다. gremlin.c 파일의 코드를 보면 버퍼가 256개 라고 되어있다. buffer(256) + sfp(4) 를 덮어주고 + ret(4) 를 변조해주면 된다. ret(4)를 변조해주는 이유는, 미리 shellcode를 만들어놓고 ret주소를 shell로 향하게끔 해주면 shell을 딸 수 있을 것이다. shellcode는 구글에 검색해서 굴러다니는거 아무거나 가져와서 했다. 나중에는 직접 만들어보면 더 좋을것이다 이렇게 쉘코드를 등록해준다.(앗..너무작다.ㅠ) 그다음에 할 일은 쉘코드의 메모리 위치를 가져오는 것이다. vi로 쉘코드 위치를 불러오는 코드를 작성..
2018.07.05