prob1
objdump -M intel -d prob1 명령어로
파일 prob1을어셈블리어로 디스 어셈블 해주었고 분석을 해보았다.
readelf -x .rodata prob1 명령어를 통해서 0x4007 d 근처로 가서 출력되는 문장을 확인할 수 있었다( input any number)
이제 gdb -q prob1 -> b main -> r 순서로 명령어를 입력해서 동적분석을 해보았다.
한줄한줄 실행해 봤더니
input any number가 출력되고
숫자를 입력받게 해서 아무숫자 11111111111111111... 를 입력했더니
입력한 숫자가 0xdeadbeef랑 다르기 때문에
0 xdeadbeef - [rbp-0xc]의 계산 결과가 0이 아니게 되어서
ZF가 0이 되므로 점프되어서 <flag_generator>를 실행 할 수 없었고 플래그를 얻지 못했다.
그래서 16진수 0xdeadbeef를 10진수로 바꾼 3735928559를 입력했더니
0xdeadbeef - [rbp-0xc]가 0이 되므로
ZF가 1이 되어서 점프가 되지 않았고 <flag_generator>를 실행할 수 있었다.
correct! 가 출력되었고
플래그를 구할 수 있었다.
플래그 : Layer7{y0u_are_g00d_at_a55emb1y}
'Layer7' 카테고리의 다른 글
리버싱 5차시 과제(리버싱해서 C언어로 작성, prob3) (0) | 2022.08.01 |
---|---|
리버싱 4차시 과제(C언어 파일 리버싱, prob2) (0) | 2022.07.27 |
Pwndbg 명령어 (0) | 2022.07.25 |
리버싱 3차시 과제(x64 어셈블리) (0) | 2022.07.25 |
리버싱 2차시 과제(실행파일이 만들어지는 과정) (0) | 2022.07.20 |