본문 바로가기
  • True knowledge exists in knowing that you know nothing. -Socrates-

Study80

LOB 8 vampire -> skeleton 안녕하세요 :) 문제 tip스텍을 다시 천천히 보자 코드 쓱싹 변경 사항ultra argv hunter! argv에 있는 모든 내용을 삭제합니다. ㅠㅠ 하지만 심볼릭 링크(shell code)를 걸어 놓고 gdb를 통해서 스텍을 훑어 보면 argv 말고도 다른 공간에 argv[0]의 내용이 저장되어 있습니다. (왜 적제 되는지는 잘 모르겠습니다 ㅠㅠ.) 위는 core dump를 통해서 실제 스텍 주소를 찾은 것입니다. (심볼릭 링크 포함) shell 냠냠:) 2017. 6. 12.
LOB 7 troll ->vampire 안녕하세요 :) 문제 tip 1. 버퍼에 엄청 많은 값을 입력하면 주소는 어떻게 변할까? 코드 쓱싹변경 사항 if(argv[1][46]=="\xff")이면 종료 시킨다. 이번 문제는 단순하면서도 재미있습니다.지금까지 풀었던 문제에서 ret에 담는 주소는 bffff~와 같은 형태였습니다.근데 argv[1][46]이 \xff이면 프로그램을 종료시킵니다.이를 우회 할 수 있는 방법은 엄청 많은 데이터를 입력 하여 주소를 정상적으로 \ff가 아니게 만들면 됩니다. (tmp 폴더에 복사 후 core dump를 통해 주소 값을 알아냅니다 :> ) 위와 같이 NULL을 100000개 넣어주면 0xbffe~ 주소까지 채울 수 있습니다. shell 쓱싹 :) 2017. 6. 12.
LOB 6 orge->troll 안녕하세여 :) 문제 tip 1. 스텍에 올라가는 것들은 무엇이 있을까2. 심볼릭 링크란?$ln -s ./troll ./link_troll 코드 쓱싹 변경 된 사항 argv[1]!=2 가 되면 프로그램을 종료시킵니다. /tmp 폴더에 복사한후 gdb를 통하여 스텍에 올라와 있는 값들을 확인 합니다.그러면 아래와 같이 /tmp/./troll이 보이시나요 ? (gdb) x/1000s $esp-1000 이와 같이 argv[0]이 stack에 올라간다는 것을 알 수 있습니다.페이로드 구조는 argv[0]+A*44+"shell code 주소" 여기서 argv[0]은 심볼릭 링크를 걸어준파일 명입니다.심볼릭 링크는 윈도우에서 바로가기 라고 생각하시면 됩니다. core 파일을 통해서 argv[0]의 주소를 찾을 수 .. 2017. 6. 12.
lob tips (풀기전 알아야할 것들) 안녕하세요 포너블을 다시 공부하기 위해서 lob를 정주행 하고 있습니다. 그전에 lob를 풀기 전에 알아야할 사전 지식? 을 포스팅 할까 합니다.요약1. /bin/bash22. cp ./문제 /tmp/3. gdb -c core gate-> gremlin 문제로 예시를 들겠습니다. 1. /bin/bash2 lob의 모든 문제는 shell 창에 /bin/bash2를 입력하고 하셔야합니다.이유는 정확히 모르겠으나 아래의 예시를 보면 알 수 있습니다. 동일한 페이로드(/bin/bash2 일 때 정상적으로 shell을 얻음) (기본 bash2 일 때 shell을 얻지 못함) 2. 권한 문제lob를 풀기 위해서는 gdb라는 툴을 이용합니다.하지만 주어진 문제에 gdb로 실행 시켜보면 아래와 같이 debug를 할 수.. 2017. 6. 12.
LOB 5 (darkelf -> orge) LOB darkelf -> orge 문제 풀이 1. 소스코드 분석 문제는 동일 합니다. 하지만 달라진 것은 argv[0]의 길이가 77이 아닐 때 종료 시킨다는 것 입니다.if(strlen(argv[0]!=77){} 그럼 일단 우회 하는 방법으로는 .//////////////////////(77개) 로 하는 방법이 하나 있습니다.(./orege == .//////////////////////orege) 다른 방법으로는 심볼릭 링크가 있는데 저는 1번째 방법으로 풀어 보겠습니다. 권한 문제 때문에 /tmp 폴더로 복사합니다.gdb를 실행 시킬 때는 /의 갯수가 67개여야 합니다. 77-10(/tmp/.oreg) 확인을 해보면 정상적으로 종료되지 않고 프로그램이 돌아가는 걸 알 수 있습니다. 자 그러면 페이.. 2017. 6. 12.
giant 이번 문제는 공백을 어떻게 우회하는지에 대한 문제입니다. 저한테는 재미있는 문제여서 기억에 많이 남습니다. 1글자로 공백을 우회해야 합니다. 아래는 아스키코드표에 있는 일부분 입니다. 파란색으로 표시된 부분은 공백을 나타내는 아스키 코드입니다. 즉 우리가 and를 우회하기 위해 &(%26)을 사용하는 것과 같이 사용하는 거라고 보시면 됩니다. 이번 문제에서는 %0b와 %0c로 공백을 우회 할 수 있었습니다. 2017. 4. 30.