코드를 보니, 스택, binary image? 부분, 그리고 라이브러리 영역이 막혀 있어 보입니다. 근데 한 가지 의문 점이 드는 것은 왜 굳이 라이브러리 영역을 저런 식으로 차단했을까? 라이브러리 영역에 무언가 힌트가 있지 않을까 생각해보고, 살펴보았습니다. 파일 프로세스 maps 파일을 살펴보기 위해 저런식으로 실행시켜 줍니다. maps 파일을 확인해본 결과, \x08, \x40, \xbf 밖에 사용할 수 없다는 것을 알았고, 결과적으로 \x40 즉 라이브러리 영역에 힌트가 있다는 것을 알게 되었습니다. 0x40014000 - 0x40016000 이 부분과 0x40109000 - 0x 4010d000 이 부분을 gdb로 살펴보면 무언가 힌트를 얻을 수 있을 것 같습니다. strcpy 다음부분에 bp를..
코드를 보면, return address 는 strcpy의 주소여야 하고, strcpy의 ret 부분은 사용하지 못하게 해 놓았군요,, 그래서 strcpy 함수 자체의 역할을 이용하여 쉘을 따 보겠습니다. 풀이 방법buffer에 system 함수의 주소 + 더미 + “/bin/sh”를 저장해 둡니다. strcpy 함수의 인자에, ret + 4 과 buffer 의 주소를 넣어 줍니다. 그렇게 하면 ret+4 부분에 buffer 값이 들어가지겠죠? 여기서 중요한 점은 ret+4 부분이 뭐느냐..! 바로 strcpy의 ret 즉, strcpy 함수가 종료되면 돌아갈 주소랍니다! 그렇다면 ret+4 주소에는 buffer 값이 들어있으니 쉘이 따지겠네요! 필요한 것들을 바로 찾으러 갑시다. gdb로 strcpy의..
- Total
- Today
- Yesterday
- 리버싱
- OllyDbg
- angry_doraemon
- protostar
- 올리디버거
- Python
- orge
- C언어
- 비교 연산자
- zombie_assassin
- 0ctf
- Golem
- Codegate
- TAMUCTF
- picoctf
- babyheap
- Pwnable.kr
- succubus
- darkknight
- luckyzzang
- BaskinRobins31
- lob
- bugbear
- ftz
- 클래스
- Nightmare
- 파이썬
- babypwn
- HarekazeCTF
- 포너블
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |