betting

두비니

·

2020. 12. 2. 02:23

 

 

 

너무 길어서 필요한 것만 쓴다

 

일단 read에서 0x28만큼 입력받는데, 뒤에 canary를 leak할수 있다.

 

==간단한 설명==

36번줄에서 s를 출력시키는데, 문자열은 뒤에 \x00이 있는 걸 통해서 문자열의 끝임을 확인하기 때문에 canary의 1바이트를 덮어씌운 후 s를 출력시키면 뒤에 canary 7바이트를 leak할 수 있다.

그러면 어차피 canary의 마지막 바이트는 0x00이기 때문에 canary를 leak할 수 있다.

 

 

그리고 여기서는 scanf로 입력받기때문에 입력제한없이 ret까지 무리없이 exploit할 수 있다.

 

 

 

이름 입력을 받은 뒤 rsp를 까본건데

빨간색 박스가 canary고

노란색 박스가 ret값이라 canary만 leak해내면 쉽게 exploit할 수 있다.

 

 

그리고 코드를 보면 v17을 입력제한이 없는 scanf로 받고 있기 때문에 쉽게 overwrite가 가능하다.

 

 

 

 

 

호옹

'War Games > training_prob' 카테고리의 다른 글

c1 - practice2  (0) 2020.12.04
c1 - practice1  (0) 2020.12.03
c1 - exercise7  (0) 2020.11.29
c1 - exercise6  (1) 2020.10.18
c1 - exercise5  (0) 2020.10.16