티스토리 뷰

CTF write-up

codegate 2015 steak

marshimaro aSiagaming 2018. 8. 5. 03:43

keyword : rc4, crypto, pwn




# main


main()은 간단하다.
flag 값을 key로 state값을 설정하고, 내 input값을 rc4 암호화시킨다.
aB1이라는 변수에는 비교 대상 값이 들어있는데, 기존 플래그 값을 바탕으로 암호화된 값이 들어있다.

하지만, rc4 알고리즘은 동일한 state로 encrypt -> plaintext가 가능하다.
그리고 fgets에 overflow가 있는데, 이를 통해, canary를 망가트려서 argv[1]을 통해 state값을 빼내올 수 있다.

이를 이용하여, 비교대상 aB1값은 쉽게 알아낼 수 있게 된다.