Notice
Recent Posts
Recent Comments
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- imageinfo
- igoat
- ctf
- elasticsearch
- Strings
- SQL Injection
- InsecureBank
- vulnhub
- XSS
- 안드로이드
- diva
- CTF-d
- frida
- 인시큐어뱅크
- binwalk
- kibana
- lord of sql injection
- Suninatas
- dreamhack
- beebox
- Volatility
- filescan
- 2018
- foremost
- FTK Imager
- Openstack
- base64
- otter
- Docker
- ESXi
Archives
- Today
- Total
Information Security
shell_basic 문제 본문

참고


해당 소스코드를 아래와 같이 컴파일한다.

shell_basic 실행 후 AAAAA 문자열 입력했는데 Segmentation Fault를 보여주면서 메모리 접근 오류가 발생하였다.

Flag는 /home/shell_basic/flag_name_is_loooooong 경로에 있는 것을 알 수 있다.

위에 코드 설명
| 0x30 | 16진수 30 = 48(10진수) | 보통 flag 길이 이하 |
| read(fd, buf, 0x30) | fd에서 최대 48바이트 읽기 | 읽은 크기 반환 |
| write(1, buf, 0x30) | stdout에 48바이트 출력 | 실제 읽은 크기만큼 써야 안전 |
write(1, buf, 0x30) 설명
| 0 | STDIN_FILENO | 표준 입력 | 키보드 |
| 1 | STDOUT_FILENO | 표준 출력 | 화면(콘솔) |
| 2 | STDERR_FILENO | 표준 에러 | 화면(콘솔) |
/home/shell_basic/flag_name_is_loooooong 16진수 코드 확인

위에 코드를 Assembly 코드로 변환

Assembly 코드를 확인할 수 있다.

- nasm(Netwide Assembler) 명령어가 Assembly.asm 어셈블리 파일을 64-bit ELF 객체 파일(Assembly.o)로 어셈블한다.
- objcopy(GNU binutils)로 Assembly.o 내부의 .text 섹션(실행 코드)만 추출해서 Assembly.bin 이라는 순수한 바이너리 바이트 파일로 저장한다.
- xxd는 파일의 내용을 헥사(16진수) 덤프하고 오른쪽에 ASCII(출력 가능한 문자는 그대로)도 함께 보여준다.

exploit 소스코드
shellcraft(pwntools의 어셈블러 도우미)로 open → read → write 순서의 셸코드를 만들고 asm()으로 기계어로 변환한다.

exploit 실행 시 아래와 같이 FLAG 값을 획득 할 수 있다.

'DreamHack > WarGame' 카테고리의 다른 글
| chrome_artifacts 문제 (0) | 2025.11.14 |
|---|---|
| nikonikoni 문제 (0) | 2025.11.10 |
| boot_time 문제 (0) | 2025.11.08 |
| Autoruns 문제 (0) | 2025.10.26 |
| Find the USB 문제 (0) | 2025.10.18 |
