카테고리 없음

스윙 30기 포너블 스터디 문제풀이 (6주차 수업용)

토끼곰 2023. 11. 29. 15:10

1. 드림핵 sint 

 

코드

size를 0으로 입력시, read함수에서 -1 값이 큰 양수로 변하고 오버플로우 발생 가능해짐 

(read()의 세번째 인자타입이 size_t인데, unsigned 타입과 동일하게 음수를 가질 수 없음-> underflow, 최대값으로 변환)

 

buf~ ret 사이의 거리+ sfp 4바이트= 264바이트 

 

 

----------------------------------------------------------------------------------------------------

 

2. cmd_center

 

코드

read 함수로 입력받은 후 바로(검증없이) system 함수로 사용 -> 커맨드 인젝션 발생 가능 

마찬가지로 read() 입력에서 버퍼 오버플로우! system(cmd_ip) --> system("/bin/sh")이 목표(셀 실행!) 

 

center_name ~ cmd_ip 거리= 0x20 = 32 / ifconfig는 조건만족

 

 

 

-------------------------------------------------------------------------------------------------------------

3. validator

 

ida로 코드 확인가능 

 

read()에서 bof 발생, validate()에서 검증 -> validate()를 우회하는게 목표 

 

 

첫번째 조건문: correct[]와 각 자리 일치

두번째 조건문: 11이상인 j값, 반복문 돌때마다 이전 값보다 1씩 커짐 (signed vs unsigned 방식차이)

 

 

correct[] 값은 DREAMHACK! 

 

 

(/bin/sh) 실행 완료