9

    [LOB] Level9: troll → vampire

    [LOB] Level9: troll → vampire

    vampire /* The Lord of the BOF : The Fellowship of the BOF - vampire - check 0xbfff */ #include #include main(int argc, char *argv[]) { char buffer[40]; if(argc < 2){ printf("argv error\n"); exit(0); } if(argv[1][47] != '\xbf') { printf("stack is still your friend.\n"); exit(0); } // here is changed! if(argv[1][46] == '\xff') { printf("but it's not forever\n"); exit(0); } strcpy(buffer, argv[1])..

    webhacking.kr Level 9 문제풀이

    webhacking.kr Level 9 문제풀이

    Level 9 숫자 버튼이 1~3 까지 있고, 패스워드 입력 창이 보인다. 1번을 누르면 "Apple"이 보여지고, no값이 1이 된다. 2번은 "Banana" 이다. 3번은 "Secret" 이라고 나오면, 힌트들이 보여진다. 길이는 11자리이며, 컴럼에는 'id'와 'no' 가 있다고 나와있다. 일단 no에 값에 따라서 나오는 문자열들이 id값이라고 추측해볼 수 있다. 우리가 넣을 수 있는 input값은 no 파라미터이다. 즉, no파라미터를 조작하여 no=3의 id를 알아내면 될 것같다. 일단, "Apple", "Banana"가 id값이 맞는지 테스트해 보았다. 위와 같은 쿼리문으로 id값이 맞는지 확인해 보려고 했으나, (') 문자 필터링 되어 있었다. 그래서 필터링 되는 문자들을 몇개 찾아보니 '..

    [LOS]Level9 vampire 문제풀이

    [LOS]Level9 vampire 문제풀이

    6번째줄에 str_replace()함수를 이용해서 'admin'을 빈값으로 대체한다.(str_replace(A,B,C) : C문자열에서 A를 찾아서 B로바꾼다) 10번째줄에 id값이 'admin'이여야지 문제가 풀린다. [풀이 1] 해당문제는 매우 간단하다. admin이 빈값으로 대체되도 admin이 되도록 하면 된다. 무슨말인지 예제를 보자. adadminmin -> admin 으로 바뀐다. admadminin -> admin 으로 바뀐다. 이런식으로 응용하면 될 것이다. [풀이 2] 또다른 방법으로 troll문제와 같은 방법으로 풀어도 된다. 소문자 admin만 대체하기 때문 :)

    [해커스쿨] FTZ level9 풀이과정

    [해커스쿨] FTZ level9 풀이과정

    2017/01/11 - [Study :)/FTZ] - [해커스쿨] FTZ level8 풀이과정 힌트를 봐야 겠지? 힌트를 보니 Buffer Overflow 문제인 것같다. 버퍼 오버플로우는 어떻게 발생하는가? 버퍼 오버플로우를 이해하기 위해서는 먼저 프로그램이 데이터를 어떻게 저장하고 어떻게 함수가 호출되는지 알아야 한다. 하나의 프로그램은 수 많은 함수로 구성되어 있는데 이 함수가 호출될 때, 지역 변수와 복귀 주소(Return Address)가 스택(Stack)이라 하는 논리 데이터 구조에 저장된다. 복귀 주소가 저장되는 이유는 함수가 종료될 때 운영체제가 함수를 호출한 프로그램에 제어권을 넘겨야 하는데, 이 복귀주소가 없으면 함수가 종료된 후 어떤 명령어를 수행해야 할 지 모르기 때문이다. 버퍼 오..