-
Addis AbabaWargame/Microcorruption 2014. 8. 14. 11:21
이번 문제는 login 함수가 없다. main 함수를 살펴보자.
4438 <main> 4438: 3150 eaff add #0xffea, sp 443c: 8143 0000 clr 0x0(sp) 4440: 3012 e644 push #0x44e6 "Login with username:password below to authenticate.\n" 4444: b012 c845 call #0x45c8 <printf> 4448: b140 1b45 0000 mov #0x451b ">> ", 0x0(sp) 444e: b012 c845 call #0x45c8 <printf> 4452: 2153 incd sp 4454: 3e40 1300 mov #0x13, r14 4458: 3f40 0024 mov #0x2400, r15 445c: b012 8c45 call #0x458c <getsn> 4460: 0b41 mov sp, r11 4462: 2b53 incd r11 4464: 3e40 0024 mov #0x2400, r14 4468: 0f4b mov r11, r15 446a: b012 de46 call #0x46de <strcpy> 446e: 3f40 0024 mov #0x2400, r15 4472: b012 b044 call #0x44b0 <test_password_valid> 4476: 814f 0000 mov r15, 0x0(sp) 447a: 0b12 push r11 447c: b012 c845 call #0x45c8 <printf> 4480: 2153 incd sp 4482: 3f40 0a00 mov #0xa, r15 4486: b012 5045 call #0x4550 <putchar> 448a: 8193 0000 tst 0x0(sp) 448e: 0324 jz #0x4496 <main+0x5e> 4490: b012 da44 call #0x44da <unlock_door> 4494: 053c jmp #0x44a0 <main+0x68> 4496: 3012 1f45 push #0x451f "That entry is not valid." 449a: b012 c845 call #0x45c8 <printf> 449e: 2153 incd sp 44a0: 0f43 clr r15 44a2: 3150 1600 add #0x16, sp
별다른 특이사항이 없고, 공격할 부분이 마땅히 보이지 않는다.
하지만 새롭게 printf문이 추가되었다. 여기서 냄새가 난다.
바로 이번레벨에선 Format String 취약점이 등장한다.
또한 이번레벨은 보안레벨이 낮은 LockIT Pro HSM-1를 사용하므로,
단순히 password를 비교한 후 stack에 값을 저장하고 이 값이 0이 아니면 unlock된다.
그러므로 RET를 조작하여 실행흐름을 바꿀 필요 없이, 단순히 sp가 가리키는( 0x3616 ) 부분의 값만 바꾸면 된다.
16362578256e 로 간단하게 클리어.
'Wargame > Microcorruption' 카테고리의 다른 글
Jakarta (0) 2014.08.11 Santa Cruz (0) 2014.08.04 Montevideo (0) 2014.07.31 Whitehorse (0) 2014.07.31 Johannesburg (0) 2014.07.31