Hacking 4

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

Foremost tool

위키문서 : https://en.wikipedia.org/wiki/Foremost_(software)참고자료 : https://m.blog.naver.com/koromoon/220553895618 포렌식 CTF 문제에서 사용할 수 있는 툴입니다.어떤 파일 안의 다른 파일이 숨겨져 있을 경우, 추출해줍니다.예를 들면ELF 시그니쳐로 시작하는 파일 속에, PNG 시그니처, JPEG 시그니처 등이 보여서 안에 다른 파일이 숨겨진 듯 할 때파일 용량이 뭔가 이상하게 클 때(파일의 형식에 비해)등, 이 툴을 이용해 문제를 해결할 수 있습니다. 사용 방법은 foremost -h를 치면 쭈루룩 나오긴 합니다.$ foremost [-v|-V|-h|-T|-Q|-q|-a|-w-d] [-t ] [-s ] [-k ]     ..

Hacking/MISC 2024.07.17

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