Home [HackCTF] Welcome_rev
Post
Cancel

[HackCTF] Welcome_rev

🚩 문제 정보


image

#HackCTF #Reversing #Welcome_REV #50pts


🚩 문제 풀이


πŸ‘β€πŸ—¨ 문제 νŒŒμ•…

image

주어진 νŒŒμΌμ€ 파일 ν˜•μ‹μ„ μ•Œ 수 μ—†λŠ” νŒŒμΌμ΄μ—ˆλ‹€. 이 νŒŒμΌμ„ λΆ„μ„ν•˜μ—¬ flagλ₯Ό μ°Ύμ•„λ‚΄λŠ” κ²ƒμœΌλ‘œ νŒŒμ•…ν•˜μ˜€λ‹€.


πŸ‘β€πŸ—¨ 풀이 μ‹œλ„

μš°μ„  주어진 νŒŒμΌμ„ IDAμ—μ„œ μ—΄μ–΄λ³΄μ•˜λ‹€


image

쒌츑의 function nameνƒ­μ—μ„œ mainν•¨μˆ˜κ°€ λ³΄μ˜€κ³  κ·Έλž˜ν”„ ν˜•νƒœλ‘œ ν•¨μˆ˜λ₯Ό λ³΄μ•˜λ‹€.


image

μœ„μ™€ 같은 ν˜•νƒœμ˜€λŠ”λ° λΆ„μ„ν•΄λ³΄λ‹ˆ μ‚¬μš©μžμ—κ²Œ νŒ¨μŠ€μ›Œλ“œλ₯Ό μž…λ ₯을 받은 ν›„ check_password ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•˜μ—¬, νŒ¨μŠ€μ›Œλ“œκ°€ λ§žλ‹€λ©΄ β€œCongrats, now where’s my flag?” νŒ¨μŠ€μ›Œλ“œκ°€ 틀리면 β€œIncorrect Password!β€μ˜ λ¬Έμžμ—΄μ„ 좜λ ₯(_puts)ν•˜λŠ” ν˜•μ‹μ΄μ—ˆλ‹€.


image

그런데 νŒ¨μŠ€μ›Œλ“œκ°€ λ§žμ„ κ²½μš°μ— flagλ₯Ό 좜λ ₯ν•˜λŠ” λ™μž‘μ΄ 보이질 μ•Šμ•˜λ‹€. κ·Έλž˜μ„œ νŒ¨μŠ€μ›Œλ“œλ₯Ό ν™•μΈν•˜λŠ” ν•¨μˆ˜λ‘œ μΆ”μ •λ˜λŠ” check_password ν•¨μˆ˜μ—μ„œ μ‚¬μš©μžμ˜ μž…λ ₯κ³Ό λΉ„κ΅ν•˜λŠ” ꡬ문을 μ°Ύμ•„λ³΄κΈ°λ‘œ ν•˜μ˜€λ‹€.


image

check_password ν•¨μˆ˜μ˜ μ •μ˜ λΆ€λΆ„μœΌλ‘œ μ΄λ™ν•˜μ—¬ λ™μž‘ 흐름을 λ”°λΌκ°€λ‹ˆ


image

κΈ΄ λ¬Έμžμ—΄μ„ _strncmp ν•¨μˆ˜μ—μ„œ μ‚¬μš©ν•˜κ³  μžˆμŒμ„ λ°œκ²¬ν•˜μ˜€λ‹€. ν•΄λ‹Ή λ¬Έμžμ—΄μ„ 따라가 λ””μŠ€μ–΄μ…ˆλΈ”λ¦¬μ–΄λ‘œ ν™•μΈν•˜λ‹ˆ


image

.rodata μ˜μ—­μ— λ¬Έμžμ—΄λ“€μ΄ κ·ΈλŒ€λ‘œ λ‚˜μ—΄λ˜μ–΄ μžˆμŒμ„ 확인할 수 μžˆμ—ˆκ³  λ”°λΌμ˜¨ κΈ΄ λ¬ΈμžλŠ” β€˜=’ λ¬Έμžκ°€ 뒀에 μ‚½μž…λœ ν˜•νƒœλ‘œ μ‘΄μž¬ν•¨μ„ 확인할 수 μžˆμ—ˆλ‹€. β€˜=β€™λ‘œ λ¬Έμžμ—΄μ΄ 끝남을 미루어보아 ν•΄λ‹Ή λ¬Έμžμ—΄μ€ ν•΄μ‹œ(Hash)μž„μ„ μ§μž‘ν•  수 μžˆμ—ˆλ‹€.

온라인 ν•΄μ‹œ λ³€ν™˜ μ‚¬μ΄νŠΈμ—μ„œ ν•΄λ‹Ή λ¬Έμžμ—΄μ„ λ³€ν™˜ μ‹œλ„ν•˜μ˜€λ‹€.


image

flag ν˜•νƒœλ‘œ λ³΅ν˜Έν™” λ˜μ—ˆλ‹€!


image

[Study] Register

[Study] Python - requests