요즘에는 버퍼 오버 플로우 기술을 연구 중이며 그러한 취약점을 악용하는 방법을 더 잘 이해하기 위해 간단한 예제를 직접 작성하려고합니다. 여기버퍼 오버플로가 여전히 feseable입니까?
//bof.c
#include <stdio.h>
#include <string.h>
void
BOF() {
printf("BOF");
}
void
foo1(char* argv){
char buff[10];
strcpy(buff, argv);
printf("foo1");
}
int
main(int argc, char* argv[])
{
if (argc < 1) {
return 0;
}
foo1(argv[1]);
return 0;
}
내 목표는 지껄 기능 BOF(), 인쇄하여 메시지로 이동하기 위해, BOF 취약점을 활용하는 것입니다
나는이 간단한 C 프로그램을 작성했습니다. 이렇게하기 위해서는 그래서 내가 가진 : GCC -ggdb -m64 -o bof.o -fno-스택 보호 -mpreferred 스택 경계 = 4 bof.c- 프로그램을 컴파일 BOF() 주소 : objdump -d bof.o | R
perl -e 'print "\x44\x05\x40\x00\x00\x00\x00\x00" x1500'
, 그러나 아무 일도 발생하지 않습니다 : (나에게 0000000000400544을 제공합니다) GREP BOF는 - 내가 할 GDB 내부 레지스터
에서 일어나는 것을보기 위해 GDB 내에서 프로그램을 실행. 프로그램이 정상적으로 종료됩니다. 그래서 레지스터보고하기 위해 strcpy를 기능 직후 중단 점을 놓고, 내가받은 것은 : 레지스터가 왜
rax 0x7ffffffeca20 140737488276000
rbx 0x0 0
rcx 0x7ffff7ab1f00 140737348574976
rdx 0x400544 4195652
rsi 0x7fffffffb8cd 140737488337101
rdi 0x7ffffffeca20 140737488276000
rbp 0x7ffffffeca30 0x7ffffffeca30
rsp 0x7ffffffeca10 0x7ffffffeca10
r8 0x400660 4195936
r9 0x7ffff7de9740 140737351948096
r10 0x7ffffffec7a0 140737488275360
r11 0x7ffff7b8fec0 140737349484224
r12 0x400460 4195424
r13 0x7ffffffecb30 140737488276272
r14 0x0 0
r15 0x0 0
rip 0x40057b 0x40057b <foo1+31>
eflags 0x206 [ PF IF ]
cs 0x33 51
ss 0x2b 43
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
을 덮어되지 않습니다? 1500 매개 변수를 더 큰 값으로 변경하려고 시도했지만 아무 것도 변경되지 않았습니다. 나는 또한 작은 값 (50 이하)을 시도했지만 같은 결과를 얻었다.
나는 또한 레지스터가 덮어 쓰여졌는지 아닌지보기 위해 주소와 다른 무엇인가를 스택에 작성하려고했다. 예를 들어 perl -e 'print "A"x1500 "을 사용하면 rbp 레지스터를 수정할 수만 있었고 립은 수정할 수 없었습니다. 하지만이 사이트의 스레드를 읽으면 gdb에서 이런 일이 발생하고 유효한 주소로 시도 할 수 있습니다. 그래서 나는했다.
내가 뭘 잘못하고있어? BOF가 요즘 커널에서는 더 이상 가능하지 않을 수도 있습니까? 나는 잊어 버리기 전에
: 당신은 아마 레지스터보고 알아 낸 것처럼, 나는 64이 0
마지막으로 설정 한 인쇄 요소 : 나는 또한 함께, 요소 제한을 제거하기 위해 GDB 제한 요소를 제거 우분투 12.04 (커널 버전 3.5.0-39- 일반)와 비트 기계.
미리 감사드립니다.
에서 당신의 PC의 모습에서 이러한 보호를 해제 할 수 있습니다. 그러나 일반적으로, 나는 이것이 충돌을 야기 할 것이라고 기대하지만, 특권을 얻는 데 "성공"하지는 않을 것입니다. –
'BOF()'가 최적화되지 않았다고 확신합니까? 그 주소를 확인하기 위해'printf ("% p \ n", BOF);를 할 수있다. – chux
카나리아 사용과 같은 BOF를 방지하는 보안이 있습니다. –