BOF
[Hack CTF - RTL_World]
Execute 먼저 문제로 주어진 파일을 실행시키면 아래와 같다. 뭔가 옵션들이 주어지고 binary boss를 죽여야하는? 형태의 문제 같이 생겼다. 각각의 option들이 정확하게 어떤 역할을 하는지는 이후 IDA를 통해 알아보고 프로그램 형태만 보고 넘어가자 Analyze 보호기법에는 NXbit만 걸려있어서 메모리에 실행권한이 없을 것이다. 프로그램에서 1번 option을 선택하면 보여주기도 한다. ASLR도 걸려있는 것을 추가로 확인 할 수 있다. Main Line 11 : dlopen을 통해 /lib/i386-linux-gnu/libc.so.6 을 로드하고 handle에 so파일의 handle을 반환한다. Line 12 : dlsym을 통해 앞서 반환된 so파일의 handle을 인자로주어 sys..
[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..
[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 - Basic_BOF # 1]
Execute 문제 파일을 실행하면 입력을 받고 buf에 들어간 내용을 출력해준 후 check 0x4030201을 출력하여 뭔가의 주소를 출력해준다. 또한 내가 buf에 입력하는 내용이 너무 길다면 buffer overflow가 발생하여 check의 내용이 0x61(a)로 채워지는 것을 알 수 있다. Analyze 1번 문제인 만큼 NXbit 말고는 보호기법이 걸려있지 않다. 그럼 프로그램의 동작을 분석하기 위해 해당 파일을 IDA에 올려서 확인해보자. Main Line 6 : v5변수에 57305985를 대입해준다. Line 7 : fgets함수를 통해 s변수에 45의 길이 만큼 입력을 받는다. Line 8,9 : 앞서 입력한 s변수와 v5의 내용을 출력해준다. Line 10,11 : v5가 67305..