Moduli alternativi per caratteri speciali nel terminale

1

Stavo risolvendo un problema su un popolare sito di hacking per divertimento, quando ho avuto un'idea seguente:

È possibile rappresentare - per esempio un '/' (solo la barra) nel terminale (linux) in un altro modo - per esempio esadecimale:

Esempio:

cd /etc/

come

cd %2F etc %2F

questo è in qualche modo possibile? Anche se in questo esempio sto usando di nuovo un carattere speciale (%).

    
posta OcK 03.09.2018 - 00:59
fonte

1 risposta

2

Sì, questo è possibile. Nella maggior parte delle shell, ci sono molti modi per farlo. Funzionerà qualsiasi modo per codificare e decodificare qualcosa in una subshell in ASCII. Alcuni esempi per bash:

cd $(printf '\x2fetc')
cd $(base64 -d <<< 'L2V0Ywo=')
cd $(awk 'BEGIN{printf("%cetc",47);}')
cd $(cut -b1 <<< $HOME)etc
eval $(base64 -d <<< 'Y2QgL2V0Ywo=')

Prima viene valutato tutto nella subshell, quindi diventano tutti:

cd /etc

Ci sono innumerevoli altri modi per farlo, molti molto più offuscati di qualsiasi cosa ho messo qui. Ma se tutto ciò che si vuole fare è cambiare directory senza usare / , ognuna di queste dovrebbe essere sufficiente. Nota che alcuni di questi usano bash-isms e non sono perfettamente conformi a POSIX.

    
risposta data 03.09.2018 - 01:58
fonte

Leggi altre domande sui tag