Write-up 48

[Dreamhack] basic_exploitation_001

문제오랜만에 문제 하나 심심해서 풀었다.분석NX(No-eXecute)로 메모리 상에서 코드 실행이 가능한 메모리 영역과 가능하지 않는 메모리 영역을 분리하는 보호기법이 설정되어 있다. 이에 따라서 쉘코드를 메모리 상에 넣어놓고 실행하는것은 불가능 할 것 같다.함수는 여러개가 있는데 read_flag는 뭔가 flag를 잃어주는 그런 함수인 것 같다.System함수로 cat flag하는 것 맞았다.아무래도 이걸 사용하는 것 같다.프로그램 실행코드 실행을 했을 땐 바로 입력 받는 것 외에는 별다른 건 없다.코드분석: mainpwndbg> disassemble mainDump of assembler code for function main: 0x080485cc : push ebp 0x08048..

Write-up/Wargame 2024.10.03

[Dreamhack] basic_exploitation_000

개요 요즘 pwnable에 빠져있다. 간간히 임베디드와 리버싱 그리고 프로젝트를 진행하면서 블로그에 정리할 예정이다. 오늘 풀이할 문제는 Dreamhack의 Systemhackig 과정에 있는 문제이다. 전반적으로 풀면서 pwnable에 대해 익히는 계기가 됐다. 문제 파일을 다운받으면, 바이너리 파일과 소스코드를 준다. 소스코드부터 보자. 풀이 #include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1); } void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handl..

Write-up/Wargame 2024.03.24

[Dreamhack] ReturnAddressOverwrite

개요 수준 유지를 하고자 요즘 드림핵을 다시 시작했다. 기본적으로 바이너리 파일과 소스코드를 준다. 바이너리 파일을 보기 전에 소스코드부터 보자. // Name: rao.c // Compile: gcc -o rao rao.c -fno-stack-protector -no-pie #include #include void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); } void get_shell() { char *cmd = "/bin/sh"; char *args[] = {cmd, NULL}; execve(cmd, args, NULL); } int main() { char buf[0x28]; init(); printf("Input: "); scanf..

Write-up/Wargame 2024.03.22

[pwnable.kr] fd

[Pwnable.kr] fd 문제 ssh로 pwnable.kr 서버 포트 2222로 접속하라고 한다. 해주자 분석 병적으로 ls를 쳤더니 flag파일이 있었다. 그러나 저 파일은 권한이 440으로 guest로 진입한 내 계정으로는 볼 수 없는 파일이다. fd를 실행해보면 이렇게 리눅스 파일의 입출력에 대해 공부하라고 나온다. 아쉬운대로 fd.c파일을 보자 vim으로 보면 한눈에 확 들어온다. 1 #include 2 #include 3 #include 4 char buf[32]; 5 int main(int argc, char* argv[], char* envp[]){ 6 if(argc 23562 여기서는 프로그램 실행시 인자를 받을때 문자열 형태로 받으니 이를 숫자로 변환해주려고 하는 것이다. 다음은 re..

Write-up/Wargame 2023.11.12

[Dreamhack wargame] rev-basic-4

[Dreamhack] rev-basic-4 문제 분석 프로그램 실행 프로그램을 받아서 실행했더니, 역시나 바로 종료된다. ida pro ida pro를 이용해서 파일을 보자. 나는 프로그램을 실행했을 때, 나타나는 문자열을 검색해서 해당 부분의 코드들을 볼 것이다. 처음에는 start 함수가 나온다. [shift + f12]를 사용해서 문자열 검색을 해보자. "Correct"이 보인다. 더블클릭해서 들어가서, 해당 문자열을 참조하는 코드를 보기 위해 [x]키를 눌러 들어간다. 코드분석: sub_140001130() __int64 sub_140001130() { char v1; // [rsp+20h] [rbp-118h] memset(&v1, 0, 0x100ui64); sub_1400011C0("Input ..

Write-up/Wargame 2023.11.12

[Dreamhack wargame] rev-basic-3

문제 분석 프로그램 실행 프로그램을 받아서 실행했더니, 바로 종료된다. ida pro ida pro를 이용해서 파일을 보자. 나는 프로그램을 실행했을 때, 나타나는 문자열을 검색해서 해당 부분의 코드들을 볼 것이다. [shift + f12]를 사용해서 문자열 검색을 해보자. "Input:"이 보인다. 더블클릭해서 들어가보자. 여기서 Input: 부분을 누르고, 해당 문자열을 참조하는 코드를 보고 싶으므로 [x]키를 눌러보자 들어간다. [f5]을 누르면 어셈블리어가 C언어로 보기 쉽게 바뀐다. 코드분석: sub_140001120() __int64 sub_140001120() { char v1; // [rsp+20h] [rbp-118h] memset(&v1, 0, 0x100ui64); sub_1400011B..

Write-up/Wargame 2023.09.04