πŸ” λ³΄μ•ˆ,μ •λ³΄λ³΄ν˜Έ/πŸ“˜ [STYDY] 리버싱

    [ DoPwn ] Week1 - "system" Write Up

    shell ν”„λ‘œκ·Έλž¨μ€ μ–΄λ–€ λ¬Έμžμ—΄μ„ μž…λ ₯ν•˜λ©΄ μ‰˜μ˜ ls -al λͺ…λ Ήκ³Ό 같은 응닡을 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ΄λ‹€. ν•΄λ‹Ή 파일이 μžˆλŠ” λ””λ ‰ν† λ¦¬μ˜ 응닡과 μΌμΉ˜ν•˜κΈ° λ•Œλ¬Έμ— λΆ„λͺ… ν”„λ‘œκ·Έλž¨ μ•ˆμ—μ„œ ls -al λͺ…령을 μ‹€ν–‰ν•˜λŠ” μ‹œμŠ€ν…œ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  κ²ƒμž„μ„ μœ μΆ”ν•  수 μžˆλ‹€. 이 ν”„λ‘œκ·Έλž¨μ—μ„œ μž…λ ₯은 gets ν•¨μˆ˜λ‘œ μ²˜λ¦¬λœλ‹€. cμ–Έμ–΄μ—μ„œ getsλŠ” μž…λ ₯λ°›κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” ν•¨μˆ˜μΈλ°, κ°œν–‰ μ•ž λΆ€λΆ„κΉŒμ§€ 잘라 char* νƒ€μž…μœΌλ‘œ λ§ˆμ§€λ§‰μ— NULL을 λΆ™μ—¬ μ €μž₯ν•΄μ£ΌλŠ” ν•¨μˆ˜λΌκ³  ν•œλ‹€. ν—ˆλ‚˜ 버퍼 μ˜€λ²„ν”Œλ‘œμš°λ₯Ό λ°œμƒμ‹œν‚¬ 수 μžˆλŠ” λ¬Έμ œκ°€ μ‘΄μž¬ν•΄ gets_s ν•¨μˆ˜μ˜ μ‚¬μš©μ„ ꢌμž₯ν•œλ‹€κ³  ν•œλ‹€. +) μ°Έμ‘° 더보기 https://blockdmask.tistory.com/343 [Cμ–Έμ–΄/C++] gets, puts λ¬Έμžμ—΄ μž…μΆœλ ₯ ν•¨μˆ˜μ— λŒ€ν•΄μ„œ. μ•ˆλ…•ν•˜μ„Έμš”..

    [ DoPwn ] Week1 - "Magic Spell" Write Up

    Magic Spell ν”„λ‘œκ·Έλž¨μ€ 주문을 μž…λ ₯λ°›μœΌλ©΄ ν•΄λ‹Ή 주문에 따라 정해진 λͺ…령을 μ‹€ν–‰ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ΄λ‹€. λ”°λΌμ„œ ν”„λ‘œκ·Έλž¨ μ•ˆμ—λŠ” 주문을 λΉ„κ΅ν•˜λŠ” cmp λͺ…령이 μ‘΄μž¬ν•  것 이라 μœ μΆ”ν•œ λ’€ μ ‘κ·Όν–ˆλ‹€. main ν•¨μˆ˜μ˜ λ‚΄μš©μ€ spell1 ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•˜λŠ” 것을 μ œμ™Έν•˜κ³ λŠ” 별 λ‚΄μš©μ΄ μ—†μ—ˆλ‹€. λ”°λΌμ„œ spell1 ν•¨μˆ˜μ˜ λ‚΄μš©μ„ ν•¨κ»˜ ν™•μΈν–ˆλ‹€. spell1 ν•¨μˆ˜μ— μ˜ˆμƒν•œ 바와 같이 λΉ„κ΅ν•˜λŠ” 뢀뢄이 μ‘΄μž¬ν•œλ‹€. 0x4d와 λΉ„κ΅ν•˜λŠ” κ²ƒμœΌλ‘œ 보아, λ¬Έμžμ—΄ "M"이 μž…λ ₯되면 같은 κ²ƒμœΌλ‘œ μΈμ‹λ˜μ–΄ μ•„λž˜μ— jumpκ°€ λ˜μ§€ μ•Šκ³  spell2둜 λ„˜μ–΄κ°ˆ 수 μžˆμŒμ„ μ•Œ 수 μžˆλ‹€. λ¬Έμžμ—΄ μž…λ ₯ 직전을 보면, 0x7fffffffe4c0 μœ„μΉ˜, 즉 rsi에 μž…λ ₯λ°›λŠ” λ¬Έμžμ—΄μ— 듀어감을 μ•Œ 수 μžˆλ‹€. λΉ„κ΅ν•˜λŠ” 뢀뢄은 rbp-1, 즉 μž…λ ₯λ°›λŠ”κ³³λ³΄..

    [ DoPwn ] Week1 - "Student ID" Write Up

    student ν”„λ‘œκ·Έλž¨μ€ 이름을 μž…λ ₯받은 λ’€ μΈμ‚¬ν•˜κ³  ν•™λ²ˆμ„ 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μž„μ„ 싀행과정을 톡해 μ•Œμ•„λ‚Ό 수 μžˆμ—ˆλ‹€. λ”°λΌμ„œ μž…λ ₯된 이름을 λΆ„μ„ν•˜λŠ” μ½”λ“œκ°€ μ‘΄μž¬ν•  κ²ƒμž„μ„ μ˜ˆμΈ‘ν•  수 μžˆμ—ˆλ‹€. μš°μ„  ν”„λ‘œκ·Έλž¨μ˜ μ •ν™•ν•œ ꡬ쑰λ₯Ό ν™•μΈν•˜κΈ° μœ„ν•΄ gdb둜 뢄석을 μ‹œλ„ν–ˆλ‹€. pd main을 μ‹€ν–‰ν•œ 결과이닀. mainν•¨μˆ˜λŠ” μœ„μ™€ 같이 κ΅¬μ„±λ˜μ–΄μžˆμœΌλ©°, μ•žμ„œ μ˜ˆμΈ‘ν•œ 바와 같이 0x401205 μ—μ„œ μž…λ ₯받은 값을 λΉ„κ΅ν•˜λŠ” μ½”λ“œκ°€ μ‘΄μž¬ν•¨μ„ 확인할 수 μžˆμ—ˆλ‹€. μš°μ„  λΉ„κ΅λŒ€μƒμ˜ 값을 μ•Œμ•„λ‚΄λ©΄ μ‰½κ²Œ ν’€ 수 μžˆμ„ 것 κ°™μ•„, λΉ„κ΅ν•˜λŠ” λŒ€μƒμ˜ μ£Όμ†Œκ°’μ— μžˆλŠ” λ¬Έμžμ—΄μ„ ν™•μΈν•˜λŠ” μ‹œλ„λ₯Ό ν–ˆλ‹€. gdbκ°€ λ©”λͺ¨λ¦¬μ— μ ‘κ·Όν•˜μ§€ λͺ»ν•œλ‹€λŠ” 메세지와 ν•¨κ»˜ 데이터 μ‘°νšŒμ— μ‹€νŒ¨ν–ˆλ‹€. 쑰금 κ³ λ―Όν•œ λ’€, 직접 값을 ν™•μΈν•˜λŠ” λŒ€μ‹  return λ˜λŠ” μœ„μΉ˜λ₯Ό λ³€κ²½ν•˜λŠ”..

    [Whois-Internal] "EasyReverseMe" Write-Up

    ν”„λ‘œκ·Έλž¨μ„ λ°”λ‘œ μ‹€ν–‰ν•œ 화면이닀. νŠΉμ • 숫자λ₯Ό 물어보고, 이에 λ”°λ₯Έ μž…λ ₯을 λ°›λŠ”λ‹€ μ‚¬μš©μžμ˜ μž…λ ₯을 λ°›μœΌλ©΄ μ•„μ‰½λ„€μš”.. λΌλŠ” ν…μŠ€νŠΈλ₯Ό 좜λ ₯ν•œλ‹€. 이λ₯Ό 톡해 λ‚˜λŠ” λ‹€μŒ 2가지λ₯Ό μœ μΆ”ν–ˆλ‹€: 1) 첫번째 ν…μŠ€νŠΈκ°€ μ°νžˆλŠ” 곳이 main ν•¨μˆ˜μΌ 것이닀 2) μž…λ ₯κ°’κ³Ό νŠΉμ • 숫자 or λ‚œμˆ˜λ₯Ό λΉ„κ΅ν•˜λŠ” 뢀뢄이 λΆ„λͺ… μ‘΄μž¬ν•  것이닀 EasyReverseMe.exe νŒŒμΌμ„ x64dbg둜 μ—° 화면이닀. μœ„μ—μ„œ μƒκ°ν•œ 바와 같이 ν™•μΈν•˜κΈ° μœ„ν•΄, μš°μ„  전체 ν…μŠ€νŠΈλ₯Ό μ‘°νšŒν–ˆλ‹€. ν”„λ‘œκ·Έλž¨ λ‚΄μ˜ 전체 λ¬Έμžμ—΄λ“€μ„ ν™•μΈν•œ 결과이닀. μ•„κΉŒ ν™•μΈν•œ 질의문과 밑에 κ°œλ°œμžκ°€ μž…λ ₯ν•œ κ²ƒμœΌλ‘œ λ³΄μ΄λŠ” λ‹€μ–‘ν•œ λ¬Έμžμ—΄μ΄ μ‘΄μž¬ν•œλ‹€. μš°μ„  main ν•¨μˆ˜λΆ€ν„° ν™•μΈν•˜κ³ μž 질의문으둜 λ“€μ–΄κ°€ λ³΄μ•˜λ‹€. μ§ˆμ˜λ¬Έμ„ 따라 λ“€μ–΄κ°„ κ²°κ³Ό μ˜ˆμƒλŒ€λ‘œ cmpλ₯Ό 톡해 값을 λΉ„κ΅ν•˜λŠ” ..

    [root-me.org] "reversing - PE x86 -0 protection" Write Up

    μš°μ„  νŒŒμΌλΆ€ν„° μ—΄μ—ˆλ‹€. 뭐가 λ§Žλ‹€. κ°œμ«„λ¦°λ‹€ μš°μ„  main ν•¨μˆ˜λ₯Ό μ°Ύμ•„μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— ν”„λ‘œκ·Έλž¨μ—μ„œ μ‚¬μš©λ˜λŠ” λͺ¨λ“  ν…μŠ€νŠΈλ₯Ό κ²€μƒ‰ν–ˆλ‹€ λˆ„κ°€λ΄λ„ μ‚¬λžŒμ΄ μ“΄ 것 같은 μ˜μ–΄λ¬Έμž₯이 λ°˜κ²¨μ€€λ‹€. ν•œκΈ€μ΄ μ•„λ‹ˆλΌ λ‹Ήν™©ν–ˆμ§€λ§Œ μ™Έκ΅­λ¬Έμ œλ‹ˆ κ·ΈλŸ¬λ €λ‹ˆ ν–ˆλ‹€. μ˜μ‹¬μŠ€λŸ¬μš΄ λ¬Έμž₯듀이 λͺ¨μ—¬μžˆλŠ” μœ„μΉ˜λ‘œ μ΄λ™ν•˜κΈ° μœ„ν•΄ 6번째 ν•­λͺ©μ„ 더블클릭 ν–ˆλ‹€. μ½”λ“œ μœ„λ₯Ό λ³΄λ‹ˆ push ebp; move ebp esp;κ°€ μžˆλŠ” 것을 λ³΄λ‹ˆ μŠ€νƒν”„λ ˆμž„μ΄ 적용된 것 κ°™λ‹€. λ‹€μ‹œ 말해 μ–΄λ–€ ν•¨μˆ˜μ˜ 싀행이 μ‹œμž‘λ˜λŠ” λΆ€λΆ„μ΄λ‹ˆ, 잘 μ°Ύμ•„ λ“€μ–΄μ˜¨ λ“― ν•˜λ‹€. μ—¬κΈ°λΆ€ν„° ν•œμ°Έ ν•΄λ§Έλ‹€. μš°μ„  F8을 λˆ„λ₯΄λ©΄μ„œ μ­‰ 싀행을 ν–ˆλŠ”λ°, κ°‘μžκΈ° 쀑간에 λšν•˜κ³  꺼져버렸닀. λ‹Ήν™©ν•˜μ—¬ ν•¨μˆ˜ μ‹œμž‘λΆ€λΆ„μ— Breakpoint κ±Έκ³  계속 싀행을 ν–ˆκ³ , λ‚˜μ€‘μ—λŠ” 창이 μ•„λž˜μ™€ 같이 λ°”λ€Œμ—ˆλ‹€: λͺ‡λ²ˆ 돌렀..