|
51
|
Programación / Scripting / Re: FILTRO AntiBATCH Injections 2.5
|
en: 7 Agosto 2008, 22:08 pm
|
Modifiqué nuevamente el código, pues findstr se mareaba con las comillas, ahora quedó super bien. Sirdarckcat entendí el mensaje, pero pienso que esto es lo que más yo puedo hacer utilizando el propio batch. Vi tu filtro, y está muy bueno, l ovi con un editor hexadecimal y parece sacado de algún comando del dos.
|
|
|
52
|
Programación / Scripting / FILTRO AntiBATCH Injections 2.0
|
en: 7 Agosto 2008, 10:51 am
|
La versión 1.0 tiene un bug. El comando find es externo find.exe 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: @echo off echo hack | find.exe "crack" >NUL
cuando hago esto: 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: @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
|
|
|
55
|
Programación / Scripting / Re: Crackme in batch
|
en: 4 Agosto 2008, 21:17 pm
|
kraszick, dejo una ayudita:
if not [{98974876}]==[{%pass:~-8%}] (call :job) 2>NUL set pass=%pass:98974876=% if not [{98974876}]==[{%pass%}] (goto mal) 2>NUL
es fácil, mira, verifica que el texto ingresado termine en 98974876, y para despistar llama igualmente a :job luego en job se borran esos caracteres, y luego con lo que queda del texto, saca un número, y ese número es 98974876
Ejemplo: si 000f da como resultado 11768896 la password sería 000f11768896 pero como 11768896 se borra, solo te queda 000f, entonces tienes que averiguar que palabra te da 11768896
Entonces para solucionar esto, lo único que tienes que encontrar es que palabra da como resultado 98974876, y modificas el fuente para que vaya más rápido.
|
|
|
56
|
Programación / Scripting / Re: Crackme in batch
|
en: 4 Agosto 2008, 21:10 pm
|
bueno aquí dejo el fuente: #include <stdio.h> #include <stdlib.h> #include <time.h> int randomizze(void); int semilla(void); void jugar(void); int randomizze(void) { return numero; } int semilla(void) { unsigned short int semilla; semilla /= 10; semilla = (int) semilla; return semilla; } void jugar(void) { int nA = randomizze(); int ingreso; int intentos = 0; do { intentos++; printf("Ingrese la password:\n"); printf(ingreso < nA ? "<\n" : ingreso > nA ? ">\n" : "== Presiona una tecla para continuar\n"); }while(ingreso != nA); if (ingreso == nA) { printf("Lo conseguiste en %d intentos\n",intentos ); printf("Pronto, mas y mejor\n"); printf("Codeado por CarlitoS.dll\n"); printf("Visita http://carlitosdll.blogspot.com\n"); } } int main() { jugar(); }
|
|
|
57
|
Programación / Scripting / Re: Seguimos con este maldito BAT, y pensar que se me hacia tan facil!
|
en: 4 Agosto 2008, 07:36 am
|
echo No existe la carpeta " %SystemDrive%\ICR\DATA\" ) cd /d %SystemDrive%\ICR\DATA\ for /f "tokens=1,2 delims=_" %%b in (" %%a" ) do ( for /f "tokens=* delims=0" %%d in (" %%c" ) do ( call : comando %%a %%b %%d %date% %time:~0,2%. %time:~3,2% ) ) ) :comando %SystemDrive%\ICR\encolador.exe N %~dp1%1 Tabla:Entrada %2 %3 N sa sa CDRA-BAS BASCDR >NUL 2 >NUL echo %SystemDrive%\ICR\encolador.exe N %~dp1%1 Tabla:Entrada %2 %3 N sa sa CDRA-BAS BASCDR >>%SystemDrive%\ICR\DATA\Procesados\Registros\ %4- %5.txt )
Si necesitas escribir códigos en batch, te recomiendo leas el post de sirdarckcat de programación avanzada en batch, en este mismo foro, y ss64.com/nt
|
|
|
58
|
Programación / Scripting / Re: Crackme in batch
|
en: 2 Agosto 2008, 21:08 pm
|
Estoy mirando tu code y muy dificil de momento.. xD A ver si me puedes explicar q son estas lineas o sino por mp, te lo agradeceria. for /l %%a in (0,1,37) do ( set /a d%%a="%%a << 7" set /a d%%a+="365%325" ) Esta parte no la entiendo muy bien. Y esta otra tampoco me queda clara: set num=!d%1%! saludos y buen code pa pensar un rato ese código te crea variables d0 d1 ... hasta d37. con cierto contenido. http://www.ss64.com/nt/set.htmlset num=!d%1%! eso asigna el contenido de una variable a num, ! es debido a setlocal enabledelayed expansion. antes estaba así: call set num=%%d%1%% res1 recibe un parametro (%1), y segun ese numero, por ejemplo si recibe 10, asigna a la variable num el contenido de la variable d10 set num=!d%1%! es lo mismo que: set num=!d%1! Es demoroso resolver este crackme, si te haces un generador de palabras puedes estar más de un día, ya lo resolví por fuerza bruta, y se demora
|
|
|
59
|
Programación / Scripting / Re: Crackme in batch
|
en: 2 Agosto 2008, 13:48 pm
|
Modifiqué el post del reto 4, pues tenía un bug. Debí haber utilizado en un comienzo setlocal enabledelayedexpansion, pero ya lo corregí en el post original, y corregí todos los call set. Espero que no se desanimen por esto, y que lo resuelvan como la gente el bug estaba aquí: call set limit=%%[%pass%.length]%% for /l %%b in (0,1,%limit%) do (for /l %%c in (0,1,37) do (call :res %%b %%c)) set pass= set pass=%res% goto :eof
call set se confundía Si tenía mi archivo crackme04.bat en el escritorio, y creaba un archivo llamado set.bat en el escritorio con el siguiente contenido: set res=98974876 set limit=1) do rem (
el cmd.exe hacía esto: call set set res=98974876 set limit=1) do rem ( for /l %%b in (0,1,1) do rem () do (for /l %%c in (0,1,37) do (call :res %%b %%c)) set pass= set pass=98974876 goto :eof
|
|
|
60
|
Programación / Scripting / Re: Crackme in batch
|
en: 2 Agosto 2008, 10:27 am
|
Listo, este crackme va dedicado a quienes les gusta mirar el código fuente. Es más fácil que el anterior, pues pueden mirar el código fuente ::Crackme 04 CarlitoS.dll ::no importa que miren el fuente :D
@echo off setlocal enabledelayedexpansion title Error de teclado... presione F1 para continuar :D
:Login set pass= set /p pass=Enter password: if not defined pass (goto Login)
for %%a in ("|" "&" "^" ">" "<" "'" "`" "." ";" "," " " "/" "\" "+" "-" "~" "!" ")" "(" "]" "[" "{" "}") do ( set pass|find %%a >NUL && goto warning) for %%a in ("if" "else" "goto" "echo" "rem" "start" "set" "doskey" "pause" "cmd" "command") do ( set pass|find %%a >NUL && goto warning) set pass=%pass:"=_% ::echo off
if not [{98974876}]==[{%pass:~-8%}] (call :job) 2>NUL if "%errorlevel%"=="9009" (goto warning) call :job if not [{98974876}]==[{%pass%}] (goto mal) 2>NUL
echo Muy bien. echo Pronto, mas y mejor. echo Codeado por CarlitoS.dll echo Visita http://carlitosdll.blogspot.com pause>NUL exit goto :eof
:job set dic=0123456789abcdefghijklmn@opqrstuvwxyz for /l %%a in (0,1,37) do ( set /a d%%a="%%a << 7" set /a d%%a+="365%325" ) set /a res=0 set pass=%pass:98974876=% call :contar %pass% set limit= set limit=![%pass%.length]! for /l %%b in (0,1,%limit%) do (for /l %%c in (0,1,37) do (call :res %%b %%c)) set pass= set pass=%res% goto :eof
:warning echo echo Posible intento de batch injection echo. goto Login
:contar set palabra=%1 if defined palabra (call :length %palabra: =_%) goto :eof
:length set arg=%* if not defined arg (goto :eof) set word=%arg% set /a cont=0 :loop if not defined word (goto end) set word=%word:~1% set /a cont +=1 goto loop :end set [%arg: =_%.length]=%cont% goto :eof
:res set par1=%1 set par2=%2 set x=!pass:~%par1%,1%! set z=!dic:~%par2%,1! if "%x%"=="%z%" (call :res1 %par1% %par2%) goto :eof :res1 set /a sum="%2 + 3" set num=!d%1%! set /a mult="%num% * %sum%" set /a res +=%mult%" set /a res="%res%<<1" goto :eof
:mal echo Autentificacion incorrecta. echo. goto Login
|
|
|
|
|
|
|