레벨 해킹

 2839, 1/142 회원가입  로그인  
   sohun5013
   level11~12 BOF EGG쉘에 대해서

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=3249 [복사]


대부분의 경우 EGG쉘이라는 걸 이용해서 스택에 쉘코드를 저장시키고
정확한 주소값을 구해서 푸는 것 같더라고요.
근데 제가 아직 EGG쉘이라는 걸 잘 몰라 찝찝해서 그거 없이 풀려고 시도했어요.
환경변수에 SHELLCODE라는 이름으로 저장시켜서 같은길이 이름의 프로그램에서
그 환경변수의 주소 값을 구하고 나서 그걸 썼는데 계산이 틀린지는 몰라도 영 성공하질 않네요.
level11을 에그쉘 없이 통과하긴 했는데 지금 생각해보니까 운인 것 같기도 해요;;
(정확도가 떨어진건가 싶어서 NOP sled도 넣었고... 근데 level11은 그래도 안 되더라고요 ㅡㅡ;)

상황은 이렇고요.
질문 1. EGG쉘이 없으면 환경변수의 정확한 주소 값을 찾는 게 어려운 건가요?
질문 2. EGG쉘도 이해해야 좋을까요? 많이 어려운가요?

제가 EGG쉘이 정확히 어떤 기능을 수행하는지 몰라서 저 질문들이 요지를 담지 못할 수도 있으니까
내키는 대로 설명해주시면 돼요~~

  Hit : 3849     Date : 2012/01/13 12:11



    
BrokenPipe 환경변수의 주소가 틀린이유는 프로그램이름의 길이떄문입니다
pwd 하시고 나온 경로 + 대상프로그램명 길이만큼으로
프로그램 만드셔서 테스트해보세요

질문 1. 에그쉘이 없어도 정확한 주소값을 찾을수있습니다. 방법은 위와같네요
질문 2. 이해해서 나쁠건 없죠. 소스 보시고 분석해보시는것도 좋습니다
어렵진않구요.

팁하나드리자면 그냥 ftz 전체를 에그쉘 없이 깨시는게 실력향상에 좋습니다
2012/01/13  
$Zero 에그쉘은 안쓰는 게 좋습니다. 2012/01/13  
sohun5013 윽.. 프로그램 이름까지 계산한 건데 안 되네요. 근데 주소 값이 가변한다거나 그런 건 없나요?
저의 경우엔 상위 디렉토리만 한번 왔다 가도 다시 환경변수 주소 조사해보니까 바뀌던데;;
2012/01/13  
BrokenPipe 네 pwd라는 이름의 현재 디렉토리를 담는 환경변수도 있기때문에
그 변수에 의해 주소가 변경될수 있습니다
디렉토리 길이까지 완벽하게 똑같이 하신후 해보세요
예를들어 /home/level11/attackme 라면
/home/level11/ 의 길이는 14
/tmp/ 에 만들고자 한다면
/tmp/level11a/ = 14 이므로
/tmp 디렉토리에 leevel11a 라는 디렉토피를 만들고 8글자의 파일명으로 실험해보시면 될것같습니다
2012/01/13  
BrokenPipe 아 그리고 에그쉘등으로 주소값이 가변적인 공격을 할땐 절대경로명 + 프로그램명 으로 실행시키는게 좋아요
../attackme 라고 하면 0x2e가 들어가더군요 pwd값이 아닌
2012/01/13