셸코드 (Shellcode): 익스플로잇을 위해 제작된 어셈블리 코드 조각셸 획득을 위한 목적에서 주로 사용되므로 '셸'이 접두사로 붙음셸 획득은 시스템 해킹의 관점에서 매우 중요[ Shell Code의 특징 ]어셈블리어로 구성되어 공격 수행 대상 아키텍처와 운영체제, 셸코드의 목적에 따라 다르게 작성됨공유된 셸코드는 범용적으로 작성되어 시스템 환경을 완전히 반응하지는 못함orw 셸코드(1) orw 셸코드 작성✅ orw 셸코드란?파일을 열고, 읽은 뒤 화면에 출력해주는 셸코드 ▶ "/tmp/flag"를 읽는 C언어 형식의 의사코드char buf[0x30];int fd = open("/tmp/flag", RD_ONLY, NULL);read(fd, buf, 0x30); write(1, buf, 0x30); ..
분류 전체보기
pwntools 설치 가이드아래 깃허브 오픈 소스로 공개된 자료를 통해 pwntools를 설치할 수 있다.관련 자료 : https://github.com/Gallopsled/pwntools pwntools API 사용법(1) process / remote / send / recv1. process & remote✅ process : 익스플로잇을 로컬 바이너리를 대상으로 할 때 사용하는 함수 → 익스플로잇을 테스트하고 디버깅하기 위해 사용✅ remote : 원격 서버를 대상으로 할 때 사용하는 함수 → 대상 서버를 실제로 공격하기 위해 사용 2. send✅ send : 데이터를 프로세스에 전송하기 위해 사용 3. recv✅ recv : 프로세스에서 데이터를 받기 위해 사용- recv() : 최대 n 바이트..
gdb & pwndbg(1) gdbgdb는 리눅스의 대표적인 디버거로, 오픈소스로 개발되어 무료로 설치할 수 있다.본 로드맵에서 설명된 pwndbg를 통해 실습을 진행할 예정이다. 1. pwngdb 설치- 아래 깃허브 링크를 참고하여 우분투 환경에서 pwngdb 설치를 진행하였다- 참고 자료 : https://github.com/scwuaptx/Pwngdb📌 설치 과정에서 git 명령어가 없는 경우'sudo apt-get install git' 명령어를 통해 git 명령어를 설치할 수 있다. 2. 실습 예제 파일 실행// Name: debugee.c// Compile: gcc -o debugee debugee.c -no-pie#include int main(void) { int sum = 0; in..
📂 출처본 자료는 '개발자를 위한 웹 해킹' 책을 바탕으로 작성되었습니다.01. 실습 프로그램 설치Step 1. Docker Desktop 설치📂 참고자료- Ver. WindowsWindows에 Docker Desktop 설치하기윈도우에 도커 데스크탑 설치- Ver. Mac[Docker] Docker MacOS 환경 최초 설치 및 실행 방법: Image, Container, Registry[Docker] Mac OS에 Docker 설치 Step 2. 컨테이너 실행 및 설치▶ 실습용 컨테이너 실행Windows PowerShell을 [관리자로 실행] 버튼을 클릭하여 관리자 권한으로 실행시켜준다. 관리자 권한으로 실행된 PowerShell에서 다음과 같은 명령어를 입력해준다※ 실습 프로그램 구축 과정에서 ..
📌 문제 코드#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_handler); alarm(30);}void get_shell() { system("/bin/sh");}void print_box(unsigned char *box, int idx) { printf("Element of index %d is : %02x\n", idx, box[idx]);}void me..
먼저 문제 파일로 주어진 ssp_000.c 파일의 코드 분석을 진행했다. ✅ 문제 코드 분석initialize() 함수: 입력 및 출력 버퍼를 비활성화하고, SIGALRM 시그널을 처리하는 alarm_handler() 함수를 넣어준다. 이 시그널 핸들러는 "TIME OUT" 메시지를 출력하고 프로그램을 종료한다.get_shell() 함수: /bin/sh 쉘을 실행하는 system() 함수를 호출한다.main() 함수: 초기화를 수행하고, 0x40 바이트 크기의 버퍼인 buf를 선언합니다. 그 후, 사용자로부터 최대 0x80 바이트를 읽어 buf에 저장하고 있다.위 함수를 바탕으로 사용자로부터 메모리 주소와 값을 입력받아 해당 메모리 주소에 값을 쓰고 있다. 이때, 해당 부분에서 사용자가 임의의 메모리 주..