의미없는 블로그
protostar5 - stack4.c (return 덮어씌워서 코드 흐름 바꾸기) 본문
코드 작성
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 짜서 실행하면 성공쓰
'# 나 > pentest (WEB)' 카테고리의 다른 글
XSS 모듬구이 (0) | 2019.11.12 |
---|---|
protostar6 - stack5.c (쉘코드 생성, 리눅스 어태치 방법) (0) | 2019.09.17 |
VM 환경 Local 로 포트포워딩 하기 (0) | 2019.08.27 |
protostar4 - stack3.c (pwn 사용해서 공격하기 - return2lib) (0) | 2019.08.26 |
protostar3 - stack2.c (Peda 입문, 그리고 환경 스택) (0) | 2019.08.22 |
Comments