해킹/시스템해킹

[시스템해킹] FSB(Format String Bug) 이란?

2021. 9. 9. 22:13
목차
  1. FSB(Format String Bug)
  2. %p 출력
  3. %n 입력
  4. printf의 포맷문자
  5. python에서
728x90

FSB(Format String Bug)


FSB(Format String Bug)란 버퍼 오버플로우 해킹 기법중 하나이며 사용자의 입력을 통해 프로그램의 흐름을 바꿀 수 있는 취약점이다.

 

FSB(Format String Bug)

  1. printf의 인자 개수는 포맷 문자 개수로 결정됩니다.
  2. buf의 값에 우리가 마음대로 입력이 가능하다면 우리가 원하는 포맷문자를 넣어서 조작이 가능해집니다.
  3. BOF가 발생하지 않아도 원하는 값을 얻을 수 있습니다.

printf("%d", 변수); 와 printf("%d")

오른쪽으로 상황에서는 FSB취약점이 발생하여 main 함수 스택의 내용을 모두 노출 시킬 수 있습니다.

 

%p 출력

  1. %p를 통해 다음 주소를 유출 시킬수 있으며 %[숫자]$p를 통해 숫자만큼 떨어져 있는 메모리를 출력 가능하다.

2번째에 AAAA에 들어간 모습이다

위와 같이 입력하게 되면 다음 스택의 메모리를 유출시킬수 있습니다. 위에선 두번째 %p에 우리가 입력한 AAAA가 들어간 모습을 확인할 수 있습니다. 이때 offset는 2입니다.

 

%n 입력

  1. 이번에는 유출시키는 것만이 아니라 스택의 값을 변조 시켜주는 것 입니다.
  2. %n은 지정된 변수에 %n 전까지 출력된 문자의 개수를 지정된 변수에 10진수 형식으로 써줍니다.
  3. %n : 4byte %hn : 2byte %hhn 1byte

 

printf의 포맷문자

%s 문자열 '\0'를 만날때 까지 출력
%c 문자 1개
%d +/- 부호 있는 정수형
%x 정수를 16진수 소문자로
%p 0x ~형태의 포인터값 출력 %lx와 같음
%lx 8byte 16진수 출력
%ld long 정수 형
%f 실수형
%u 부호 없는 정수 

 

 

python에서

실제 fsb코드에서는 매우 복잡해 지는데 이를 파이썬 pwntools에서 쉽게 해결할 수 있습니다.

fmtstr_payload(offset, writes) 를 사용하게 되면 아주 간단하게 fsb를 할 수 있습니다.

fmtstr_payload(6, {e.got['printf']:e.symbols['win']})

위와 같이 적으면 offset이 6일때 printf가 win함수가 되게 만들 수 있습니다. 

 

참고

더보기

https://snwo.tistory.com/147

https://jiravvit.tistory.com/entry/64bit%EC%97%90%EC%84%9C-FSB-Format-String-Bug-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-1

 

728x90
저작자표시 비영리 (새창열림)

'해킹 > 시스템해킹' 카테고리의 다른 글

[시스템해킹] HackCTF < Basic_FSB >  (0) 2021.09.09
[시스템해킹] HackCTF < Basic_BOF #1 >  (0) 2021.09.09
[시스템해킹] GrabCON Pwn CTF? write up  (0) 2021.09.09
[시스템해킹] GrabCON can you? write up  (0) 2021.09.09
[시스템해킹] GrabCON easy_bin write up  (0) 2021.09.09
  1. FSB(Format String Bug)
  2. %p 출력
  3. %n 입력
  4. printf의 포맷문자
  5. python에서
'해킹/시스템해킹' 카테고리의 다른 글
  • [시스템해킹] HackCTF < Basic_FSB >
  • [시스템해킹] HackCTF < Basic_BOF #1 >
  • [시스템해킹] GrabCON Pwn CTF? write up
  • [시스템해킹] GrabCON can you? write up
나봄하랑
나봄하랑
저의 IT 성장을 담은 블로그 입니다!
나봄하랑
나의 IT 성장일지
나봄하랑
전체
오늘
어제
  • 분류 전체보기 (60)
    • 기능반공부 (26)
      • 서버 (6)
      • 네트워크 (6)
      • 클라우드 컴퓨팅 (12)
      • 기능경기대회 (2)
    • 알고리즘 (7)
      • 자료구조 (4)
      • C, C++ (3)
      • python (0)
    • 해킹 (22)
      • 웹해킹 (7)
      • 리버싱 (7)
      • 시스템해킹 (8)
    • 게임이론 (0)
      • 체스 (0)
      • 마작 (0)
    • 웹개발 (1)
      • 웹(HTML, CSS, JS) (1)
    • 공부 (4)
      • 영어 (3)
      • 과학 (0)
      • 국어 (1)
      • 한국사 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • about

공지사항

인기 글

태그

  • 클라우드
  • SSM
  • 네트워크
  • computting
  • SQL
  • AWS
  • Network
  • 모의고사
  • 해킹
  • 컴퓨팅
  • CC
  • 스트링
  • computing
  • 서버구축
  • 레지스터
  • BOF
  • 버그
  • FSB
  • reversing
  • CTF
  • 아마존
  • server
  • 클컴
  • Los
  • Cloud
  • injection
  • grabcon
  • 리버싱
  • 백준
  • 시스템해킹

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.
나봄하랑
[시스템해킹] FSB(Format String Bug) 이란?
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.