호그와트

dreamhack rev-basic-9

영웅*^%&$ 2022. 2. 14. 14:44
728x90

흠냐 흠냐

주어진 문제의 함수를 분석해보면 간단하다 .

일단 입력한 값으로 xor연산

그 다음 바이트 가져와서 rax에 더한 후 eax로 옮기고 입력값에 대해서 ror 연산 5 수행 수행

조금 더 정제된 형식으로 표현하면

이전 바이트 값을 가져온 다음

이를 해당 위치의 key 배열 문자와 xor연산

나오는 값을 index로 하는 mem 값을 가져오고

이 값을 buf의 다음 바이트와 더한다

오른쪽으로 5번 rotation 하는 연산을 반복적으로 수행하고 있댜

수식적으로 표현하면 이렇게 된다

temp = rotl(buf[i * 8 + (8 - k) % 8], 5);

temp -= mem[(unsigned char)(buf[i * 8 + 7 - k] ^ keyArray[7 - k])];

buf[i * 8 + (8 - k) % 8] = temp;

이걸 이용해서 flag를 따내면 된다

728x90

'호그와트' 카테고리의 다른 글

Dreamhack web PATCH-1  (0) 2022.02.21
User After free 취약점  (0) 2022.02.19
드림핵 dreamschool ~~파도 ~~~ 별  (0) 2022.02.11
dreamhack return address Overwrite  (0) 2022.02.09
dreamhack Oob  (0) 2022.02.09