일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- node.js
- 웹보안
- webhacking.kr
- 보안
- 백준
- 시스템 해킹
- sequelize
- 스프링 배치
- 웹해킹
- 프로그래머스
- 사이버보안
- Python
- gcp ci/cd
- kotest
- 리버싱
- 포너블
- Batch
- gcp
- spring Batch
- pwnable.xyz
- 파이썬
- gcp cloud build
- 회고
- hackctf
- 네트워크
- Baekjoon
- nodejs
- cloud run
- programmers
- docker
Archives
uju's Tech
Add-write up 본문
<본 포스팅은 공부목적으로 작성되었습니다. 혹시 틀린 부분이 있거나 문제가 되는 부분이 있다면 답글 달아주세요!>
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 |
|
'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