Yozzang의 해킹일기 💻
article thumbnail
[명령어] Makefile
Operating System/Linux 2022. 6. 27. 00:52

이번 포스트에서는 리눅스의 Makefile에 대해 다루겠다. Makefile : 실행 파일을 만들기 위해 필요한 파일들과 만드는 방법을 기술한다. 주요 매크로 : CFLAGS : cc와 gcc의 옵션을 지정한다. CC : C 컴파일러를 지정한다. (CC=gcc 혹은 CC=cc) ASFLAGS : as의 옵션을 지정한다. AS : 어셈블러를 지정한다. (AS=as) CPPFLAGS : c++와 g++의 옵션을 지정한다. CXX : C++ 컴파일러를 지정한다. (CXX=g++) LDFLAGS : ld의 옵션을 지정한다. LD : ld 프로세스를 지정한다. (LD=ld) LFLAGS : lex의 옵션을 지정한다. LEX : lex 프로세스를 지정한다. (LEX=lex) YFLAGS : acc의 옵션을 지정한다..

article thumbnail
[명령어] gcc
Operating System/Linux 2022. 6. 26. 00:28

이번 포스트에서는 리눅스의 명령어인 gcc에 대해 다루겠다. gcc : 유닉스 계열 운영체제에서 사용된 컴파일러이다. 주요 옵션 : -c : 목적파일까지 생성 -o : 별도의 실행파일 지정 -O : 컴파일 최적화 수행 -S : 어셈블리 프로그램 확인 -l : 특정 라이브러리 링크 -L : 라이브러리의 디렉토리 위치를 명시적으로 지정한다 -D : 매크로를 지정한다 실행 화면 :

article thumbnail
[명령어] vi
Operating System/Linux 2022. 6. 25. 00:52

