목록전체 글 (67)
R4mbb

64비트 BOF 문제인 듯 하다. ida로 코드를 확인해보자. 저 함수를 실행하면 쉘이 따질 것이다. 해보자! 1. s 부터 ret까지의 거리는 0x120이다. 2. callMeMaybe 주소(8byte)로 36번 도배하자. 익스를 짜보자. 성공적으로 익스가 되었다. 플래그는 HackCTF{64b17_b0f_15_51mpl3_700} 이다.

BOF 문제다. 파일을 다운받고 한번 실행해보자. 두 개의 입력을 받는다. IDA로 코드를 확인해보자. s 변수는 main함수 내에 있고 name 변수는 보이지 않는다. 전역변수다. name의 주소는 0x0804A060 이다. 이번엔 gdb로 prob1을 확인해보자. 음.. gets에 입력되는 부분에 bp를 걸고 어디에 입력되는지 확인해보자. 이렇게 두 개의 변수에 각각 AAAA와 AAAABBBBCCCCDDDD를 입력했다. 스택값을 확인해보자. s 변수에는 0xffffd164 부터 입력이 됐다. 그런데 빨간 박스 부분을 보니 메인함수 ret 때 호출이 되는 주소인 것을 확인할 수 있었다. 그렇다면 s 변수에서 입력받을 때 0xffffd17c 에 쉘코드를 넣어 실행시켜주면 될 것 같다. SCENARIO 1..
1. NX-Bit ( NX bit, Never eXecute bit, 실행 방지 비트 ) - 프로세스 명령어나 코드 또는 데이터 저장을 위한 메모리 영역을 따로 분리하는 CPU의 기술이다. - NX 특성으로 지정된 모든 메모리 구역은 데이터 저장을 위해서만 사용되며, 프로세스 명령어가 그 곳에 상주하지 않음 으로써 실행되지 않도록 만들어 준다. > 인텔 : XD-bit (eXecute Disable) = NX-bit 2. DEP (Data Execution Prevention) - 마이크로소프트 윈도우 운영체제에 포한된 보안기능이고, 악의적인 코드가 실행되는 것을 방지하기 위해 메모리를 추가로 확인하는 하드웨어 및 소프트웨어 기술이다. - DEP의 두 가지 모드 > 하드웨어 DEP : 메모리에 명시적으로..

FSB 공부를 하며 FSB에 관한 문제를 더 풀어보고 정리하고 싶어서 메모에다가 남긴다. 먼저, 파일을 다운받고 IDA로 열어서 코드를 확인해보자. main함수에 printf(&buf) 부분에서 FSB 취약점이 터지는걸 확인할 수 있다. 함수를 살펴보면, hide라고 아주 수상하게 생긴 함수가 존재한다. hide 함수를 이용해서 해결하면 될 것 같다. 우분투에서 한번 실행해보자. 처음 입력한 AAAA가 포맷 스트링을 입력한 후로 4번째에 hex 값으로 출력이 되었다. 그렇다면, 순서는 이렇다. 1. read 함수로 입력을 받을 때 앞 부분에 exit 함수의 GOT 주소를 넣어준다. 2. %hn (%n)을 활용해서 처음에 넣은 exit_GOT 주소위치에 hide 함수의 주소를 넣도록 조작한다. ※ %hn은..

먼저 파일을 윈도우와 우분투에 받자. 그리고 IDA로 디스어셈해보자. 문제의 이름이 BOF인 만큼 fgets() 함수에서 입력받는 과정에서 버퍼 사이즈를 잘 못 지정해서 취약점이 발생한 것 같다. fgets() 함수에 대해 알아보자. fgets(char * str, int num, FILE * stream) - 첫 번째 인자는 읽어들인 문자열을 저장할 char 배열을 가리키는 포인터이다. - 두 번재 인자는 마지막 NULL문자를 포함하여 읽어들일 최대 문자 수이다. - 세 번재 인자는 문자열을 읽어들일 스트림의 FILE 객체를 가리키는 포인터이다. - 리턴값은 성공했을 경우 char 배열을 리턴하고 아무런 문자가 없거나 오류가 발생했을 때는 NULL이 리턴된다. shell() 함수가 존재한다. gdb로 ..

Format String Bug (FSB) : printf() 함수 계열을 사용할 때, 인자로 포맷 스트링과 포맷 스트링에 대응하는 인자를 사용하지 않고 바로 변수를 인자로 지정했을 때, 악의적인 공격자가 포맷 스트링을 입력하여 스택의 값을 leak 하거나, RET나 _DTOR_END__, GOT와 같은 프로그램의 흐름을 제어할 수 있는 메모리 주소값을 변조하여 악의적인 행동을 할 수 있게 된다. 윈도우와 우분투에 파일을 다운받고 IDA로 코드를 확인해보자. 메인함수에선 따로 확인할건 없어보인다. vuln 함수를보자. snprintf 함수와 printf 함수에서 서식문자를 따로 지정해주지 않고 바로 넘겨버린다. 이 함수에서 FSB 취약점이 발생한다는 것을 알 수 있다. 두 함수에 대해 알아보자. spri..