뭔가가 더 추가되서 등장할 줄 알았는데
에그헌터라던가 그러한 친구들이 지워지고 새로 등장한 친구는
if(argv[1][46] == '\xff')
{
printf("but it's not forever\n");
exit(0);
}
argv[1] 의 [46] 부분이 \xff면 stack is your friend 라는 문구와 함께 종료가 되버리는군요.
모든 프로그램이 완료된 후를 보고싶어서 ret에 브레이크 포인트를 주었습니다.
그러니 아무리 진행을 해도 but it's not forever 이라는 문구와 함께 실패를하고
코어파일을 아무리 분석해봐도 여러가지 다른 방법을 써봐도 ff를 벗어날 방법을 생각 못하고 있던 와중에 argv[2]에는 한도가 없지 않았나 ?
1000개를 넣어보자 하고 생각이 들었습니다.
값이 변하는게 느껴져서
10000개를 넣어줬습니다
이대로 좀더 값을 주면 ff값도 넘어갈 수 있을거 같습니다
10만개를 넣어줬더니 드디어 ff에서 벗어나서 fe가 나오는군요 ..!
어차피 nop코드를 넣어줬기에 무시하고 쭈우우우욱 실행되므로 nop의 적당한 주소를 넣은 argv[1]의 리턴값에 넣어준 다음에 진행 해보겠습니다
argv[1]에 필요없는값44개와 nop의 주소를 박아준뒤에
argv[2]에 놉 코드를 10만개 사용한뒤에 쉘코드를 넣어줌으로써 권한을 얻는것을 성공하였습니다 .
'해커스쿨 lob' 카테고리의 다른 글
LOB golem (0) | 2016.05.10 |
---|---|
LOB skeleton (0) | 2016.05.05 |
LOB troll (0) | 2016.05.04 |
LOB orge (0) | 2016.05.02 |
LOB darkelf (0) | 2016.05.02 |