π© λ¬Έμ μ 보
#HackCTF #Reversing #Welcome_REV #50pts
π© λ¬Έμ νμ΄
πβπ¨ λ¬Έμ νμ
μ£Όμ΄μ§ νμΌμ νμΌ νμμ μ μ μλ νμΌμ΄μλ€. μ΄ νμΌμ λΆμνμ¬ flagλ₯Ό μ°Ύμλ΄λ κ²μΌλ‘ νμ νμλ€.
πβπ¨ νμ΄ μλ
μ°μ μ£Όμ΄μ§ νμΌμ IDAμμ μ΄μ΄λ³΄μλ€
μ’μΈ‘μ function nameνμμ mainν¨μκ° λ³΄μκ³ κ·Έλν ννλ‘ ν¨μλ₯Ό 보μλ€.
μμ κ°μ ννμλλ° λΆμν΄λ³΄λ μ¬μ©μμκ² ν¨μ€μλλ₯Ό μ λ ₯μ λ°μ ν check_password ν¨μλ₯Ό μ€ννμ¬, ν¨μ€μλκ° λ§λ€λ©΄ βCongrats, now whereβs my flag?β ν¨μ€μλκ° ν리면 βIncorrect Password!βμ λ¬Έμμ΄μ μΆλ ₯(_puts)νλ νμμ΄μλ€.
κ·Έλ°λ° ν¨μ€μλκ° λ§μ κ²½μ°μ flagλ₯Ό μΆλ ₯νλ λμμ΄ λ³΄μ΄μ§ μμλ€. κ·Έλμ ν¨μ€μλλ₯Ό νμΈνλ ν¨μλ‘ μΆμ λλ check_password ν¨μμμ μ¬μ©μμ μ λ ₯κ³Ό λΉκ΅νλ ꡬ문μ μ°Ύμλ³΄κΈ°λ‘ νμλ€.
check_password ν¨μμ μ μ λΆλΆμΌλ‘ μ΄λνμ¬ λμ νλ¦μ λ°λΌκ°λ
κΈ΄ λ¬Έμμ΄μ _strncmp ν¨μμμ μ¬μ©νκ³ μμμ λ°κ²¬νμλ€. ν΄λΉ λ¬Έμμ΄μ λ°λΌκ° λμ€μ΄μ λΈλ¦¬μ΄λ‘ νμΈνλ
.rodata
μμμ λ¬Έμμ΄λ€μ΄ κ·Έλλ‘ λμ΄λμ΄ μμμ νμΈν μ μμκ³ λ°λΌμ¨ κΈ΄ λ¬Έμλ β=β λ¬Έμκ° λ€μ μ½μ
λ ννλ‘ μ‘΄μ¬ν¨μ νμΈν μ μμλ€. β=βλ‘ λ¬Έμμ΄μ΄ λλ¨μ 미루μ΄λ³΄μ ν΄λΉ λ¬Έμμ΄μ ν΄μ(Hash)μμ μ§μν μ μμλ€.
μ¨λΌμΈ ν΄μ λ³ν μ¬μ΄νΈμμ ν΄λΉ λ¬Έμμ΄μ λ³ν μλνμλ€.
flag ννλ‘ λ³΅νΈν λμλ€!