관리 메뉴

Information Security

shell_basic 문제 본문

DreamHack/WarGame

shell_basic 문제

HackingPractice 2025. 10. 18. 15:45

 

참고

 

 

 

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

 

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