no. 1251056 까지의 스택 상황이다. esi 레지스터에는 특정 주소를 가리키고 있고 이 주소가 가지는 문자열은 아래와 같다. 일단 특정한 문자열을 저장하고 함수로 간다. test %eax, %eax 를 통해 두 수를 AND 연산 한다. 그리고 이 두 수가
no. 1251056 cmp DWORD PTR [rsp], 0x0 "readsixnumbers" sscanf 입력을 받음 그 전에 0x402683의 문자열을 열어보게 되면 정수 6개를 입력 받기 위해 문자열이 존재합니다. 입력받은 6개의 숫자는 $rsp에 4바
no. 1251056 sscanf 함수 들어가기 전 상황입니다. "%d %c %d" 정수 문자 정수 이렇게 세개를 입력받는 함수의 형태. 이 때 리턴 된 값이 2개 보다는 커야 폭탄이 터지지 않습니다. 물론 위의 형태를 통해 3개를 입력 받아야 함을 알 수 있습니다
no. 1251056 sscanf 입력을 받기 전까지의 스택 상황. %rcx, %rdx에 입력 받은 값을 저장하기 위해 주소를 할당하는 모습, %esi에는 어떻게 입력을 받을 것인지를 나타낸다. 여기서는 2개의 숫자를 입력받는다. cmp $0x2, %eax 둘
no. 1251056 sscanf 함수 이전까지의 스택 상황이다. 이번에도 2개의 숫자를 입력받기 위해 레지스터를 할당하는 모습을 볼 수 있다. cmp $0xf, %eax 위에서 AND 연산을 한 후의 in[0]를 다시 $0xf와 비교합니다. 이 때 두 숫자가
no. 1251056 readsixnumbers 전까지의 스택 상황이다. 매우 큰 배열? 공간을 뚫어 뒀다. 함수의 이름을 보아 6개의 숫자를 입력 받나 보다. 레지스터를 확인해보니 입력한 6개의 숫자는 $rsp를 기준으로 4바이트 씩 차지하며 저장되어 있다.
no. 1251056음.. 이런게 있는 줄 몰랐다. 친구가 생일 축하 연락하다가 얘기가 나와서 가르쳐 주고 떠남.. 진짜 폭탄을 던져버림여기서 시크릿 페이즈의 입력 값을 받아옴 $rax를 확인 해보니 입력한 "문자열"이 저장되어 있었음.이전의 스택 현황이고, strto