환경(Environment) : Ubuntu 14.04 (Voyager)


문제(Problem) : 프로그램 실행 시 공용 라이브러리 libstdc++.so.6을 찾을 수 없는 문제

error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory


원인(Cause) : 프로그램 실행에 32비트 라이브러리가 필요 (need 32bit library)


해결 방법(Solution) : sudo apt-get install lib32ncurses5 lib32stdc++6




written by Ubuntu 14.04 (Voyager)








에그쉘(Eggshell)이란 딱 봐도 계랸껍질이라는 말이지만 BOF에서는 버퍼의 크기가 쉘코드의 크기보다 작아서 쉘코드를 써넣을 수 없을 때 환경변수에 쉘을 등록해놓고 그 주소값만 가져와서 쉘을 띄울 수 있게 해주는 프로그램이다.

하지만 에그쉘은 환경변수에 등록 후 등록된 주소의 값을 불러오는 프로그램(getegg)을 작성 해야 제대로 쓸 수 있다.

에그쉘 코드 작성 후 한번 실행하여 "EGG"라는 이름으로 쉘코드를 환경변수에 넣어줘야 getegg로 Eggshell의 주소를 가져올 수 있다.

 

주의할 점 : 에그쉘 소스를 바로 vi 편집기에 붙여넣으려고하면 깨진 상태에서 붙여넣기가 되고 컴파일도 제대로 되지 않는다. 붙여넣기 전에 :set paste 로 설정을 바꿔줘야 제대로 붙여넣기가 되고 컴파일 시에도 에러가 나지 않는다.

 

Eggshell과 getegg 소스코드

 

Eggshell 바로보기

 

EGG Shell.c

 

 

getegg 바로보기

 

getegg.c







+ Recent posts

티스토리 툴바