WarGame(229)
-
LOB - 5.orc -> wolfman
5번째 LOB이다. 중간에 조금 쉬긴하였지만 LOB는 여전히 재미있다. 그럼 소스코드부터 확인하자 소스코드를 보니 전과 다 비슷한데 맨 아랫줄에 metset(buffer, 0, 40);이 추가되었다. 검색해보니 buffer을 초기화하는 함수라고 한다. 버퍼를 초기화하는 함수라는 것을 알았으니 버퍼에는 값을 넣어주어도 소용이 없다는 것을 알았다. argv[2]의 시작값을 리턴값으로 돌려주고, 그 부분에 쉘코드를 넣으면 실행이 될 것 같다. 그럼 우리가 지켜야하는 규칙을 정리해보자 1. argc가 2이상이여야한다. (일단 길게넣자) 2. 환경변수 설정 불가능 3. argv1의 48번째 는 "\xbf"여야한다. 4. 버퍼는 초기화된다. 1. gdb로 메모리 값을 보기 위해 원본파일을 복사해준다 2. 복사한 파..
2018.07.05 -
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 -
already got (Write up)
Wargame.kr - 2.1 ---- already got 처음에 클릭을 하게되면 이렇게 뜨죠. /*HTTP Response header을 볼 수 있니???*/ 자.. 들어가보죠! 너는 이미 키를 받았어!!!??????? (난 받은적 없는데.. 받았다네;;) 여기서 그럼 문제에 설명에 HTTP헤더를 보아라 라고했으니.. 이것은 보는 방법을 찾으면 해결될 것 같습니다. 일단 웹해캥은 F12부터 눌러보는 습관이..있어서 HTTP는 네트워크 프로토콜 이므로 Network창으로 들어가 보겠습니다. 일단 들어왔지만 이상태로 얻을 수 있는 정보는 없는거 같군요. 앗...F5를 눌러보라네요.. 눌렀더니 이상하게 막 움직이더니 여러개의 파일들이 보이네요... 그중 already_got??? 아주 많이 수상합니다. 한..
2018.07.05