카테고리 Pwnable Team having solved this 27, Point 200 문제 32 bit elf 바이너리 사용자 정보를 등록하고, 수정하고, 볼 수 있는 프로그램이다. 1번 메뉴를 선택했을 때 불리는 creatAcc 함수의 내용이다. Name, phone number, balance 를 입력 받는다. 이때, Name과 phone number는 문자열, balance는 숫자로 입력 받고, account의 개수가 maxAcc(0xA)를 넘으면 생성할 수 없다. account ID는 생성한 순서대로 1부터 시작한다. 수정시에는 이 account ID를 이용하여 수정할 account를 선택하고 해당 account의 phone number를 수정할 수 있다. 여기에는 gets함수를 통해 입력 ..
카테고리 Miscellaneous Team having solved this 12, Point 300 문제 key 라는 gif 파일과 13개의 PNG들이 주어졌다. key라는 gif 파일에는 각 아이콘들의 동작 과정이 나타나있는데, 13개의 PNG 파일에 있는 아이콘들을 보고 7개의 전구 중 어떤 전구들에 불이 들어오는지를 보고 이를 7개의 비트로 나타내면 하나의 글자가 나온다. 이렇게 총 13개의 글자를 알아내어 SHA1로 암호화하면 그 값이 flag이다. 첫 번째 PNG 파일의 결과는 위와 같다. 전원이 들어오면 하얀 박스 같이 생긴 것에 불이 들어오고, 물이 끓어 수증기가 되어 위로 올라간다. 체중계(?)처럼 생긴 것과 수증기가 만나면 전원이 공급되어 전구에 불이 켜진다. 1010100 : T 두 ..
카테고리 PWNABLE 문제 32 bit elf 바이너리인 echo_system 파일이 주어졌다. IDA로 열어보자. buf 변수는 ebp-0x88 에 위치하고 있지만 read 함수를 통해 최대 0xC8 바이트의 입력 값을 넣을 수 있다. buf 변수를 그대로 출력하고 있으므로 FSB!! 가 일어날 것 같았지만 자세히 보니 printf함수가 아니라 print라는 사용자 정의 함수였고, 내부적으로 write 함수를 통해 출력하고 있어 FSB는 일어나지 않는다. 또한 친절하게도 프로그램의 내부에 cat_flag라는, flag를 출력시켜주는 함수가 존재한다! 너무 쉬운 거 아닌가… BOF가 발생하므로 이를 이용해 RET를 cat_flag 함수의 주소로 변조하면 된다!! 라고 생각했지만 그렇게 간단한 문제는 아..
카테고리 PWNABLE 문제 32 bit elf 바이너리인 easy_uaf 파일이 주어졌다. 변수 선언 시점에 5개의 변수에 각각 malloc이 이루어진다. 이 중 세 번째 할당된 ptr에는 flag의 값이 기록된다. 그 후에는 while(1) 을 통해 메뉴가 반복되는데, hi write delete print exit 총 5개의 메뉴가 있다. 1번 메뉴인 hi는 "hi~ easy uaf, layer7"이 출력된다. 쓸모 없는 메뉴이다. 2번 메뉴인 write는 초기에 malloc해놓은 5개의 영역에 글을 쓸 수 있는 메뉴이다. "what ? > "이라는 물음이 나왔을 때 1을 입력하면 buf에, 2를 입력하면 s에, 3을 입력하면 ptr에, … 등등 선택 가능하다. 또한 주목할 점은, 할당된 공간이 0..
카테고리 PWNABLE 문제 32bit elf 바이너리인 easy_fsb_ 파일이 주어졌다. IDA로 열어봤다. 지역변수인 buf에 100 바이트만큼의 입력을 받고 이 변수를 printf로 바로 출력하는 간단한 프로그램이다. 버퍼 오버플로우는 존재하지 않으며, printf가 변수를 포맷 없이 출력하고 있으므로, 변수에 "%x"등을 입력할 경우 이것을 문자열이 아닌 포맷 스트링으로 인식하는 Format String Bug가 발생한다. "AAAA%x%x%x%x%x%x%x"를 입력할 경우, 스택의 값들이 출력되는데 이때 일곱 번째 %x에서 "AAAA"에 해당하는 값인 "41414141"이 출력된 것을 확인할 수 있다. 이 위치가 입력 데이터가 들어가는 변수인 buf의 시작 지점이다. printf에 사용되는 포..
카테고리 REVERSING 문제 welcome 이라는 64 bit 바이너리가 주어졌다. Mac에서 실행할 수 있는 파일(Mach-O) 인데 일단 IDA로 열어봤다. v6의 값들과 v7의 값들을 XOR 연산한 결과가 "WelcomeToLayer7CTF"와 같다면 "Congratulation!\n"이라는 문자열이 출력된다. v6의 값이 무엇이어야 하는지를 맞춰야 하는 것 같다. XOR 연산의 특성상 A ^ B = C C ^ B = A 이므로 "WelcomeToLayer7CTF"와 v7의 값들(v7부터 v9까지 총 18바이트)을 XOR 연산하면 v6의 값이 나온다. a = "0415062c07083501" a += "55040b2006090c60" a += "1B3C" b = "WelcomeToLayer7CT..
카테고리 WEB 문제 "admin"으로 로그인해야 하는 문제이다. "asdf"로 아이디를 만들어서 로그인해보면 쿠키에 "VlVaa01GSXhXWGRQVkVKcFZtMVNNVlJXV2xOVlVUMDk%3D" 라는 값이 저장되어 있다. %3D는 '='에 해당하는 아스키코드이므로 base64 암호화로 추측하고 디코딩을 시도했다. VlVaa01GSXhXWGRQVkVKcFZtMVNNVlJXV2xOVlVUMDk= VUZkMFIxWXdPVEJpVm1SMVRWWlNVUT09 UFd0R1YwOTBiVmR1TVZSUQ== PWtGV090bVduMVRQ =kFWOtmWn1TP base64에서 '='이라는 문자는 패딩을 위해 넣는 것으로 알고 있는데 디코딩을 반복하다보니 이 문자가 제일 첫 번째에 나타났다. 문자열이 거꾸로 ..
보호되어 있는 글입니다.
보호되어 있는 글입니다.