소스를 보면 다음과 같다. 버퍼, 환경변수 , 매개변수까지 싹다 막혀있다. 



여기서 한참 생각하다 멘탈이 나갔는데 일단 그냥 gdb로 깐담에 메모리를 쭉한번 봤더니 실행파일명이 스택 거의 마지막부근에 존재하고 있었다.



뭐지?해서 찾아보니 argv[0]에 들어갔던 실행파일명은 소스코드 내 메모리초기화로 인해 초기화 되었지만 스택 내에 내가 몰랐던 요런 구조가 있었다.



맨 마지막에 보면 NULL값위에 프로그램 이름이 저장되게 되는데 요 부분은 코드상에서 메모리 초기화하는 모든 부분에 영향을 안받기 때문에 이걸 활용하면 될 것 같았다.


근데 실행파일명에 쉘코드박아서 익스하는건 이미 했어서 그대로 진행했는데 계속 세그먼트 폴트가 떴다. 도저히 이유를 모르겠어서 삽질좀 하다가 NOP값을 쉘코드 앞뒤에 다 박고 했더니 익스가 됬다. 뭐지?하고 좀 찾아봤더니 이런 이유가 있어서 그랬던거 같다.


http://orang.tistory.com/entry/%EC%89%98%EC%BD%94%EB%93%9C-%EB%92%A4%EC%97%90-%EC%97%AC%EC%9C%A0-%EA%B3%B5%EA%B0%84%EC%9D%B4-%ED%95%84%EC%9A%94%ED%95%9C-%EA%B2%BD%EC%9A%B0


익스는 파일명 쉘코드 삽입형태만 바꾸고 이전의 실행파일명에 쉘코드 박아서 링크걸고 했던것처럼 똑같이  했다.




'Wargame > Lord Of the Bof(redhat)' 카테고리의 다른 글

LOB golem -> darkknight  (0) 2018.01.09
LOB skeleton -> golem  (0) 2018.01.09
LOB troll -> vampire  (0) 2018.01.09
LOB orge -> troll  (0) 2018.01.08
LOB darkelf -> orge  (0) 2018.01.08
블로그 이미지

JeonYoungSin

메모 기록용 공간

,