앵하니의 더 나은 보안

(Pwnable.kr) [Toddler's Bottle] fb 본문

보안 기술/ETC

(Pwnable.kr) [Toddler's Bottle] fb

앵한 2022. 7. 18. 22:50

문제 분석

fb 문제 클릭, 표시되는 정보 확인 후 ssh fd계정 접속
 
접속 후 파일 확인, fd프로그램과 소스, 플래그 파일 존재

flag 파일엔 fd 사용자의 읽기 권한이 없으니 fd프로그램을 이용해서 flag 파일을 확인하라는 문제인듯 함

 

fd.c 파일 통해서 fd 프로그램 원본 소스 확인
  1. 전달받은 인자 값에서 0x1234 값을 뺀 뒤 변수 fd(file descriptor로 추정)에 저장
  2. read로 1에서 저장한 fd값을 첫번째 인자로 전달, 입력된 값을 buf에 32바이트만큼 저장
  3. buf에 저장된 값이 "LETMEWIN\n"과 같으면 조건문 안으로 진입, setuid권한에 의해 /bin/cat flag 명령 수행가능
 
여기서 read(fd, buf, 32)가 핵심인듯 함
read(file descriptor, 데이터 저장 주소값, 저장할 길이)
맨처음에 fie descriptor인줄도 모르고 read가 사용자 입력 값 받아서 저장하는건줄도 몰라서
fd데이터 읽어서 buf에 32바이트만큼 옮겨 적는건줄 알았는데 그게 아님
fd는 그냥 file descriptor(0,1,2)로 각 숫자가 가지는 의미는 다르지만 어쨋든 사용자 입력 내용이 buf에 32바이트만큼 저장됨
 
그래서 fd에는 0,1,2 값이 들어가야되므로,
x - 0x1234(4660) = 0
y - 0x1234(4660) = 1
z - 0x1234(4660) = 2
4660, 4661, 4662를 argv[1]로 넘기고 buf의 값으로 "LETMEWIN\n"이 저장돼 있으면 flag의 값을 확인할 수 있음

문제 풀이

  1. 인자값으로 4660, 4661, 4662 중 하나 전달
  2. "LETMEWIN\n" buf 값으로 입력
  3. flag 파일 내용 확인

'보안 기술 > ETC' 카테고리의 다른 글

flAWS cloud level 1  (0) 2022.08.03
WhiteHat Contest(2021) Imageflare  (0) 2022.07.18
MarkAny DRM decryption  (0) 2022.07.18
(응용프로그램 변조)AhnlabSafe Transaction Bypass  (0) 2022.07.18
Bitmap file format  (0) 2022.07.18
Comments