본문 바로가기

Layer7

리버싱 5차시 과제(리버싱해서 C언어로 작성, prob3)

파일 prob3을 디스 어셈블 한 뒤 분석해주었다.

 

 

 

정리하자면

srand의 seed값을 time으로 가져서 랜덤 한 값이 초마다 바뀌게 하고,

총 10번 반복되는 for문 안에서 어떤 숫자를 입력받아서 그 값을 10으로 나눈 나머지를 구해서 그 값이랑

랜덤 한 값이랑 비교해서 같으면 계속 반복문을 돌고 아니면 wrong!! 을 출력한 뒤 종료하는 것이다.

그렇게 for문을 다 돌면 flag_generator함수를 호출해서 flag를 구할 수 있다.

 

c언어로 바꾸면 아래 사진과 같다.

가운데 계산하는 식을 짧게 요약하면 % 10 (10을 나눈 나머지)라고 한다.

 

 

 

for문을 빠져나오면 flag를 얻을 수 있기 때문에 플래그를 얻을 수 있는 함수를 호출하는 명령어의 주소(0x400890)로 점프해서 flag를 얻어주었다.

 

 

플래그 :LAYER7{3V4NGEL10N_3.0+1.0_THR1C3_UP0N_4_T1M3}