
밤랩을 야매로 빠르게 푸는 것을 기록합니다. gdb bomb 로 디버깅 시작해주고끝숫자 6개 $a_1$, $a_2$, ... , $a_6$ 를 각각 %rsp, 0x4(%rsp), .. , 0x14(%rsp) 와 대응된다.<+30>, <+36> 보면 $a_1$

x/s 0x402490 을 해서 문자열의 값을 확인한다. <strings_not_equal> 이 호출될 때 %esi 값과 입력 값을 비교하여문자열이 입력값과 같으면 $eax가 0이 되어 폭탄이 터지지 않는다<strings_not_equal> 을 대충 봤는데.

밤랩에는 대체로 페이즈 별 유형이 3개씩 있다고 볼 수 있다.우선 phase_2 의 유형부터 살펴보자.입력값 $a_1$, $a_2$, ... , $a_6$ 는 각각 %rsp, 0x4(%rsp), .. , 0x14(%rsp) 와 대응된다.<+30>, <+36>

밤랩 1251056, 1451023, .. 의 유형이다.입력 받는 부분을 보니 %d %c %d이고 입력 개수를 2개보다 많이 넣어야 한다.그리고, 0x10(%rsp)가 7보다 크면 터진다. <+70>에 jmp가 보이는데0x10(%rsp)의 값에 따라 해당 주소로

phase_4 의 핵심은 재귀함수인 func4 이다.하지만 func4를 뜯어보고 하는 것은 의미가 없다고 생각한다.다행히 입력 값 중 하나의 크기가 작아서 브루트포스로 풀어도 충분하다.이 글에서는 phase_4와 func4 또한 3가지 종류가 있다는 것을 소개하고,어떤

밤랩 1251056, 1551002, .. 의 유형이다.입력 값은 %d %d, 입력 값의 개수는 1보다 커야한다.0x402540을 보면 참 어지럽다.. +72에서 +89보면 계속 순환하는데.. 요약하자면..0xf번 반복한 결과물이 0xf이여야 한다. 위에 사진 보면 0

phase_6은 유형이 총 4가지가 있다. 여태 다른 페이즈와 달리 여기의 유형들은 거의 같다.그래서, 정 모르겠으면 야매로 찍어서 최대 4번만에 맞출 수 있다. 유형 구분의 의미가 없어서 바로 본론으로 들어간다.밤랩 1251056 을 예시로 들겠다.입력을 6개 받고,

secret_phase 진입 방법 및 공통 풀이위 사진은 disas main 했을 때 마지막 부분이다. 관찰해보면 모든 페이즈를 call 하고바로 다음 phase_defused를 call 하는 것을 알 수 있다. main의 어딜 봐도 secret_phase를 call

이전에 올린 페이즈 별 풀이를 참고하여 풀이를 간략하게만 썼습니다.<+49> 에서 1씩 증가하는 %ebx를 %eax에 복사하고$ai$ + %eax == $a{i+1}$ 을 확인하므로 0 1 3 6 10 150x4024a0 이 0x400f5e 이므로 0 y 967