πŸ” λ³΄μ•ˆ,μ •λ³΄λ³΄ν˜Έ

    [ DoPwn ] Week2 - "assemlator" Write Up

    μ–΄μ…ˆλΈ”λ¦¬λ‘œ νŒŒμΌμ„ λœ―μ–΄μ„œ λ‚΄μš©μ„ ν™•μΈν•΄λ³΄κΈ°λ‘œ ν–ˆλ‹€. 아이닀λ₯Ό 톡해 ν•΄λ‹Ή νŒŒμΌμ„ λœ―μ—ˆκ³ , tab ν‚€λ₯Ό 눌러 c와 μœ μ‚¬ν•œ μ½”λ“œλ‘œ λ³€ν™˜ν–ˆλ‹€. λ³€ν™˜λœ ifλ¬Έμ—μ„œ XOR 연산을 톡해 νŠΉμ • 값을 λΉ„κ΅ν•œλ‹€. λ”°λΌμ„œ XOR μ—°μ‚°μ˜ νŠΉμ„±μƒ a1은 λ‚˜λ¨Έμ§€ 2개의 값을 XORν•˜λ©΄ λ‚˜μ˜¬ 것이닀. 계산 κ²°κ³Όλ₯Ό ν”„λ‘œκ·Έλž¨μ— μž…λ ₯ν•˜μ—¬ flagλ₯Ό ν™•μΈν–ˆλ‹€. ;)

    [ DoPwn ] Week2 - "assembly" Write Up

    ν•œκΈ€λ‘œ λͺ…μ„Έλœ κΈ°λŠ₯을 μ–΄μ…ˆλΈ”λ¦¬ν™” μ‹œν‚€λŠ” λ¬Έμ œμ˜€λ‹€. 1. rax에 0x77 값을 λŒ€μž…ν•΄λΌ. => mov rax,0x77 2. rbx에 0x88 값을 λŒ€μž…ν•΄λΌ. => mov rbx,0x88 3. rcx에 0x99 값을 λŒ€μž…ν•΄λΌ. => mov rbx,0x88 4. rax -= 0x10 => sub rax,0x10 λ”°λΌμ„œ μ‚¬μ΄νŠΈμ— ν˜•μ‹μ— 맞게 λ„£μœΌλ©΄ λœλ‹€ ;)

    [ 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 λ˜λŠ” μœ„μΉ˜λ₯Ό λ³€κ²½ν•˜λŠ”..