Wargmae

    [Hack CTF - BOF_PIE]

    Execute 문제로 주어진 파일을 실행 시키면 특정 address값을 leak해준다. 재실행시 동일한 값이 leak되는것 역시 확인 할 수 있다. Analyze PIE와 NXbit가 걸려있는 것을 확인 할 수 있다. 이번 문제가 bof_pie이므로 PIE를 우회하는 방향으로 문제를 풀어야 할 것 같다. PIE는 ASLR과 비슷하게 생각하되, 차이점은 PIE는 Code(Text)영역을 포함한 모든 영역(Data, Stack, Heap, Libc)을 랜덤하게 매핑시킨다는 것이다. 프로그램의 동작을 정확하게 확인하기 위해 IDA를 통해 코드를 살펴보자. Main Main은 별동작을 하지 않고 단순이 welcome함수를 실행시키고 Nah….를 출력한다. Welcome welcome함수를 살펴보면 앞서 leak..

    [Pwnable.xyz - J-U-M-P]

    Execute 문제로 주어진 파일을 실행하면 위와 같이 메뉴를 보여주고 특히 3번 option을 선택하면 특정 address를 준다. Analyze 보호기법은 NXbit PIE Relro가 걸려있는 것을 확인 할 수 있다. 이제는 Ida를 통해 각각의 메뉴가 어떤 동작을 수행하는지 확인해보자. Main Line 8 : gen_canary함수 호출 Line 10 : v5변수에 loc_BA0의 address를 넣는다. Line 15 : v3변수에 read_int8함수의 return값 대입 Line 18~20 : case2인경우 v5에 v3와 v5를 xor연산한 결과를 대입한다. Line 21~24 : environ 변수의 주소를 leak해준다. Line 25~28 : v4변수가 canary와 같을 경우 JU..

    [Hack CTF – Simple_Overflow_ver_2]

    Execute 문제로 주어진 파일을 실행하면 입력을 받고 입력받은 값이 저장된 위치를 출력해주는 것으로 보인다. 파일 재실행시 address로 추정되는 값들이 바뀌는 것으로 보아 해당 값을 leak해준뒤 이를 기반으로 exploit을 작성해야 할것같다. Analyze 보호기법을 확인해보면 아무것도 안 걸려있는 것을 확인 할 수 있다. Main Line 13 : scanf함수를 통해 s변수를 입력 받는다. 이때 \n을 파라미터로 주어 \n도 입력 받는다. Line 15~26 : for문으로 앞서 execute에서 확인했던 것처럼 s[i]의 address를 leak해주고 s배열 속에 든 값을 출력해준다. Line 29 : do while문의 탈출 조건으로 scanf의 return값이 0이 아니고 v5가 ‘y..

    [Hack CTF – x64 Simple_size_BOF]

    Hack CTF – x64 Simple_size_BOF Execute 먼저 문제 파일을 실행 하면 특정 address값을 leak해조고 문자열을 입력받는다. 실행시마다 leak되는 값이 달라지는 것을 확인 할 수 있다. Analyze 아무런 보호기법도 걸려있지 않은 것을 확인할 수 있다. 특히 nxbit가 풀려있으므로 shellcode를 올려서 shell을 얻을 수 있다. Main Line 6 : s변수의 내용을 puts함수를 통해 출력한다. Line 7: printf함수를 통해 v4변수의 address를 leak해준다. Line 8 : gets함수를 통해 v4변수에 입력을 받는다. gets함수는 입력값의 길이를 검증하지 않기 때문에 buffer overflow를 발생 시킬 수 있을 것이다. Solve ..

    [Hack CTF – x64 Buffer Overflow]

    Execute 문제로 주어진 64bof_basic파일을 실행시키면 입력을 받고 hello라는 문자열과 앞서 내가 입력한 문자열을 출력해준다. 이외에는 특별히 address를 leak하거나 다른 동작은 하지 않는다. 프로그램의 동작을 파악하기 위해 IDA를 통해 확인해보자. Analyze 보호기법을 확인해보면 nxbit만 활성화 되어있다. 따라서 이번문제는 shellcode를 직접 올리는것이 아니라 단순이 ret변조를 통해 프로그램 실행 흐름을 변경해서 shell을 얻는 문제인 것 같다는 생각을 하였다. Main Line 6 : scanf함수를 통해 문자열 형태로 s변수를 입력받는다. Line 7 :strlen함수로 앞서 입력한 문자열의 개수를 v5에 대입한다. Line 8 : hello문자열과 함께 s변..

    [Hack CTF – 내 버퍼가 흘러넘친다!!!]

    Execute 문제로 주어진 파일을 실행하면 name과 input을 받고 프로그램을 종료한다. 이외에는 특별한 동작을 하지 않는다. Analyze 먼저 prob1 파일의 보호기법을 확인해보자. 아무것도 걸려있지 않을 것을 확인 할 수 있다. Nxbit가 앞선 문제에서는 걸려있었는데 해제 되어있는 것 보아 shell을 얻기 위한 shellcode를 직접 넣지 않을까? 라고 생각하였다. 정확하게 프로그램의 동작을 알기 위해 IDA를 통해 열어보았다. Main Line 5 : setvbuf함수를 이용해 버퍼를 비운다. Line 7 : read 함수를 이용해 name변수에 0x32만큼 입력을 받는다. Line 9 : gets함수를 이용해 s변수를 입력 받는다. Line 9의 gets 함수는 입력 값의 길이를 검..

    [Hack CTF - Baisc_FSB]

    Execute 문제에서 fsb라고 대놓고 주고 있기 때문에 일부러 포맷 스트링을 넣을 결과도 확인해 보았다. Fsb를 이용해서 푸는 문제인 것이 거의 확실해 졌다. Analyze 프로그램의 동작을 정확하게 알아 보고 어떤 부분에서 fsb가 발생하는지 확인하기 위해 IDA를 통해 열어보자. Main Mina 함수는 별다른 동작을 하지 않는데 누가봐도 수상한 함수인 vuln함수를 호출한다. Vuln Line 7 : fget을 통해 1024byte만큼 s변수에 저장한다. Line 8 : snprintf를 통해 format에 0x400byte만큼 s변수의 내용을 복사해준다. Line 9 : printf함수를 통해 format의 내용을 출력한다. Line9에서 printf함수를 보면 포맷 스트링을 지정해주지 않아..

    [Hack CTF - Basic_BOF #2]

    Execute 문제로 주어진 bof_baasic2파일을 실행하면 입력을 받고 뭔가 알 수 없는 값들을 출력해주고 프로그램이 종료된다. 정확히 어떤 값을 입력하고 출력하는 것 인지 확인 하기위해 IDA에 올려 프로그램을 분석해보자 Analyze 해당 프로그램에 걸려있는 보호기법은 아래와 같다. Nxbit만 걸려있는 것을 확인 할 수 있다. Main Line 6 : 포인터 변수인 v5에 sup함수의 시작주소를 대입해준다. Line 7 : fgets함수로 변수 s에 133byte만큼 입력을 받는다. Line 8 : v5변수에 들어있는 함수(sup)를 실행 시킨다. sup puts함수를 이용해 s변수의 주소를 출력한다. 앞서 입력했을때 출력되는 알 수 없는 값은 위 코드로 인해 실행되는것 같다. Shell 쉘을..