그동안 Pwnable 문제만 풀어보았지만 reversing 문제와 암호학 문제 등 여러 종류의 문제를 풀어 볼 것이다.

문제에서는 chall 바이너리와 encrypted라는 딱 봐도 암호화가 된 바이너리를 주는데 위 사진은 chall 바이너리의 main함수로 추정되는 함수를 hexray 한 것이다.

\xde\xad\xbe\xef라는 키를 가지고 flag.png를 읽어와서 암호화를 하는 바이너리로 확인이 된다.
암호화 과정을 살펴보면 flag.png에서 1byte씩 읽어와서 0부터 1씩 증가하는 v3변수를 가지고 v4[v3%4]와 xor 연산을 한 수 19를 더한 후에 encrypted에 write를 하는 것을 볼 수 있다.
이를 역연산하면 원래의 flag.png 파일을 얻을 수 있을 것 같다.

역 연산을 수행하는 c 코드이고 이를 통해 만들어진 flag를 flag.png로 바꾸어 실행하면 flag를 얻을 수 있다.
'보안 > DreamHack' 카테고리의 다른 글
| Dreamhack - Use After Free (0) | 2025.03.24 |
|---|---|
| Dreamhack basic_exploitation_003 (0) | 2025.01.03 |
| Dreamhack basic_exploitation_002 (0) | 2024.12.04 |
| Dreamhack Format String Bug (0) | 2024.12.04 |
| Dreamhack out of bound (0) | 2024.10.30 |