找回密码
 开放注册

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

搜索
查看: 697|回复: 0

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

[复制链接]

633

主题

3624

回帖

9063

牛毛

论坛管理员

堕落天使

积分
11301
QQ
发表于 2008-10-30 21:14:26 | 显示全部楼层 |阅读模式
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:\\windows\\system32\\cmd.exe goto ok\"试下,溢出成功!

第三节原理篇)
既然知道了方法,那么就开始构建特殊代码,把a=\"exist c:\\windows\\system32\\cmd.exe goto ok\"代进去看看,命令变成\"if a=\"exist c:\\windows\\system32\\cmd.exe goto ok\"==hackerrose goto ok\"可以看到判断的过程被我们修改成判断文件的过程,因为命令是从左向右执行的,所以当命另执行到\"cmd.exe goto ok\"这里时就跳到ok标记去了而后边的命令由于执行指针已经跳走了,所以被\"抛弃\"了...达到了我们溢出的目的.其实\"exist c:\\windows\\system32\\cmd.exe goto ok\"的后边不一定跟\"goto ok\"可以跟任意系统命令,比如:当a=\"exist c:\\windows\\system32\\cmd.exe start http://blog.hackerrose.cn \"(注意后边有个空格),代进去试试,怎么样?我的Blog成功的弹了出来!

第四节深入篇)
第一种溢出代码试验成功了,但是似乎太长了.我们来看看这跳溢出代码:\"exist c:\\windows\\system32\\cmd.exe goto ok\",能不能缩短一点?替换\"c:\\windows\\system32\\cmd.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_MACHINE\\SOFTWARE\\microsoft\\CoMMand processor\\\" /v AutoRun /f”,你丫的密码就没啦,看你丫的还装逼不!

其实还有很多利用之处,大家自己开发利用.
多多研究,你就会发现,还有很多命令可以溢出的哦!
您需要登录后才可以回帖 登录 | 开放注册

本版积分规则

帮助|Archiver|小黑屋|通信管理局专项备案号:[2008]238号|NB5社区 ( 皖ICP备08004151号;皖公网安备34010402700514号 )

GMT+8, 2025-1-16 14:41 , Processed in 0.121784 second(s), 25 queries , Yac On.

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表