본문 바로가기
ftz 풀이 level13 ftz level13 풀어보겠습니다. 힌트조회부터 하겠습니다. 계속 비슷한 형식의 문제가 나오는거 같습니다. 이번에는 버퍼오버플로우 취약점이 존재하나 i의 값이 0x1234567 이 아니면 바로 종료되는 문제입니다. 저 해당조건을 우회할 수 있는 버퍼오버플로 공격을 하는게 목적이 될거 같습니다. 우선 늘 해왔던대로 tmp디렉터리에 옮겨주고, 디스어셈블러로 한번 구조를 보겠습니다. ebp에 i의 값(0x1234567)을 넣어 에서 비교를 하여 0x1234567이 아닐경우 종료하는 구조입니다. 1024(배열)+24(dummy)+4sfp(base pointer)+4ret(return address)=1056 이러한 구조로 생각할 수 있는데 24바이트의 더미 어딘가에 0x1234567값(비교를 위한 값)이 존재.. 2017. 1. 2.
ftz 풀이 level12 ftz level12 풀어보겠습니다. 힌트조회 입니다. level11과 유사한 코드이나 이번에는 gets 함수가 있음을 볼 수 있습니다. 저번과 다르지만 gets 함수의 BOF 취약점을 이용한 공격을 하겠습니다. 우선 메모리먼저 살펴보겠습니다. level11과 매우 유사합니다. 우선 배열할당과 크기는 전과 같습니다. 256(배열)+8(dummy)+4sfp(base pointer)+4ret(return address)=272 저번과 같이 환경변수를 만들어 268바이트에 아무문자나 넣고, 뒤에 4바이트는 쉘코드의 주소를 넣어 쉘코드를 실행시키도록 하겠습니다. 우선 환경변수를 만들어 줍니다. 쉘코드 앞에는 NOP를 붙여줍니다. 함수 점프시 메모리주소가 처음쉘코드에 안잡힐 수도 있습니다.쉘코드와 환경변수 설정은.. 2016. 12. 31.
6. Routing Protocol_2(RIP) RIP 프로토콜의 문제점과 해결방안을 알아보겠습니다. 전에 했던 그림 그대로 가져왔습니다. 3대의 라우터가 있고 각자 hop count를 주고받아 라우팅 테이블을 업데이트 하였습니다.1 라우팅 테이블2 라우팅 테이블3 라우팅 테이블A0B0C0B0C0D0C1A1B1D2D1A2 그러다가 A네트워크에 문제가 생겨 Down 상태가 됩니다. 이때 계속 방치하게 되면 RIP의 라우팅 루프(Routing Loop)가 생깁니다. 1 라우팅 테이블2 라우팅 테이블3 라우팅 테이블AdownB0C0B0C0D0C1A1B1D2D1A2 A네트워크가 다운되어 A로 못내보내는 1라우터는 2라우터에게서 A네트워크의 정보를 받습니다. 하지만 2라우터는 A가 다운된지 모르기 때문에 hop count를 넘기면서 1라우터는 hop count.. 2016. 12. 28.
ftz 풀이 level11 ftz level11을 풀어보겠습니다. 우선 힌트 조회 입니다. 힌트에는 C언어가 있습니다. strcpy 명령을 보니 버퍼오버플로를 생각할 수 있습니다. 그리고 attackme라고 자신을 공격해 달라는 파일이 떡하니 있습니다. 힌트로 코딩된 파일로 유추할 수 있습니다. attackme 파일을 실행해보면 뒤에 나오는 인자를 그냥 그대로 출력해 줍니다. 배열의 크기가 256이니 그 보다 큰 인자를 넣어서 버퍼 오버플로를 일으킨다고 생각하면 될거같습니다. 본격적인 작업을 하기전에 디버깅을 위해서 attackme 파일을 tmp 디렉터리 안으로 옮겨줍니다. 저는 attack이라는 파일로 복사하였습니다. 메모리 분석을 위하여 gdb [파일명] 을 사용하였습니다. gdb에 관한 명령어는 아래 URL을 참조하시기 바랍.. 2016. 12. 28.
5. Routing Protocol_1(RIP) 동적라우팅 프로토콜에서 Distance Vector Routing Protocol중 하나인 RIP를 알아보겠습니다. 그 전에 Distance Vector Routing Protocol을 알아보겠습니다. 동적 라우팅은 DVRP(줄여서 썼습니다.)와 Link-State 방식 두가지가 있습니다. 하나는 거리에 따른 하나는 링크상태에 따른 경로결정 방식이라고 보시면 될거 같습니다. 지하철로 예를 들면 편하게 이해할 수있습니다. 아래 그림과 같이 되어 있는데 경로가 두가지로 갈 수 있습니다. A에서 B로 한가지는 3정거장을 거쳐서 가는 경로이고 다른 하나는 5정거장을 거쳐 갑니다. 일단 육안으로 보아도 거리상으로 5정거장을 가더라도 2번루트를 선택하는것이 빨라보입니다. 1번루트의 장점은 정거장 수가 적다는거? 정.. 2016. 12. 23.
main 함수 없는 C 언어?? C언어 코딩할때 main() 함수는 꼭 필요한 함수입니다. 없으면 에러가 나게 됩니다. main 함수가 시작점이고 main으로 부터 다른 함수의 호출이 이루어 지기 때문인데 이러한 main 함수 없이도 프로그램이 돌아갈 수가 있다고 합니다. 해당 URL에서 본 내용을 토대로 작성하였습니다.https://latesthackingnews.com/2016/10/16/can-write-c-program-without-main-function/ 우선 기본적인 출력문부터 시작하겠습니다. 실행환경은 http://www.ideone.com 에서 실행하였습니다. main 함수안에 출력문을 넣어서 정상 출력되었습니다. 이번에는 함수이름을 test로 바꾸어서 해보았습니다. 역시 오류가 났습니다. 아래 코드를 보면 두줄이 추.. 2016. 12. 22.