2011-12-03 4 views
2

버퍼 플로우 익스플로잇 데모를하려고합니다. 쉘 코드를 사용하여 스택을 오버플로하고 sh 세션을 얻고 싶습니다. 나는 여기 http://www.shell-storm.org/papers/files/432.pdf에서 튜토리얼을 따라갈 수 있으며 똑같은 쉘 코드를 생성한다. 그러나 튜토리얼에서와 같이 shellcode3.c을 사용하여 쉘 코드를 실행할 수 없습니다. 내가 가진 것은 항상 "분할 오류"입니다.왜 쉘 코드가 작동하지 않습니까?

"Red Hat Enterprise Linux AS 릴리스 4 (Nahant 업데이트 4)"를 사용하고 있습니다. 내가 알고 싶은

혹시이 사람이 그와 유사한 방법을 사용하여 작동하게입니까? 다른 시스템으로 변경해야합니까?

+0

이 신문은 1999 년과 같이 작성된 적이 있습니까? 음, 2011 년에 오신 것을 환영합니다. 그리고이 똥은 이제 더 이상 작동하지 않습니다. – rook

+3

버퍼 오버 플로우 악용이 여전히 작동하면 aslr과 dd 시스템을 피해 가야합니다. exploit-db.com에는 오늘날의 시스템에 이러한 종류의 악용 사례가 있습니다. – quantumdisaster

답변

1

분할 오류는 스택 오버 플로우와 충돌을 유발 한 것을 의미한다; EIP에 대한 올바른 오프셋을 찾아 쉘 코드를 배치해야합니다. 쉘 코드를 올바른 위치에 놓고 있다고 확신하는 경우에는 항상 Metasploit을 사용하여 필요에 따라 쉘 코드를 생성 할 수 있습니다. 또한 최신 Linux 버전에서는 기본적으로 켜져있는 다양한 스택 오버 플로우 방지 기능을 해제해야합니다. Google은 필요한 정보를 알려줍니다. http://www.corelan.be을 확인 했습니까? 그것은 Windows exploit 개발을위한 것이지만 시작하기에 좋은 곳입니다. 당신이 분할 오류가 발생으로 인한되는 스택을 덮어처럼

0

보인다. gdb와 같은 디버거를 사용하여 EIP 레지스터의 정확한 내용과 쉘 코드의 주소를 찾으십시오. 일치해야합니다. 점프가 어디에서 이루어지고 어디에 있어야하는지 파악해보십시오. 이것은 당신에게 더 나은 아이디어를 줄 것입니다.

1

사용하는 Linux는 중요한 요소입니다. 스택의 전체 구조는 서로 다른 OS에서 다를 수 있습니다. 좋은 셸 코드에는 Null 바이트가 없어야합니다. 그러면 버퍼의 코드 실행이 중지됩니다.

"\ xeb \ X1F \ x5e \ x89 \ x76 \ X08 \ X31 \ xc0 \ x88 \ X46 \ X07 \ x89 \ X46 \ x0c \ xb0 \ X0B \ x89 \ xf3 \ x8d \ x4e \ X08 \ x8d \ X56 \ x0c \ XCD \ X80 \ X31 \ XDB \ x89 \ xd8 \ X40 \ XCD \ X80 \ xe8 \ XDC \ XFF \ XFF \ XFF/빈/SH "

위가 좋은 쉘 코드입니다, 단지 46 바이트. 이 사이트는 레드햇 스택에 대한 구조 및 기타 정보를 찾는 데 도움이됩니다 또한 execstack, stack canaries와 같은 모든 유형의 스택 보호를 비활성화해야합니다. 'gcc -fno-stack-protector -o out test .c '

관련 문제