uju's Tech

Add-write up 본문

Security/pwnable.xyz

Add-write up

ujusy 2020. 6. 13. 03:23

<본 포스팅은 공부목적으로 작성되었습니다. 혹시 틀린 부분이 있거나 문제가 되는 부분이 있다면 답글 달아주세요!>

 

 

Ida 사용해서 main함수를 살펴보자.


위에서 memset함수는 어떤 메모리의 시작점 부터 연속된 범위를 어떤 값으로 모두 지정하고 싶을  사용하는 함수이다.

따라서 1바이트마다 0으로 초기화하고 50바이트를 반환한다는 뜻이다.

 


 

Ret 주소=0x7fffffffdfd0+8=0x7fffffffdfd8

Ret주소 위로 rbp 위로 v8,v7,v6,v5,v4,

V6=0x68

V7=0x60

V8=0x8

0x60-0x8=88

88/8=11-->11*8바이트

V7[v6]=v4+v5 여기서 취약점이 발생한다,

V6 조절하여 ret값으로 만들고 v4+v5 win함수 주소 값으로 만들어준다.

그러면 win함수로 리턴이 된다.

 

스택을 생각해보면 ret v7위치인 rbp- 0x60에서 rbp+0x8 만들어 주어야한다 따라서 0x68/8=13

 

V6 13  ret함수를 가리킨다. 그리고 win주소는 0x400822 10진수로 바꾸어주면 4196386이다.

 

 

그리고 while문을 빠져나가기 위해서 문자열을 이용해 빠져나가자

 

파이썬으로 exploit  아래와 같이 짜보았다.

 

끝!

 

Summary

    1. v7[v6]=v4+v5 -->v6 음수나 주어진 값보다  값이 들어가게되면 취약점 발생
    2. V6-->ret 가리키게 해준다.->v7에서 ret까지 0x68인데 8바이트이므로 -->13
    3. V4+v5 win 주소를 10진수로-->dec(0x400822)=4196386
    4. Exploit짜주고 실행한다.

 

'Security > pwnable.xyz' 카테고리의 다른 글

Jmp table-write up  (0) 2020.06.13
Misalignment-write up  (0) 2020.06.13
Two target-write up  (0) 2020.06.13
Note-write up  (0) 2020.06.13
Sub-write up  (0) 2020.06.13
Comments