-
리λ²μ± μμ :: gdb -01 file, x-executable, gdb binary fileSECURITY/REVERSING 2020. 7. 21. 23:12
μ΄λ² μ€μ΅μ λͺ©μ μ μμ νμΌμ΄ μ΄λ€ νλ‘κ·Έλ¨μΈμ§λ₯Ό μμλ΄κ³ ,
무μμ μ λ ₯ν΄μΌμ§ "oh great!!" λΌλ λ¬Έμ₯μ΄ μΆλ ₯λ μ§ μμ보λ κ²μ΄λ€.
μλμ°μμλ νμΌ νμ₯μλ‘ νμΌ μ 보λ₯Ό νμ ν μ μλλ°,
리λ μ€μμλ νμ₯μκ° μ‘΄μ¬νμ§ μμμ μμμ νμΌμ μ’ λ₯λ₯Ό μκΈ° μν΄μλ λ³κ°μ μμ μ΄ νμνλ€.
λ¨Όμ , readelf λͺ λ Ήμ΄λ‘ ν€λ λ±μ μ΄ν΄λ³΄λ©΄ λ€μκ³Ό κ°λ€.
file λͺ λ Ήμ΄λ‘ νμΌμ μ’ λ₯λ₯Ό νμΈν μ μλ€.
file filename : filename μ μ 보λ₯Ό μΆλ ₯
-i μ΅μ μ μ£Όλ©΄ MIME λ―Έλμ΄ νμ λ¬Έμμ΄λ‘ νμλλ€.
λ κ°λ¨νκ³ ν΅μ¬λ§.. νμΌ μ’ λ₯λ₯Ό λ°λ‘ νμΈν μ μλ€.
μμ νμΌμ binary file μ΄κ³ x-executable νμΌμμ μ μ μλ€.
binary file μ΄λΌ κ·Έλ₯ text editor λ‘λ μ΄ν΄ν μ μλ μ 보λ€μ΄ λμ¬ κ²μ΄λ€.
hexdump νΉμ objdump λ‘ 16μ§μ νΉμ μ΄μ λΈλ¦¬μ΄λ‘ λ²μλ μ½λλ₯Ό λ³Ό μ μλ€.
μΆκ°λ‘, c μ½λ, μ΄μ λΈλ¦¬μ΄, κ·Έλ₯ λΉμ΄μλ νμΌμ μ 보λ λ€μκ³Ό κ°μ΄ μΆλ ₯λλ€.
x-executable νμΌμ λ€μμ λͺ λ Ήμ΄λ‘ μ€νμν¬ μ μλ€.
(λ¨Όμ ν΄λΉ νμΌμ νΌλ―Έμ μ΄ 777μ΄μ΄μΌ νλ€.)
sudo chmod 777 filename : filename μ νΌλ―Έμ μ 777λ‘ λ³κ²½
(νΉμ κ·Έλ₯ x λ§ λν΄μ€λ λλ€. chmod +x filename )
./filename : filename μ€ν
( -> μ΄κ² μλ λ : sh filename νΉμ head -5 filename )
objdump : νλ©΄μ object file μ μ 보λ₯Ό μΆλ ₯ν΄μ£Όλ νλ‘κ·Έλ¨
-0x26(%ebp)
μ€λ₯Ό λ§μΆ°μΌ νλ κ²μμ μ μΆνμλ€.
(gdb) info μμ μ¬λ¬ μ 보λ₯Ό μ»μ μ μλ€.
νμ§λ§ λλ μ¬κΈ°μλ μ μ©ν μ 보λ₯Ό μ»μ§λ λͺ»νλ€..
λ€μ λμμμ,
disassemble funcName νΉμ disass funcName : funcName (ν¨μ) μ μ΄μ λΈλ¦¬ μ½λ μΆλ ₯
break N νΉμ b N : N λ²μ§Έ μ€μ break pointκ·Έλ°λ° μ΄ μ½λλ λ°μ΄λ리 μ½λλΌ κ·Έλ°μ§? break 1 λ§ ν΄λ line 1 μ΄ μλ€κ³ λμ¨λ€. μμΈμ§λ..
κ·Έλ λ€λ©΄ λ°μ΄λ리 μ½λλ₯Ό gdb μμ λλ²κΉ νλ λ°©λ²μ ......
κ·Έλμ μ΄μ λΈλ¦¬ μ½λμμμ μ£Όμλ₯Ό μ°Έμ‘°νμ¬ break point λ₯Ό μ‘μλ€.
break *μ£Όμ : μ£Όμ μ break point
μ€λ¨μ μ κ±Έμ΄λκ³ λ°μ΄λ리 μ½λλ₯Ό 보λ scanf λ‘ μ¬μ©μμκ² μ λ ₯μ λ°κ³ λμ, strcmp λ₯Ό νκΈ° μ λΉκ΅ λμμ push νλ κ²μ λ°κ²¬νμλ€.
μ μ£Όμμ μλ κ°μ΄ 무μμΈμ§λ₯Ό μλ©΄ λ΅μ ꡬν μ μλ€ !! << 0x80485ae
μ΄μ μ΄λ»κ² λ©λͺ¨λ¦¬ μ£Όμμ κ°μ μ‘°μ¬ν μ§λ₯Ό 보면,
x adress : adress μ μ 보 μΆλ ₯
( νΉμ x $register : register κ° κ°μ§κ³ μλ μ£Όμ μ 보 (?) )
μ¬κΈ°μ νμμ λ°λΌ μ μ©ν μ΅μ λ€μ μ€ μ μλ€.
x/format adress : adress λ₯Ό format νμμΌλ‘ μΆλ ₯
x Hexadecimal format o Octal format u Unsigned decimal format t Binary format d Decimal format s string i CPU instruction Nx examine N words form stack string λͺ λ Ήμ΄λ‘ μ μ£Όμ (0x80485ae) μ μλ κ°μ μ΄ν΄λ³΄κΈ°λ‘ νλ€.
κ²°κ³Όλ..
yes!! λ₯Ό μ λ ₯ν΄μΌμ§ oh great!! κ° μΆλ ₯λ¨μ μμλ΄μλ€ !!
λ€λ₯Έ μ΅μ λ€λ ν λ² ν΄λ³΄λ©΄ λ€μκ³Ό κ°λ€.
(0x79 λ y , 0x65 λ e)
λ, eax μ μ μ₯λ, λ΄κ° μ λ ₯ν λ¬Έμμ΄μ ν λ² λ³΄λ©΄ λ€μκ³Ό κ°λ€.
breakpoint λ‘ λ©μΆ κ²μ΄λΌ
gdb λͺ λ Ήμ΄λ‘ step (λ€μμΌλ‘ λμ΄κ°) νκ³ continue λ₯Ό νλ μμλ "oh no... :(" κ° μΆλ ₯λ¨μ νμΈνμλ€.
breakpoint μλμ΄λ 0x80485ae μ μ μ₯λ κ°μ μ μ μμ§λ§, (λ©λͺ¨λ¦¬μ μ μ₯λμ΄ μμΌλ ~)
eax μ μ μ₯λμλ μ 보λ€μ νμΈν μ μλ€λ κ²μ ν λ² νμΈν΄ 보μλ€.
λ§μΌ λ΄κ° μμμΌ νλ μ λ³΄κ° νλ‘κ·Έλ¨μ΄ λμκ°λ λμ λ°λκ³ μμ΄μ§λ μ 보λΌλ©΄ break point λ₯Ό μ μ‘μμΌ νλ€!
break point λ₯Ό μμ νλ €λ©΄ break point λ²νΈλ₯Ό μ λ ₯νλ©΄ λλ€.
(μ΄λ€ λΌμΈμ break point μμ λ± λ€λ₯Έ λ°©λ²λ λ§λ€.)
info b(reak) : break point 리μ€νΈ μΆλ ₯
d N : N λ²μ§Έ break point μμ
d : λͺ¨λ break point μμ
break point λ μμ λμ΄λ λλ²λ§μ μ§μλλ€.
1λ² break point κ° μμ λμμ§λ§ λ€μμ break point λ 2λ²μμ μ μ μλ€.
μ΄μ λͺ¨λ break point λ₯Ό μμ νκ³ , μ°Ύμ λ΅μΌλ‘ νλ‘κ·Έλ¨μ λλ € λ³΄κ² λ€.
μ±κ³΅!
μ°Έκ³ )
(λλ²κΉ μμ) i r : λ μ§μ€ν° μ λ³΄λ€ μΆλ ₯
+)
μ λ§ μ μ©νκ² μ°Έκ³ ν https://hacksland.net/debugging-binaries-with-gdb/
μ’μ μ 보λ€μ΄ λ§λ€.!
'SECURITY > REVERSING' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
λμ€μμ λΈλ¬ :: IDA, x64dbg (0) 2020.07.24 PE νμΌμ 리λ²μ± λꡬ :: PE Viewer, exeinfo PE (0) 2020.07.24 리λ²μ€ μμ§λμ΄λ§ μ΄λ (0) 2020.07.20 μ»΄νμΌ κ³Όμ (CμΈμ΄) : μ μ²λ¦¬, μ»΄νμΌ, μ΄μ λΈ, λ§ν¬ (0) 2020.07.20 λ°μ΄λ리 νμΌ, νμΌ μκ·Έλμ², PE μ ELF νμ (0) 2020.07.19