stack 4 번의 문제이다
return을 하게되어있어서
main도 중간에 실행이되서 stuck프로그램이라고하는데 중간에 main으로 빠지고 돌아오는데
이떄 return주소를 win으로 바꾸게되면 win이 실행된다
return -> ebp -> buffer
버퍼를 변조하면 win을 실행하게만들수 있다.
gcc -z execstack -no-pie -w -o stack4 stack4.c
gdb ./stack4
call 에서 bof가 발생하고
return하는 시점에서 win으로 돌아가서 실행하는 것
b *main+38
pattern create 100
run
AAA%AAsAABAA$AAnAACAA-AA(AADAA;AA)AAEAAaAA0AAFAAbAA1AAGAAcAA2AAHAAdAA3AAIAAeAA4AAJAAfAA5AAKAAgAA6AAL
IAAeAA4AAJAAfAA5AAKAAgAA6AAL
return하는 시점에 스택에있는 데이터를 꺼내와서 실행한다 스택에 있는ㄷ 첫번쨰 있는거를 가져와서 리턴하게된다
IAAeAA4AAJAAfAA5AAKAAgAA6AAL
스택에있는 첫번째문자를 찾아서 72번쨰라는것을 알았다.
disas win
disas win을 통하여 첫번쨰 주소인 0x0000000000401136를 확인한다
win_addr = 0x0000000000401136
이제 pwn 툴을 활용하여 코드를 작성한다.
exploit 코드를 작성하여 문제를 푸는 코드를 만든다.
해당 exploit 코드를작성하여 실행 하였을떄 code flow successfully changed 가 동작한것을 확인했다
return 할때 win함수를 실행하도록 코드의 흐름을 변경하였다.
'시스템 해킹' 카테고리의 다른 글
Protostar stack - 6 함정을 지나 ret하기 (0) | 2024.05.19 |
---|---|
Protostar stack - 5 쉘코드 생성, 리눅스 어태치 방법 (0) | 2024.05.18 |
Protostar stack - 3 pwn 툴 사용해서 공격 (0) | 2024.05.16 |
Protostar stack - 2 peda 사용 (1) | 2024.05.16 |
Protostar - stack 1 (1) | 2024.05.16 |