Hacking/Pwnable 3

Type Error

타입을 반환하거나.. 변환하거나... 한 타입에서 다른 타입으로 값이 옮겨지는 과정의 논리적 취약점이다.예를 들면)int로 값을 입력받아 특정 함수에 넘겨준다.해당 함수에서 어떠한 검사 과정을 거쳐, int형으로 값을 반환한다.반환 받는 변수가 unsigned short형이다.위 과정에서 int -> unsigned short로 바뀌면서 소실이 일어난다.해당하는 CTF 문제 하나를 예시로 마무리하겠다.#include #include #include #define MAX_ID_LEN 10#define USERS_COUNT 5char account_id[USERS_COUNT][MAX_ID_LEN] = { "james", "sarah", "gildong", "asdf1234", "admin" };int get..

Hacking/Pwnable 2024.07.18

RTL and ROP

RTL(Return To Library)NX로 인해 셸코드를 사용할 수 없어졌다.그래서 아직 실행 권한이 있는코드 영역코드가 참조하는 라이브러리의 코드 영역을 이용하여 NX를 우회하여 공격하는 기법이 등장했다.위 두 영역에 공격자가 필요한 코드가 존재하면 -> 그 코드를 가져다가 사용.여기서 라이브러리를 사용하는 공격이 바로 "Return To Library(RTL)" 이다.이 기법에서 필요한 것들을 적어보면,해당 코드의 메모리 주소해당 코드의 호출 주소(PLT 주소 등)ret으로 끝나는 어셈블리 코드 조각.구하는 방법:ROPgadget 명령어 사용(정규 표현식으로 필터링 할 수 있음) 참고:system 함수로 rip가 이동할 때, 스택은 반드시 0x10단위로 정렬되어 있어야 한다는 것입니다. 이는 sy..

Hacking/Pwnable 2024.07.14

원하는 주소로 return 시키기

Return Address Overwrite(이하 RAO) 기법이다.내가 어떤 주소로 rip를 이동 시키고 싶고, 그 주소의 hex값을 알았을 경우, BOF 등으로ret 주소를 덮어써서 해당 주소로 가도록 유도하는 것이다.기본 문제인 드림핵의 basic_exploitation_000 을 예시로 적용해보자.(https://dreamhack.io/wargame/challenges/2)파일을 받아보면 C파일과 그것으로 컴파일한 실행파일이 있다.코드는 이러하다.#include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1);}void initialize() { setvbuf(stdin, NULL, _IONB..

Hacking/Pwnable 2024.07.12