2018. 7. 31. 23:21ㆍWarGame/LOB
오늘은 해야하는걸 알지만 머리에 너무 안들어와서 숨질것 같았다...ㅎㅎ
먼저 로그인을 하고!!
소스코드를 분석하자!
버퍼 뒷부분을 AAAA로 덮어서 ret뒤에 있는 코드를 사용 못하게끔 한다.
그리고 힌트에는 PLT라고 나와있다.
스택부분에는 RLT을 이용하고, 뒷부분은 strcpy함수를 이용해서 다시 버퍼쪽으로 오게끔 하면 된다.
따라서 payload는 아래와같다.
&system + dummy[4] + $/bin/sh + dummy[32] + &strcpy + dummy[4] + &ret+4 + &buf
생각보다 복잡하게 느껴지지만 우리가 구해야하는것들은 간단하다.
먼저 메인을 분석해서 strcpy위치를 구한다.
그리고 버퍼위치을 구하기위해서 소스코드를 약간 수정한다
system함수위치를 찾고
/bin/sh의 위치도 마저 찾는다.
그럼 우리가 찾은 것들을 아래와 같다.
system : "\xe0\x8a\x05\x40"
strcpy : "\x10\x84\x04\x08"
binsh : "\xf9\xbf\x0f\x40"
buf : "\xa0\xfa\xff\xbf"
ret+4 : "\xe8\xfa\xff\xbf"
처음에 쉘코드를 입력하였더니 seg 오류가 떠서 코어를 분석했고
올바를 값을 다시 집어넣었더니
위와같이 복사본의 쉘은 획득했지만
원본에 넣으면 다시 오류가 발생했습니다. 왜이런지 생각해보았더니 추측이지만 버퍼값을 얻기위해서 만든 한줄의 소스로인해 버퍼가 바뀌었다고 생각했고 코어를 분석해서 다시 수정해주었습니다.
코어덤프를 보고 수정한후 다시 익스플로잇을해주니 성공!
(grin)
'WarGame > LOB' 카테고리의 다른 글
LOB - 20. xavius -> death_knight (0) | 2018.08.03 |
---|---|
LOB - 19. nightmare -> xavius (296) | 2018.08.01 |
LOB - 17. zombie_assassin -> succubus (254) | 2018.07.31 |
LOB - 16. assassin -> zombie_asssassin (264) | 2018.07.30 |
LOB - 15. giant -> assassin (283) | 2018.07.30 |