100점짜리 맨 먼저 푼 문제입니다. 64비트 바이너리고, IDA로 뜯어서 보면
처음에 루프를 돌 카운트를 입력하고 루프를 돌면서 다시 값을 입력하는데 그 값들은 모두 seed와 xor하는데 쓰입니다. 그리고 그 seed는
srand로 rand값에 쓰이게 됩니다. 그리고 rand로 나온 값들의 md5해시를 구하여 비교하고, 맞다면 flag를 출력해줍니다. 따라서 파이썬으로 브루트포싱을 돌려주면 md5에 맞는 seed를 구할 수 있습니다.
위 소스를 파이썬으로 돌려주면 플래그를 얻을 수 있습니다.
Key : nullcon{nu11c0n_s4yz_x0r1n6_1s_4m4z1ng}
'Write Up' 카테고리의 다른 글
HackIM 2016 Reversing - donfos (0) | 2016.02.01 |
---|---|
HackIM 2016 Reversing - Pesudorandom (0) | 2016.02.01 |
[2016 CAT HolyShield] Reversing - Who Am I? (5) | 2016.01.23 |
정보보호올림피아드2015 본선 Q10 (5) | 2015.10.17 |
정보보호올림피아드2015 본선 Q5 (3) | 2015.10.17 |