일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- gcp ci/cd
- 프로그래머스
- spring Batch
- 리버싱
- 회고
- sequelize
- Baekjoon
- 보안
- pwnable.xyz
- 스프링 배치
- cloud run
- 파이썬
- nodejs
- kotest
- Batch
- docker
- 네트워크
- gcp
- hackctf
- webhacking.kr
- 웹해킹
- gcp cloud build
- 웹보안
- Python
- 사이버보안
- 포너블
- node.js
- 시스템 해킹
- 백준
- programmers
Archives
uju's Tech
Misalignment-write up 본문
<본 포스팅은 공부목적으로 작성되었습니다. 혹시 틀린 부분이 있거나 문제가 되는 부분이 있다면 답글 달아주세요!>
위에서 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