Filtro Anti- BatchInyection

Iniciado por leogtz, 4 Abril 2009, 09:54 AM

0 Miembros y 1 Visitante están viendo este tema.

0x0309

simplemente es para dejar claro la forma de utilizar tu código, ya que no es un filtro propiamente tal, sino una forma de tratar a las variables para que su contenido no se ejecute.


M a t t

@ Leo Gutierrez



Teclee su nombre : ! Matt !
Has escrito :
Variable asignada %algo% :



¿Se podría solucionar?

@ 0x0309

Muy interesante la función Clean.

leogtz

Cita de: M a t t en  5 Abril 2009, 12:27 PM
@ Leo Gutierrez



Teclee su nombre : ! Matt !
Has escrito :
Variable asignada %algo% :



¿Se podría solucionar?

@ 0x0309

Muy interesante la función Clean.

No me había puesto con el código, hoy lo hice, y si, si se puede solucionar:

Teclee su nombre : ! Matt !
Has escrito : ! Matt !
Variable asignada %algo% = ! Matt !
Teclee su nombre :


Código:
Código (dos) [Seleccionar]

@echo off
setlocal enabledelayedexpansion
:code
set "name="
set /p "name=Teclee su nombre : "
if not defined name (goto:code)
for /f "tokens=1* delims==" %%l in ('set name ^| findstr /r /i "^Name="') do (
endlocal
echo.Has escrito : %%m
set "algo=%%m"
goto :_123456789:
)
:_123456789:
setlocal enabledelayedexpansion
echo Variable asignada %%algo%% = !algo!
goto:code


Salida:
Teclee su nombre : &cm
Has escrito : &cm
Variable asignada %algo% = &cm
Teclee su nombre :
Teclee su nombre : &cmd
Has escrito : &cmd
Variable asignada %algo% = &cmd
Teclee su nombre : &echo on
Has escrito : &echo on
Variable asignada %algo% = &echo on
Teclee su nombre : < > cmd
Has escrito : < > cmd
Variable asignada %algo% = < > cmd
Teclee su nombre : |calc
Has escrito : |calc
Variable asignada %algo% = |calc
Teclee su nombre : %%
Has escrito : %%
Variable asignada %algo% = %%
Teclee su nombre : %leo%
Has escrito : %leo%
Variable asignada %algo% = %leo%
Teclee su nombre : %random%
Has escrito : %random%
Variable asignada %algo% = %random%
Teclee su nombre : &goto:Eof
Has escrito : &goto:Eof
Variable asignada %algo% = &goto:Eof
Teclee su nombre : &goto:eof^
Has escrito : &goto:eof^
Variable asignada %algo% = &goto:eof^
Teclee su nombre : %homepath%
Has escrito : %homepath%
Variable asignada %algo% = %homepath%
Teclee su nombre :


Saludos.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

leogtz

#14
Por fin, volví a hacer el código desde 0, aqui esta la versión final:
Código (dos) [Seleccionar]
@echo off
copy /y nul+nul "char.txt" > nul 2>&1
for /f "tokens=1" %%_ in (char.txt) do set "char=%%_"
:code
set /p "name=Name : "
if not defined name (goto:code)
set "name=%char%%name%"
for /f "tokens=1* delims=%char%" %%a in ('set name ^| findstr /r /i "^Name"') do (
echo Has escrito : %%b
set "algo=%%b"
)
setlocal enabledelayedexpansion
echo Variable asignada %%algo%% = {!algo!}
pause>nul
exit /b 0


Salida:

C:\>este
Name : &cmd
Has escrito : &cmd
Variable asignada %algo% = {&cmd}

C:\>este
Name : ! leo !
Has escrito : ! leo !
Variable asignada %algo% = {! leo !}

C:\>este
Name : !!
Has escrito : !!
Variable asignada %algo% = {!!}

C:\>este
Name : &&
Has escrito : &&
Variable asignada %algo% = {&&}

C:\>este
Name : ||
Has escrito : ||
Variable asignada %algo% = {||}

C:\>este
Name : |calc
Has escrito : |calc
Variable asignada %algo% = {|calc}

C:\>este
Name : <
Has escrito : <
Variable asignada %algo% = {<}

C:\>este
Name : > leo.txt
Has escrito : > leo.txt
Variable asignada %algo% = {> leo.txt}

C:\>este
Name : %homepath%
Has escrito : %homepath%
Variable asignada %algo% = {%homepath%}

C:\>este
Name : &goto:eof
Has escrito : &goto:eof
Variable asignada %algo% = {&goto:eof}

C:\>^goto:eof

C:\>este
Name : ^^
Has escrito : ^^
Variable asignada %algo% = {^^}

C:\>


Name : |!""'\<<>><>&cmd&calc|find /i "lkasd"
Has escrito : |!""'\<<>><>&cmd&calc|find /i "lkasd"
Variable asignada %algo% = {|!""'\<<>><>&cmd&calc|find /i "lkasd"}

Cualquier error, haganlo saber.

Saludos.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com