uju's Tech

Misalignment-write up 본문

Security/pwnable.xyz

Misalignment-write up

ujusy 2020. 6. 13. 03:25

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

 

 

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

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

 

 

 

V5+7 0xdeadbeef--->0xb000000b5  바꾸어주면 win함수 실행

 

7바이트를 더했고 리틀엔디안 방식으로 저장되었으므로 스택에 저장되는 구조를 생각해보면

 

이런식으로 쌓이는 것을 알 수 있다.

 

먼저 위에 진한  초록색 부분인 0xb500000000000000의 msb가 1이여서 음수라는 것을 알수있다.

이 경우 10진수는  0xb500000000000000의 보수+lsb에 1을 더해준 값이다.

보수표현으로 바꾸어주면

 

위의 사진과 같이 표현할 수 있다.

 

위의 사진에서 lsb에 1을 더해주면

 

0x4b00000000000000으로 표현된다.

10진수로 표현하면 -5404319552844595200이다. 

 

연한 초록색 부분은 0xb0000000으로 10진수로 변환해 주면 184549376이다.

 

그럼 문제를 풀어보자!

 

끝!!

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

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