elf라 일단 gdb로 바로 까고 disass 출력했다.
ptrace가 있다.
catchpoint 잡고 commands 만들면 쉽긴 한데 여기서 continue가 왜인지 오류가 나더라……..
그래서 일단
start
disass //명령어 보면서 ptrace 부르는 함수 주소 파악
b *main+32
r
ni //ptrace 일단 실행 한 번 시키고
set $eax=0 //반환값 0으로 고치기
//사실 그냥 ptrace 다음 명령에 bp 걸고 eax=0 걸면된다
이렇게 했더니 password 입력창이 나온다.
쉬운 문제면 문자열에 있으니까 ida로 까봤는데 아니다 이거 gdb로 분석을 해야할 거 같다.
잘 보면 dl과 al을 비교하여 틀리면 0x80484e4로 간다.
0x80484e4를 가보면 위와 같다. push하는 값이 뭔지 참조해보면
jne로 분기하면 안되는 구간이다.
결론: cmp로 dl, al을 모두 맞춰줘야 한다.
cmp 하는 구간에 bp를 걸고 가보면
이렇게 al 값이 누출된다. (내가 작성한 값은 dl)
disass를 다시 보면 cmp를 총 4번한다(4글자)
이정돈 노가다를 해보자
해독했더니 easy가 나왔다.