LOB
-
해커스쿨 LOB level7System/HackerSchool LOB 2019. 7. 14. 17:12
-분량 많습니다. 이번에도 비슷한 맥락으로 풀 수 있으려니 했지만 좀 다른 방식으로 풀어야 하겠습니다 //here is changed! 이 부분이 argv[0]의 크기가 77이어야 BOF를 일으킬 수 있게 만드는데, 이는 평소에 풀던 방법과는 좀 다르게 심볼릭 링크를 사용해서 문제를 풀어야 합니다. 그것땜에 level 다시 보고 왔죠 근데 별 도움 안되드라 다른 풀이가 짱이야 bb ln -s orge link을 예시로 들어보면, 같은 디렉토리에 orge의 심볼릭 파일인 link가 생성되는 겁니다 확인하고자 ./link을 입력하면 그 실행 결과가 ./orge의 실행 결과와 일치하는 것을 볼 수 있지요 하하 이를 모의로 실험해보고자 tmp 디렉토리를 만든 뒤 거기에 orge의 또 다른 심볼릭 파일을 만들었습..
-
해커스쿨 LOB level6System/HackerSchool LOB 2019. 7. 14. 15:52
빡세다 이번에는 이것저것 다 짬뽕되서 중간에 인자값의 길이만 검사하는 코드만 추가됐네요 근데 저 코드는 첫번째 인자만 검사하는 코드이므로 사실 전에 문제풀던 방식과 같이 풀면 됩니다만 멍청한 저는 또 삽질을 합니다 tmp 디렉토리를 만들어서 darkelf 파일을 복사합니다. strcpy 명령어의 위치가 main+237인걸 확인하고 bp 걸어서.. 근데 왜 이랬지.. 풀이만 보고 따라하다가 어떤 뜻의 코드인지도 모른채로 풀고 있었네요 이럼 안되는디 아마도 첫번째 인자가 끝나는 위치, argv[2]의 시작 주소를 알기 위해서 저랬던거 같긴 한데 잘 기억이 안나네요 그래서 깔끔하게 다시 시작해봅시다. \x90 다음에 B(\x42)를 써주는데 B는 볼 필요 없구요 \xbf의 끝나는 위치, 글고 \x90의 시작 ..
-
해커스쿨 LOB level5System/HackerSchool LOB 2019. 7. 14. 14:46
분량 ㄱㅊ 아 시불탱 이제 알겠다ㅋㅋㅋㅋㅋㅋ 아닙니다 아까 안풀리던게 문제를 제대로 안봐서란걸 알고 후회중이네요 암튼 이번엔 전레벨의 egghunter + buffer hunter란게 추가됐네요 이번 buffer hunter은 아마도 buffer에서 처음~40바이트까지는 0으로 초기화시키는 거 같네요 사실 뇌피셜인데 제가 nop sled를 아마도 40바이트로 자꾸 하니까 안됐던거 같아요 50으로 하니 되는걸 보면 이게 buffer hunter의 영향을 받아서 그런거 같아서, 방금 이해해서 짜릿합니다(아님 말고 네 그래서 이번 레벨은 여기가 주목해야할 부분이죠 확인할 strcpy가 있는 곳은 라는 걸 확인하고 BP 걸고 edx 메모리를 뜯어보면 0xbffffc61에서 argv[2]가 시작된다는 것을 알 수..
-
해커스쿨 LOB level4System/HackerSchool LOB 2019. 7. 14. 14:17
이번엔 삽질을 좀 해서 분량이 있습니다! 이번엔 egghunter이라는게 생겼네요. 별 건 아니고, 시작하기 전에 설명드리자면, 이 부분이 환경변수를 모두 0으로 초기화해버려서 전에 BOF 일으키던 방법으론 못 풀어요. 별게 아니진 않죠 그래도 풀 방법은 있어요 ㄱㅊ 암튼 argv[1]의 48번째 문자는 \xbf여야 하고, 그 뒤에는 쉘코드를 직접 입력해줘야 합니다 그래서 이 egghunter 부분을 보면 memset(메모리를 지정된 값까지 어떤 값으로 지정하는 함수)가 쓰여서 아마 환경변수 사용을 저지하는 거 같죠 memset 함수 사용법을 알아보자면 요래 되어있는데, 위 코드에서 이 함수의 사용방법을 보면 환경변수가 있으면 이를 strlen(environ[i])까지 0으로 바꿔버리자 이런 뜻이거든요 ..
-
해커스쿨 LOB level3System/HackerSchool LOB 2019. 7. 14. 00:06
bash2 안하고, 왜인지 모르겠는데 환경변수 shell에서 \x90을 100번이 아닌 40번만 추가해야 된다는 사실을 몰랐으며, 인자가 아닌 입력문 그대로 stdin으로 받는다는 사실을 모르고 삽질하다가 또 하루가 지났ㄷr 이번 문제는 small buffer과 stdin이 쓰인 문제라고 그랬죠 16바이트에 sfp 4바이트 더 넘겨서 쉘코드 실행시키면 될거 같은데.. 근데 이번엔 gets() 함수가 쓰여서요 그것만 조심해서 코드 작성하면 풀릴 거 같아요 전처럼 환경변수에 쉘코드 저장을 하는데 여기서도 변수가 있는데 "\x90"*40으로 해줘야 하고 "\x90"*20으로 하고, 전처럼 ./(파일) 다음에 `python 형식을 쓰지 않고 (python 형식 뒤에 ./(파일) 형식으로 입력해야 이번 문제가 풀..
-
해커스쿨 LOB level2System/HackerSchool LOB 2019. 7. 12. 02:33
비슷한 문제라 바로 풀었습니다 ㅏ 사실 small buffer 문제는 다르게 풀면 조금 까다로운 풀이법이 된다던데 저는 그런거 없이 쉘코드로 프리패스,, 이번에는 16바이트를 입력받네요 그럼 SFP 포함하니까 20바이트 입력한 뒤에 쉘코드 집어넣으면 쉘 따이겠네요 gdb로 확인하나마나죠 , 만 봐도 16바이트 + 4바이트인 것을 알 수 있습니다 잘 안 보이겠지만 저건 shell이란 환경변수에 쉘코드를 설정한 모습입니다 글고 addr 파일 실행으로 그 주소를 알아내구요 0xbffffec6임을 확인했으니 이번엔 ./cobolt로 공격해보면 역시 바로 뚫리죠? 2019.7.12 오늘은 이만 잘랍니다 내일 왕창 해야지ㅣ
-
해커스쿨 LOB level1System/HackerSchool LOB 2019. 7. 12. 02:17
사실 level1이 아니라 gremlin이긴 한데 일관성있게 다 레벨로 할 생각입니다ㅏ 일단 LOB 서버 구축하고 접속하는 데 하루, 스터디 과제 보고서 쓰기랑 심시티하느라 LOB 글을 못 올렸는데 와중에 또 초반 bash2 설정을 안해서 한시간동안 삽질하다가 이제 풀려서 글올립니다 와 ^0^ 일단 ftz level과 동일한 hint 파일과 attackme 파일은 없구요, gremlin 파일과 그 C파일이 있을 뿐입니다 고로 일단 C파일을 살펴보면.. SetUID만 걸리지 않았지, 레벨과 비슷한 수준의 BOF 문제라는 걸 알 수 있습니다. gdb 켜서 리버싱해보면 을 보든 를 보든 256의 바이트를 기본적으로 덮어씌워야 합니다. 거기에 SFP 4바이트랑 RET 4바이트인데 RET는 덮어씌워야 하므로 26..