Por eso si dentro de la misma carpeta donde tenga este filtro.bat coloco un archivo llamado FIND.BAT
con el siguiente contenido:
Código:
Código:
@echo off
echo hack | find.exe "crack" >NUL
cuando hago esto:
Código:
for %%a in ("|" "&" "^" ">" "<" "'" "." ";" "," " " "/" "\" "+" "-" "~" "!" ")" "(" "]" "[" "}" "{") do (
set pass|find %%a >NUL && goto warning)
la salida de set pass se la paso a find
cmd.exe encuentra a find.bat que imprime hack y la salida de esa palabra se la da a find.exe buscando la palabra "crack" y como esa palabra no está en la palabra hack retorna que no se encuentra.
Entonces si abro el filtro.bat e ingreso:
}] (cls ) else rem
hago la inyección, pues find (find.bat que llama a find.exe siempre retorna que no hay nada malo)
Dejo la última versión correjida:
Código:
@echo off
::FILTRO ANTI-BATCH-INJECTIONS 3.0
::BY CARLITOS.DLL
set findstr="%WinDir%\system32\findstr.exe"
set find="%WinDir%\system32\find.exe"
:Login
set pass=
set /p pass=Enter password:
if not defined pass (goto Login)
set pass | %find% """" >NUL 2>&1 && goto warning
rem identificamos las comillas
set pass | %find% " " >NUL 2>&1 && goto warning
rem identificamos los espacios
set pass | %findstr% "| & ^ > < # ' ` . ; , / \ + - ~ ! ) ( ] [ } { : ? *" >NUL 2>&1 && goto warning
rem identificamos una serie de caracteres
echo %pass% | find "=" >NUL 2>&1 && goto warning
rem identificamos el caracter =
if not [{entrar}]==[{%pass%}] (goto Login) 2>NUL
if "%errorlevel%"=="9009" (goto warning)
echo Password correcta
pause
goto :eof
:warning
echo Posible intento de batch injection
goto Login