Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
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
Archives
Today
Total
관리 메뉴

의미없는 블로그

protostar5 - stack4.c (return 덮어씌워서 코드 흐름 바꾸기) 본문

# 나/pentest (WEB)

protostar5 - stack4.c (return 덮어씌워서 코드 흐름 바꾸기)

SaltLee 2019. 8. 29. 19:24

 

코드 작성

 

win() 함수를 불러서 code flow successfully changed 가 출력되면 되는데

저번에 fp() 처럼 win() 주소를 불러줄만한게 안보인다

그래서 main() 이 실행되고 난 다음에 return 할 때 주소를 바꿔서 win() 주소로 가도록 하면 됨

스택에서 buffer 가 젤 위에 있으니까 buffer 에 글자 많이 넣어서 RET 까지 덮어쓰게 하면 된다

 

              main()

...............↗.....................↘...............

                         RET

 

 buffer[64]

--------------

 RBP(EBP)

--------------

 RET

--------------

 

컴파일 해주고

 

gdb 로 실행해서(gdb ./stack4)

ret 주소 확인하고 breakpoint 건다

패턴 생성하고 run 하기

 

code 에 보면 ret 까지 실행된 상태인데

stack 의 제일 위에 값을 불러다가 그 주소로 return 한다고 한다

 

스택에 저 값을 win() 주소로 덮어씌우면 되는거니까

저 값의 패턴 offset 을 확인해보면 72 이다

[72개의 임의 문자 + win() 주소] 를 buffer 에 넣으면 잘 덮어씌워진다

 

덮어쓸 win() 주소는 0x0000000000401132

 

아래와 같이 exploit 짜서 실행하면 성공쓰

 

Comments