https://github.com/z3tta/Exploit-Exercises-Protostar/blob/master/06-Stack6.md
GitHub - z3tta/Exploit-Exercises-Protostar: Solutions for Exploit-Exercises Protostar
Solutions for Exploit-Exercises Protostar. Contribute to z3tta/Exploit-Exercises-Protostar development by creating an account on GitHub.
github.com
gcc -z exexstack -w -no-pie -o stack6 stack6.c
IF문을 보면 ret & 0xbf000000 과 and 연산을 하는데 과연 어떤 의미 일까?? (궁금)
먼저 __builtin_return_address(0)은 현재 함수의 return addess를 가져온다 (인자가 1이면 호출한 함수의 address)
현재 main함수의 ret는 0xfffffcfec로 0xbf000000과 and 연산을 하면 if문에 반드시 걸리게 된다.
ret 주소를 변경해야 쉘을 얻을 수 있으므로 return address 위로 shellcode를 넣는 방식으로는 플래그를 획득 할 수 없다!!!
(바로 밑에 주소도 0xffffcff0이므로 if문에서 걸린다.)
STACK STACK
--------------------------------- ---------------------------------
BUF BUF
--------------------------------- ---------------> ---------------------------------
RBP RBP
--------------------------------- ---------------------------------
RET ADDR SYSTEM
--------------------------------- ---------------------------------
SYSTEM RET ADDR
---------------------------------
arg1 /bin/sh
--------------------------------- ---------------------------------
PLT 방식으로 문제를 해결한다.
패턴을 생성해서 ret 까지의 주소를 확인
음 분명 ret에 breakpoint를 걸었는데 터져버렸다 EIP에 있는 값을 가져와서 offset 을 계산하면 되니까 크게 문제가 되지는 않는다!! offset은 80!
system 함수와 '/bin/sh'의 주소는?!
여기서 return address 공간에는 system 함수 주소가 들어가는데 0xf7c4c7b0이다!
2진수로 앞 1byte만 비교하면
0xf7db5faa -> 0xf7 -> 0b11110111
0xbf000000 -> 0xbf -> 0b10111111
& --------------------------------------------
0b10110111 != 0b10111111
즉 우리는 if문에 걸리지 않는다!!!
payload를 작성해보자 ㅎ
간단하게 payload를 작성했다!
오예 shell을 위와 같이 획득할 수 있었다!! 굿굿
'시스템 해킹 > ProtoStar로 처음 입문하기' 카테고리의 다른 글
[pwnable] 시스템 해킹 ProtoStar - Stack7 (ROP) (0) | 2023.02.19 |
---|---|
[pwnable] 시스템 해킹 ProtoStar - Stack7 (2) | 2023.02.15 |
[pwnable] 시스템 해킹 ProtoStar - Stack5 (PLT, GOT) (0) | 2023.02.15 |
[pwnable] 시스템 해킹 ProtoStar - Stack5 (msfvenom, 어태치) (0) | 2023.02.15 |
[pwnable] 시스템 해킹 ProtoStar - Stack4 (Return Address) (0) | 2023.02.15 |