转载于暗组技术论坛
我是第一次写文章,如果写得不好希望大家不要见笑啊!
我这次写的是关于批处的
我上次经常在网上看到一些CMD加密程序,原理大家都知道就是在
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\coomand processor键
下新建一个autorun键字符串值,当你运行CMD时就会自动运行这个
键值所指的程序,
小谈批处中的注入与防注
。大部分CMD加密程序就是用这个方法指向一个批处文件来加密CMD的,不过大部分程序都没有意识到其实批处也是可以
注入的!
下面我来分析一段常见的CMD加密的批处代码:
(以下密码都为5566)
@echo off
:login
cls
set /p mima=请输入CMD密码:
if %mima%==5566 (goto begin) else (goto login)
:begin
cls
把上面的代码保存为 5566.bat 在把autorun指向它,当我们运行CMD
的时候就会提示输入密码,这时我们输入5566就会来到:begin,输入
别的就会跳到:login
这里是通过IF来判断pwd是不是等于5566的,看我来饶过去把!!
我们运行CMD后输入:not 123
语句就变成 如下:
if not 123==5566 (goto begin) else (goto login)
由于123不等于5566为真 所以就执行了(goto begin)
那有人会说把IF代码写成:
if "%mima%"=="5566" (goto begin) else (goto login)。
我们在密码里面输入" luanxie 试试,结果如下:
此时不应有 sdf"=="5566" (goto begin) else (goto login)。
怎么样?连密码都暴出来了,哈哈
那么语句为下呢?
if "5566"=="%mima%" (goto begin) else (goto login)
还是" luanxie搞定,只是不能暴密码,不过已经能用CMD了
总结有一下,我们要饶过CMD密码就只要制造出特殊的"密码"来让语句
形成逻辑错误而错误跳转或崩溃(后来我发现一个 " 能解决所有问题)
关于防其实我也没什么好的方法,本人技术有限!呵呵
我自己就写了一段相对安全点的代码:
@echo off
:login
cls
set /p mima=请输入CMD密码:
if ^|aaa==^%mima%aaa (set mima=1)
if ^
if ^>aaa==^%mima%aaa (set mima=1)
if ^&aaa==^%mima%aaa (set mima=1)
if ^^aaa==^%mima%aaa (set mima=1)
if ^"==^%mima% (set mima=1)
if 5566==%mima% (goto begin) else (goto login)
exit
:begin
cls
为什么说相对安全,就是因为要注入它一个"是不行的,但是还是能注
入的不过要 ^" or ^& or &" 组合起来才能注入,这样一般不容易想
到(看过此文后例外,呵呵)
如果你有心情就按第五行过滤吧!(不过是过滤并不完的,哈哈)
老是把它的程序搞出错是不是很无聊呢?那么你看这个!
time% (dir) else (pause)&echo 123
是不是把goto :begin暴露出来了
我们知道跳转的地方了几好办了
time% (dir) else (goto begin)&echo 123
程序没出错我也不知道密码但是我还是进来了,哈哈!
还真是漏洞百出啊!
我就说奇怪了,难道就真的没有稍微安全一点的代码吗?
终于我费尽心思终于写出了我只找到一个饶过方法(应该不止一个方
法)的代码:
@echo off
:login
mkdir C:\CMD密码\
cls
set /p mima=请输入CMD密码:
echo 5566>>"C:\CMD密码\a%mima%a.txt"
if exist C:\CMD密码\a5566a.txt (goto begin) else ("del C:\CMD密码\*.txt")&(goto login)
exit
:begin
echo chenggong
del "C:\CMD密码\*.txt"
cls
至于这个怎么饶过我先卖个小关子大家自己想