배웠던 것들을 복습할 수 있었던 좋은 문제인것 같다.convert_caseint 인자에 따라서 들어온 char값을 대/소문자로 바꿔주는 역할을 한다. 그렇게 중요한 역할을 하지는 않는 듯.do_stuff얘가 주목할 만한 함수이다.scanf("%\[^\\n]", buf)
c코드로 변환해 보면 아래와 같다.코드 설명할당한 메모리 7개에 flag값을 넣어놓고, 마지막 1개에는 도움이 되지 않는 값을 넣는다.그 후 마지막 2메모리를 할당 해제한 후, 다시 할당한다.tcache가 존재하고, 이 크기에 해당하는 경우이므로 tcache에는 fai
이번 문제에서는 c코드가 주어졌다.코드를 보면, 취약점을 발견할 수 있는데, 바로 win함수의 fgets(winner, 360, stdin); 부분이다.BUFSIZE는 100밖에 되지 않는데, 360이나 되는 양을 read하니까 buffer overflow를 발생시킬
1. oorrww printf에서의 부동소수점에 대해 잘 몰라서 헤맸던 문제이다.. 문제의 기법 자체는 간단하다. 분석 모든 보호기법이 적용되어 있다. main함수를 보면, sandbox()라는 함수가 있는데, seccomp가 적용되었다는 것을 유추할 수 있다.
자체적으로 doubly-linked-list를 이용해서 계정을 관리하는 프로그램이다.sign_up() 함수를 보면 새로 만들어진 user_entry_t에 대해서 next pointer를 초기화 하지 않는 것을 확인할 수 있다.또한, remove_account()를 보면
엄청 큰 buffer overflow가 일어나는 문제이다.checksec을 해 보면 결과는 위와 같다.greeting() 함수를 보면 PIE의 base address에 대한 정보를 준다.즉, 바이너리를 이용해서 ROP를 하면 되는 문제다.이 문제에는 seccomp가 걸
16x16의 map에서 row와 column을 입력받은 후, 랜덤으로 존재하는 상대의 ship을 다 맞추는 게임이다.v9와 v10이 바로 16x16 char map이 저장된 배열이다.row와 column은 0 ~ 9, a ~ f의 값을 통해 입력받고, missile t
내부적으로 관리되는 struct Data 로 이루어진 linked list의 취약점을 찾아내야 하는 문제이다.alloc() 함수를 보면, 입력받은 사이즈 + 8의 크기만큼 할당을 받고, len 값을 입력받은 사이즈 값으로 설정하게 된다.그런데 edit() 함수를 보면,