이번 포스트에서는 리눅스의 텍스트 에디터인 vi에 대해 다루겠다. vi : 쉘 상에서 새로운 문서를 편집할 수 있는 환경을 제공한다. 명령 모드 : vi 명령어를 통해 vi를 시작할 경우 실행되는 모드. 방향키를 통해 커서를 이동할 수 있다. k : 한 줄 위로 이동 j : 한 줄 아래로 이동 l : 한 문자 오른쪽으로 이동 h : 한 문자 왼쪽으로 이동 ^ / 0 : 줄의 시작으로 이동 $ : 줄의 마지막으로 이동 - : 이전 줄의 처음으로 이동 + / Enter : 다음 줄의 처음으로 이동 H : 키 화면 맨 위로 이동 M : 키 화면 중간으로 이동 L : 키 화면 맨 아래로 이동 w : 다음 단어의 첫문자로 이동 b : 이전 단어의 첫문자로 이동 e : 다음 단어의 끝 글자로 이동 ( : 현재 문..

article thumbnail
[명령어] crontab, awk, du
Operating System/Linux 2022. 6. 24. 00:38

이번 포스트에서는 리눅스의 명령어인 crontab, awk, du에 대해 대루겠다. crontab : crontab 파일을 cron 시스템에 등록한다. 주요 옵션 : -l : 사용자의 등록된 crontab 파일 리스트 -e : 사용자의 등록된 crontab 파일 수정/생성 -r : 사용자의 등록된 crontab 파일 삭제 실행 화면 : awk : 파일로부터 레코드(record)를 선택하고, 선택된 레코드에 포함된 값을 조작하거나 데이터화하는 것을 목적으로 사용하는 프로그램이다. 주요 옵션 : -f : 필드 구분자를 c로 정할 수 있음 (default : 공백) 실행 화면 : du : 하나의 파일을 일정한 크기의 여러 개 작은 파일로 분할 주요 옵션 : -s : 각 파일에 대한 전체 합계 표시 실행 화면 :

article thumbnail
Lord of SQLInjection (28. frankenstein)
Wargame/Lord of SQLInjection 2022. 6. 23. 00:50

이번 포스트에서는 Lord of SQLInjection의 frankenstein문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, ., (, ), union을 필터링하고 있다는 것과 에러가 발생하면 탈출한다는 사실을 알 수 있다. 또한 pw의 값을 알아야 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : error 출력 및 case문을 이용해서 공격을 시도해보겠다. 또한 ()괄호가 필터링 되어 있으므로 비밀번호의 길이를 구하지 않고 바로 비밀번호를 구하도록 하겠다. ### 사용할 공격문 : pw=1' or id='admin' and case when pw like ..

article thumbnail
Pwnable (3. bof)
Wargame/Pwnable 2022. 6. 22. 00:41

이번 포스트에서는 Pwnable의 bof 문제에 대해 다루겠다. 문제 코드는 다음과 같다. #include #include #include void func(int key){ char overflowme[32]; printf("overflow me : "); gets(overflowme);// smash me! if(key == 0xcafebabe){ system("/bin/sh"); } else{ printf("Nah..\n"); } } int main(int argc, char* argv[]){ func(0xdeadbeef); return 0; } ## 문제 해석 : 문제 코드를 살펴 보니, 우리가 입력한 값이 overflowme 라는 변수에 저장되고 해당 변수의 크기가 32바이트인 것을 알 수 있다..

article thumbnail
Lord of SQLInjection (27. blue_dragon)
Wargame/Lord of SQLInjection 2022. 6. 21. 00:21

이번 포스트에서는 Lord of SQLInjection의 blue_dragon문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, ., ', \를 필터링하고 있다는 것을 알 수 있다. 또한 pw의 값을 알아야 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : "\"와 "'"가 필터링 되었으므로 이번에는 Time based SQL Injection 기법을 통해 공격을 실행해보겠다. ### 사용할 공격문 : id=&pw=' or if(id='admin' and length(pw) > 5, sleep(2), 1)%23 ### 실행 결과 : 페이지가 2초 동안 로딩한 뒤에 ..

article thumbnail
Lord of SQLInjection (26. red_dragon)
Wargame/Lord of SQLInjection 2022. 6. 20. 00:16

이번 포스트에서는 Lord of SQLInjection의 red_dragon문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, .을 필터링하고 있다는 것을 알 수 있다. strlen() 함수를 통해 id값의 길이를 7자 이하로 제한하고 있다. no값이 숫자인 경우에 그대로 쓰이고 아닌 경우에는 1로 변경된다. 또한 no의 값을 알아야 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 해당 문제는 글자 제한이 걸려있으므로 최대한 짧은 쿼리문을 사용하여 no의 값을 알아내야 한다. 또한 is_numeric() 함수는 공백 문자 등을 인식하지 못하는 점을 활용하여 공격해..

article thumbnail
Pwnable (2. collision)
Wargame/Pwnable 2022. 6. 19. 00:46

이번 포스트에서는 Pwnable의 collision 문제에 대해 다루겠다. 문제 코드는 다음과 같다. #include #include unsigned long hashcode = 0x21DD09EC; unsigned long check_password(const char* p){ int* ip = (int*)p; int i; int res=0; for(i=0; i> hashcode = 0x21DD09EC >>> hex(hashcode/5) # 5로 나누었을 때의 값 '0x6c5cec8' >>> hex(hashcode%5) # 5로 나누었을 때의 나머지 '0x4' >>> hex(hashcode/5+hashcode%5) # 5로 나누어 떨어졌을 때의 마지막 값(나머지 포함) '0x6c5cecc' >>> he..

article thumbnail
Pwnable (1. fd)
Wargame/Pwnable 2022. 6. 18. 00:12

이번 포스트에서는 Pwnable의 fd 문제에 대해 다루겠다. 문제 코드는 다음과 같다. #include #include #include char buf[32]; int main(int argc, char* argv[], char* envp[]){ if(argc