Protostar - Stack 4 (버퍼 오버플로우 공격 + 메모리 참조)
oolongeya
·2021. 8. 25. 16:47
stack4.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
void win()
{
printf("code flow successfully changed\n");
}
int main(int argc, char **argv)
{
char buffer[64];
gets(buffer);
}
|
cs |
이번 코드는 특이한 것이 win주소를 덮을만한 함수가 보이지 않는다.
즉 매개가 없다는 것은 스택에 제일 먼저 들어간 ret 부분을 오염시키면 된다는 것이다.
메인 함수를 확인한 뒤 아래에 ret 이 보인다.
ret 부분에 브레이크 포인트를 걸어두고 패턴을 만들어서 사용하겠다.
ret 주소에 브레이크가 걸려있고, stack에서 첫번째 것을 가져와서 사용한다.
즉 stack의 첫번째 주소의 값을 복사해서 오프셋을 확인해보면 된다.
72바이트 뒤에 win 주소를 넣어주면 될 것 같다.
disas win 으로 win의 주소를 확인해준다. 401132
pwn을 이용해서 페이로드 코드를 작성해준다.
어렵지 않게 해결할 수 있다.
반응형
'시스템 해킹 (Pwnable) > Wargame' 카테고리의 다른 글
Protostar - Stack 6 (쉘 코드 + 버퍼 오버플로우 + RTL) (0) | 2021.09.01 |
---|---|
Protostar - Stack 5 (쉘 코드 + 버퍼 오버플로우 + attach) (0) | 2021.08.28 |
Protostar - Stack 3 (버퍼 오버플로우 공격 + 메모리 참조) (0) | 2021.08.24 |
Protostar - Stack 2 (버퍼 오버플로우 공격 + 메모리 참조) (0) | 2021.08.22 |
Protostar - Stack 1 (버퍼 오버플로우 공격 + 메모리 참조) (0) | 2021.08.21 |