분류 전체보기

셸코드 (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에 저장하고 있다.위 함수를 바탕으로 사용자로부터 메모리 주소와 값을 입력받아 해당 메모리 주소에 값을 쓰고 있다. 이때, 해당 부분에서 사용자가 임의의 메모리 주..
veriperi
'분류 전체보기' 카테고리의 글 목록 (7 Page)