-
ELF - Ptrace카테고리 없음 2017. 2. 26. 19:32
처음 Ptrace 이 것에 정체를 알아차리지못해서 .. 많은 삽질을 하였다..
ptrace 부분이 저 부분이다. test 어셈블리로 디버거를 구분하는데 저쪽에 브레이크를 걸고 실행해보면 eax레지스터 값이 아마 -1 같이 0이 아닌값일것이다.
그 상태로 쭉 실행되면 Debugger ~ 하면서 프로그램이 종료되는데
그 의미는 eax를 0으로 만들면 우회가 된다는 뜻이기떄문에 eax레지스터 값을 0으로 만들면된다.
그럼 입력을 받고 아래쪽에 딱 4개의 CMP 어셈블리가 있는데 그 의미는 패스워드가 4글자라는 뜻 이며
그 CMP 부분을 보게되면 cmp %al,%dl 이런식으로 되어있다.
그렇게 되면 $dl 에는 내가 입력한 값 %al 에는 비밀번호 한자리 씩 들어가 있을것이다 !
처음 입력할떄 1234를 입력하였다. 브포를 걸고 확인한 결과 아스키코드로 16진수인 $al값인 0x65는 (e) $dl값인 0x31은 (1) 이런식으로 한자리 한자리 입력되어있는데 하지만 이cmp 부분에서 우리가 입력한 dl값이 al과 다르면 wrong password가 출력되기떄문에 맞춰줘야한다.
그 다음 두번째 값
첫 번쨰 0x65 , 0x31 <- 이쪽을 맞춰주는 부분을 캡쳐를 모르고 안해버렷다 ..
마지막 한자리는 캡쳐 X
Good password !!!