mirror of
https://github.com/sqlmapproject/sqlmap.git
synced 2026-10-12 02:22:55 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
71e18a98d2 | ||
|
|
466a80b22b | ||
|
|
c25344b799 | ||
|
|
e7fbc2b9db | ||
|
|
b0ac34caf1 | ||
|
|
0a4cdd7fb3 | ||
|
|
09c364d58f | ||
|
|
8f9eeb5d54 | ||
|
|
1de66fd7e1 | ||
|
|
d4f479e7a8 | ||
|
|
b8402744fc | ||
|
|
8ad5d8347f | ||
|
|
07d0a60e6c |
@@ -52,6 +52,7 @@ Links
|
||||
Translations
|
||||
----
|
||||
|
||||
* [Arabic](https://github.com/sqlmapproject/sqlmap/blob/master/doc/translations/README-ar-AR.md)
|
||||
* [Bulgarian](https://github.com/sqlmapproject/sqlmap/blob/master/doc/translations/README-bg-BG.md)
|
||||
* [Chinese](https://github.com/sqlmapproject/sqlmap/blob/master/doc/translations/README-zh-CN.md)
|
||||
* [Croatian](https://github.com/sqlmapproject/sqlmap/blob/master/doc/translations/README-hr-HR.md)
|
||||
|
||||
+18
-17
@@ -88,6 +88,7 @@ abb6261b1c531ad2ee3ada8184c76bcdc38732558d11a8e519f36fcc95325f7e doc/AUTHORS
|
||||
2a0322f121cbda30336ab58382e9860fea8ab28ff4726f6f8abf143ce1657abe doc/CHANGELOG.md
|
||||
2df1f15110f74ce4e52f0e7e4a605e6c7e08fbda243e444f9b60e26dfc5cf09d doc/THANKS.md
|
||||
f939c6341e3ab16b0bb9d597e4b13856c7d922be27fd8dba3aa976b347771f16 doc/THIRD-PARTY.md
|
||||
3a8d6530c3aa16938078ee5f0e25178e8ce92758d3bad5809f800aded24c9633 doc/translations/README-ar-AR.md
|
||||
d739d4ced220b342316f5814216bdb1cb85609cd5ebb89e606478ac43301009e doc/translations/README-bg-BG.md
|
||||
6882f232e5c02d9feb7d4447e0501e4e27be453134fb32119a228686b46492a5 doc/translations/README-ckb-KU.md
|
||||
9bed1c72ffd6b25eaf0ff66ac9eefaa4efc2f5e168f51cf056b0daf3e92a3db2 doc/translations/README-de-DE.md
|
||||
@@ -160,18 +161,18 @@ eed1db5da17eca4c65a8f999166e2246eef84397687ae820bbe4984ef65a09df extra/vulnserv
|
||||
96a39b4e3a9178e4e8285d5acd00115460cc1098ef430ab7573fc8194368da5c lib/controller/action.py
|
||||
fad6640f60eac8ad1b65895cbccc39154864843a2a0b0f2ac596d3227edcd4f6 lib/controller/checks.py
|
||||
34e9cf166e21ce991b61ca7695c43c892e8425f7e1228daec8cadd38f786acc6 lib/controller/controller.py
|
||||
1947e6c69fbc2bdce91d2836e5c9c9535e397e9271ae4b4ef922f7a01857df5e lib/controller/handler.py
|
||||
49bcd74281297c79a6ae5d4b0d1479ddace4476fddaf4383ca682a6977b553e3 lib/controller/handler.py
|
||||
4608f21a4333c162ab3c266c903fda4793cc5834de30d06affe9b7566dd09811 lib/controller/__init__.py
|
||||
216c9399853b7454d36dcb552baf9f1169ec7942897ddc46504684325cb6ce00 lib/core/agent.py
|
||||
440cbab6161f466158c63f0ee97873254655f670ca990fa26bdd0a6e54c42c2a lib/core/bigarray.py
|
||||
8920eb3115ecd25933084af986f453362aa55a4bd15bfb9e75673239bd206acc lib/core/common.py
|
||||
0c10a46c77d5366bc535a148c097d267f28aa82d981a328e76be66e11982a562 lib/core/bigarray.py
|
||||
e3b8f8cf9607d12f3de5e6bcd5031f21f50d4b331844b8e921493dfde2efe0f7 lib/core/common.py
|
||||
d53a8aecab8af8b8da4dc1c74d868f70a38770d34b1fa50cae4532cae7ce1c87 lib/core/compat.py
|
||||
ebe518089733722879f5a13e73020ebe55d46fb7410cacf292ca4ea1d9d1c56a lib/core/convert.py
|
||||
ae500647c4074681749735a4f3b17b7eca44868dd3f39f9cab0a575888ba04a1 lib/core/data.py
|
||||
a051955f483b281344ae16ecc1d26f77ea915db0a77a7b62c1a5b80feb2d4d87 lib/core/datatype.py
|
||||
1e4e4cb64c0102a6ef07813c5a6b6c74d50f27d1a084f47067d01e382cf32190 lib/core/decorators.py
|
||||
d573a37bb00c8b65f75b275aa92549683180fb209b75fd0ff3870e3848939900 lib/core/defaults.py
|
||||
1ad21a1e631f26b2ecc9c73f93218e9765de8d1a9dcc6d3c3ffe9f78ab8446d8 lib/core/dicts.py
|
||||
ce6e1c1766acd95168f7708ddcacaa4a586c21ffc9e92024c4715611c802b60c lib/core/dicts.py
|
||||
c9d1f64648062d7962caf02c4e2e7d84e8feb2a14451146f627112aae889afcd lib/core/dump.py
|
||||
9187819a6fd55f4b9a64c6df1a9b4094718d453906fc6eeda541c8880b3b62c4 lib/core/enums.py
|
||||
00a9b29caa81fe4a5ef145202f9c92e6081f90b2a85cd76c878d520d900ad856 lib/core/exception.py
|
||||
@@ -179,14 +180,14 @@ c9d1f64648062d7962caf02c4e2e7d84e8feb2a14451146f627112aae889afcd lib/core/dump.
|
||||
4608f21a4333c162ab3c266c903fda4793cc5834de30d06affe9b7566dd09811 lib/core/__init__.py
|
||||
3d308440fb01d04b5d363bfbe0f337756b098532e5bb7a1c91d5213157ec2c35 lib/core/log.py
|
||||
2a06dc9b5c17a1efdcdb903545729809399f1ee96f7352cc19b9aaa227394ff3 lib/core/optiondict.py
|
||||
16a8a7be0d34a2ba77690375c03a5d2c905b752ab3f080c39fdce5f69c3df8ce lib/core/option.py
|
||||
97378f241005dc1b8b4c0a67b9b39af76a9735d2bb0a49e8f2ef59c0d115d93e lib/core/option.py
|
||||
866e93c93541498ecce70125037bdd376d78188e481d225f81843f21f4797d8c lib/core/patch.py
|
||||
85f10c6195a3a675892d914328173a6fb6a8393120417a2f10071c6e77bfa47d lib/core/profiling.py
|
||||
c4bfb493a03caf84dd362aec7c248097841de804b7413d0e1ecb8a90c8550bc0 lib/core/readlineng.py
|
||||
d1bd70c1a55858495c727fbec91e30af267459c8f64d50fabf9e4ee2c007e920 lib/core/replication.py
|
||||
1d0f80b0193ac5204527bfab4bde1a7aee0f693fd008e86b4b29f606d1ef94f3 lib/core/revision.py
|
||||
d2eb8e4b05ac93551272b3d4abfaf5b9f2d3ac92499a7704c16ed0b4f200db38 lib/core/session.py
|
||||
4cd6715f3779c0ab94939d7eb4435de6eb3620beeddf5c889b0ecd72872de9ce lib/core/settings.py
|
||||
bf443de2412ceec81399f93923bdbc1575653122edc12c300737466663c491b5 lib/core/settings.py
|
||||
1c5eab9494eb969bc9ce118a2ea6954690c6851cbe54c18373c723b99734bf09 lib/core/shell.py
|
||||
4eea6dcf023e41e3c64b210cb5c2efc7ca893b727f5e49d9c924f076bb224053 lib/core/subprocessng.py
|
||||
cdd352e1331c6b535e780f6edea79465cb55af53aa2114dcea0e8bf382e56d1a lib/core/target.py
|
||||
@@ -197,7 +198,7 @@ f7245b99c17ef88cd9a626ca09c0882a5e172bb10a38a5dec9d08da6c8e2d076 lib/core/updat
|
||||
cba481f8c79f4a75bd147b9eb5a1e6e61d70422fceadd12494b1dbaa4f1d27f4 lib/core/wordlist.py
|
||||
4608f21a4333c162ab3c266c903fda4793cc5834de30d06affe9b7566dd09811 lib/__init__.py
|
||||
7d1d3e07a1f088428d155c0e1b28e67ecbf5f62775bdeeeb11b4388369dce0f7 lib/parse/banner.py
|
||||
e49fb4fea83c305ebdbb8008c26118063da2134bdefe05f73dee90532c6d0dd3 lib/parse/cmdline.py
|
||||
d361e472853d18f5bf760efc8fb63285354971f77ce97518b8bb17be63e534f1 lib/parse/cmdline.py
|
||||
f1ad73b6368730b8b8bc2e28b3305445d2b954041717619bede421ccc4381625 lib/parse/configfile.py
|
||||
a96b7093f30b3bf774f5cc7a622867472d64a2ae8b374b43786d155cf6203093 lib/parse/handler.py
|
||||
cfd4857ce17e0a2da312c18dcff28aefaa411f419b4e383b202601c42de40eec lib/parse/headers.py
|
||||
@@ -209,7 +210,7 @@ d7082e4a5937f65cbb4862701bad7d4fbc096a826621ba7eab92e52e48ebd6d7 lib/parse/site
|
||||
18cb22d4dabdcc8e3381baf66edd52e74ad2d2067d0116e134a94ffc950c054e lib/request/basic.py
|
||||
fdb4a9f2ca9d01480c3eb115f6fdf8d89f8ff0506c56a223421b395481527670 lib/request/chunkedhandler.py
|
||||
bb8a06257d170b268c66dcbd3c0fbe013de52eed1e63bb68caa112af5b9f8ca9 lib/request/comparison.py
|
||||
26fda3422995eae2e02313c016d8a5e0dc8235e7406fe094ebdb149742859b0e lib/request/connect.py
|
||||
cfa172dbc459a3250db7fbaadb62b282b62d56b4f290c585d3abec01597fcd40 lib/request/connect.py
|
||||
a890be5dee3fb4f5cb8b5f35984017a5c172d587722cf0c690bf50e338deebfa lib/request/direct.py
|
||||
a53fa3513431330ce1725a90e7e3d20f223e14605d699e1f66b41625f04439c7 lib/request/dns.py
|
||||
685b3e9855c65af3f4516b4cac1d2591bd9d653246d02b08bffa94b706115fa9 lib/request/httpshandler.py
|
||||
@@ -242,7 +243,7 @@ dca6a14d7e30f8d320cc972620402798b493528a0ad7bd98a7f38327cea04e20 lib/techniques
|
||||
e41d96b1520e30bd4ce13adfcf52e11d3a5ea75c0b2d7612958d0054be889763 lib/utils/api.py
|
||||
af67d25e8c16b429a5b471d3c629dc1da262262320bf7cd68465d151c02def16 lib/utils/brute.py
|
||||
828940a8eefda29c9eb271c21f29e2c4d1d428ccf0dcc6380e7ee6740300ec55 lib/utils/crawler.py
|
||||
bfb4ea118e881d60c42552d883940ca5cca4e2a406686a2836e0739ed863a6a4 lib/utils/deps.py
|
||||
56b93ba38f127929346f54aa75af0db5f46f9502b16acfe0d674a209de6cad2d lib/utils/deps.py
|
||||
3aca7632d53ab2569ddef876a1b90f244640a53e19b304c77745f8ddb15e6437 lib/utils/getch.py
|
||||
e67aa754b7eeb6ec233c27f7d515e10b6607448056a1daba577936d765551636 lib/utils/har.py
|
||||
00135cf61f1cfe79d7be14c526f84a841ad22e736db04e4fe087baeb4c22dc0d lib/utils/hashdb.py
|
||||
@@ -263,7 +264,7 @@ bd4975ff9cbc0745d341e6c884e6a11b07b0a414105cc899e950686d2c1f88ba lib/utils/xran
|
||||
4533aeb5b4fefb5db485a5976102b0449cc712a82d44f9630cf86150a7b3df55 plugins/dbms/access/connector.py
|
||||
acd26b5dd9dfc0fb83c650c88a02184a0f673b1698520c15cd4ce5c29a10ea5e plugins/dbms/access/enumeration.py
|
||||
6ae41f03920129ada7c24658673ffb3c1ce9c4d893a310b0fcdd069782d89495 plugins/dbms/access/filesystem.py
|
||||
9cf2047f6545670bc8d504bcc06a76e0d9eca2453cafd2b071d3d11baaca694e plugins/dbms/access/fingerprint.py
|
||||
99fb8acf31529008c2aa30beaa19e0c2c04f74212b96d25adc3b4bf9b110d07e plugins/dbms/access/fingerprint.py
|
||||
4ee0497890c6830113e36db873c97048f9aa157110029bb888ae59b949a4caf2 plugins/dbms/access/__init__.py
|
||||
9be52ff94cdecad994f83c2b7fbeb8178d77f081928e1720d82cddb524d256c6 plugins/dbms/access/syntax.py
|
||||
1e2a87087dbb9f5b9e8690c283abde4c76da3285200914009187d0a957aa33b9 plugins/dbms/access/takeover.py
|
||||
@@ -376,7 +377,7 @@ f150ce95097d189d930032d5b2e63b166bcf9e438f725aed90c36e5c393793ec plugins/dbms/m
|
||||
237615b40daa249a74898cfea05543a200e6ec668076bb9ee57502e1cee2b751 plugins/dbms/mimersql/connector.py
|
||||
9bc55b72f833a71b978a64def32f9bb949c84cf059e953a7ba7f83755714bee1 plugins/dbms/mimersql/enumeration.py
|
||||
15f4f1d4be6cff468636557c2f8c0ac9988f6b639db20149ab3ea1c2bc5aedbe plugins/dbms/mimersql/filesystem.py
|
||||
8e292bf4b249e2cf2b9dce43e07365a3b0aa7016d094de0491d5e507a2a7c1dc plugins/dbms/mimersql/fingerprint.py
|
||||
02ad6eb9837e7a455991f8061287e3ef3e0346d7d4e01005f2dd649dd3c2fb2c plugins/dbms/mimersql/fingerprint.py
|
||||
e70a35787a176b388dae2b8124433a11ac60e4b669fd18ebf81665a45233363a plugins/dbms/mimersql/__init__.py
|
||||
bc7e155bd1cc573fd4144ba98cce34f41bae489208acd3db15d1c36115bf23f8 plugins/dbms/mimersql/syntax.py
|
||||
2dea7308e4ddd3083c7b2e9db210b7cc00f27f55692b2a65affdf5344e2838df plugins/dbms/mimersql/takeover.py
|
||||
@@ -401,14 +402,14 @@ b7aa7bf8b1f9ba38597bae7fc8bf436b111eeb5ee6a4ad0a977e56dca88a4afc plugins/dbms/m
|
||||
88daad9cf2f62757949cb27128170f33268059e2f0a05d3bd9f75417b99149de plugins/dbms/mysql/__init__.py
|
||||
20108fe32ae3025036aa02b4702c4eda81db01c04a2e0e2e4494d8f1b1717eca plugins/dbms/mysql/syntax.py
|
||||
91f34b67fe3ad5bfa6eae5452a007f97f78b7af000457e9d1c75f4d0207f3d39 plugins/dbms/mysql/takeover.py
|
||||
125966162396ef4084d70fac1c03e25959a6ccebacd8274bda69b7bebf82b9d5 plugins/dbms/oracle/connector.py
|
||||
4b04646298dfe366c401001ab77893bcd342d34211aec1164c6c92757a66f5f4 plugins/dbms/oracle/connector.py
|
||||
8866391a951e577d2b38b58b970774d38fb09f930fa4f6d27f41af40c06987c1 plugins/dbms/oracle/enumeration.py
|
||||
5ca9f30cd44d63e2a06528da15643621350d44dc6be784bf134653a20b51efef plugins/dbms/oracle/filesystem.py
|
||||
b1c939e3728fe4a739de474edb88583b7e16297713147ca2ea64cac8edf2bdf5 plugins/dbms/oracle/fingerprint.py
|
||||
53fe7fc72776d93be72454110734673939da4c59fecdf17bbbc8de9cdc52c220 plugins/dbms/oracle/__init__.py
|
||||
39611d712c13e4eb283b65c19de822d5afa4a3c08f12998dd1398725caf48940 plugins/dbms/oracle/syntax.py
|
||||
cd3590fbb4d500ed2f2434cf218a4198febb933793b7a98e3bb58126839b06f1 plugins/dbms/oracle/takeover.py
|
||||
9ca6fccb27cac0037103db6f05b561039c9f6bd280ab2fb87b76e4d52142c335 plugins/dbms/postgresql/connector.py
|
||||
ec17431637c2329b42ce0d0dd932bbb02aa93d5388a4e1c6f4e0c1b59f27ce00 plugins/dbms/postgresql/connector.py
|
||||
3ebc81646f196624ec004a77656767e4850f2f113b696f7c86b5ca4daf0ee675 plugins/dbms/postgresql/enumeration.py
|
||||
760285195bdfd91777066bf2751c897f87fab1ada24f729556b122db937c7f88 plugins/dbms/postgresql/filesystem.py
|
||||
42fbf2707e9f67554571e63ef2d204d28303e4d25eb7781ec800084fb53324ce plugins/dbms/postgresql/fingerprint.py
|
||||
@@ -432,7 +433,7 @@ e5b680e2668313a8b3d4567e2394b557a7db407c4f978f63a54c41b8d786d4b1 plugins/dbms/r
|
||||
3038aa55150688855fb4ea5017fe3405a414f2cf4a7630764b482d02f7442b25 plugins/dbms/sqlite/connector.py
|
||||
6736ff9995db5675bb82bf2014117bdc5ce641f119b79763edb7aa983443ec87 plugins/dbms/sqlite/enumeration.py
|
||||
e75cf970d5d76bc364d2fd02eab4086be6263d9c71fa5b44449bada158cd87d3 plugins/dbms/sqlite/filesystem.py
|
||||
d9a17f49a99b715187e12635a202c5a487e71ef2e6877116d5bc9eb4a0d28eee plugins/dbms/sqlite/fingerprint.py
|
||||
c952f1848b7b9bef7c9cd40460849e805d19646e859ad4dac6ebb9f45573447d plugins/dbms/sqlite/fingerprint.py
|
||||
9b00c84f7b25b488a4cbb45fe9571e6661206771f1968f68badc0c670f042a0b plugins/dbms/sqlite/__init__.py
|
||||
5457814ccacf9ca75ae6c39f1e615dd1ca63a8a2f21311f549f8a1df02d09634 plugins/dbms/sqlite/syntax.py
|
||||
3aeb29f4486bd43b34afe58f581cb19a9932cabc87888416d2e383737b690072 plugins/dbms/sqlite/takeover.py
|
||||
@@ -471,11 +472,11 @@ ab661b605012168d72f84a92ff7e233542df3825c66714c99073e56acea37e2e plugins/generi
|
||||
7bb6403d83cc9fd880180e3ad36dca0cc8268f05f9d7e6f6dba6d405eea48c3a plugins/generic/takeover.py
|
||||
115ee30c77698bb041351686a3f191a3aa247adb2e0da9844f1ad048d0e002cd plugins/generic/users.py
|
||||
4608f21a4333c162ab3c266c903fda4793cc5834de30d06affe9b7566dd09811 plugins/__init__.py
|
||||
90530922cac9747a5c7cf8afcc86a4854ee5a1f38ea0381a62d41fc74afe549a README.md
|
||||
baaf7a29a1fe07e7cecc7fb1b1f6a6f327b12154b8d5619e9808b2cf43ad2198 README.md
|
||||
535ab6ac8b8441a3758cee86df3e68abec8b43eee54e32777967252057915acc sqlmapapi.py
|
||||
168309215af7dd5b0b71070e1770e72f1cbb29a3d8025143fb8aa0b88cd56b62 sqlmapapi.yaml
|
||||
4121621b1accd6099eed095e9aa48d6db6a4fdfa3bbc5eb569d54c050132cbbf sqlmap.conf
|
||||
515893a1105f06afb6e91d7a32d89ed350828244f2a4c638d36240b284a61363 sqlmap.py
|
||||
c43cc0dd5b4026083ad420c04705a031504aa503cc99ab2236010c4cbd472d39 sqlmap.conf
|
||||
e29538ddcb7bb80fc3b07b3ccc23e46df1faf9ff4b6d7db0558a9a9587a6b8c6 sqlmap.py
|
||||
82caac95182ac5cae02eb7d8a2dc07e71389aeae6b838d3d3f402c9597eb086a tamper/0eunion.py
|
||||
bc8f5e638578919e4e75a5b01a84b47456bac0fd540e600975a52408a3433460 tamper/apostrophemask.py
|
||||
c9c3d71f11de0140906d7b4f24fadb9926dc8eaf5adab864f8106275f05526ce tamper/apostrophenullencode.py
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
# sqlmap 
|
||||
|
||||
[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
|
||||
|
||||
<div dir=rtl>
|
||||
|
||||
برنامج sqlmap هو أداة اختبار اختراق مفتوحة المصدر تقوم بأتمتة عملية اكتشاف واستغلال ثغرات حقن SQL والسيطرة على خوادم قواعد البيانات. يأتي مع محرك كشف قوي، والعديد من الميزات المتخصصة لمختبر الاختراق المحترف، ومجموعة واسعة من الخيارات بما في ذلك تحديد بصمة قاعدة البيانات، واستخراج البيانات من قاعدة البيانات، والوصول إلى نظام الملفات الأساسي، وتنفيذ الأوامر على نظام التشغيل عبر اتصالات خارج النطاق.
|
||||
|
||||
لقطات الشاشة
|
||||
----
|
||||
|
||||
<div dir=ltr>
|
||||
|
||||

|
||||
|
||||
<div dir=rtl>
|
||||
|
||||
يمكنك زيارة [مجموعة لقطات الشاشة](https://github.com/sqlmapproject/sqlmap/wiki/Screenshots) التي توضح بعض الميزات في الويكي.
|
||||
|
||||
التثبيت
|
||||
----
|
||||
|
||||
يمكنك تحميل أحدث إصدار tarball بالنقر [هنا](https://github.com/sqlmapproject/sqlmap/tarball/master) أو أحدث إصدار zipball بالنقر [هنا](https://github.com/sqlmapproject/sqlmap/zipball/master).
|
||||
|
||||
يفضل تحميل sqlmap عن طريق استنساخ مستودع [Git](https://github.com/sqlmapproject/sqlmap):
|
||||
|
||||
<div dir=ltr>
|
||||
|
||||
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
|
||||
|
||||
<div dir=rtl>
|
||||
|
||||
يعمل sqlmap مباشرة مع [Python](https://www.python.org/download/) إصدار **2.6** و **2.7** و **3.x** على أي نظام تشغيل.
|
||||
|
||||
الاستخدام
|
||||
----
|
||||
|
||||
للحصول على قائمة بالخيارات والمفاتيح الأساسية استخدم:
|
||||
|
||||
<div dir=ltr>
|
||||
|
||||
python sqlmap.py -h
|
||||
|
||||
<div dir=rtl>
|
||||
|
||||
للحصول على قائمة بجميع الخيارات والمفاتيح استخدم:
|
||||
|
||||
<div dir=ltr>
|
||||
|
||||
python sqlmap.py -hh
|
||||
|
||||
<div dir=rtl>
|
||||
|
||||
يمكنك العثور على مثال للتشغيل [هنا](https://asciinema.org/a/46601).
|
||||
للحصول على نظرة عامة على إمكانيات sqlmap، وقائمة الميزات المدعومة، ووصف لجميع الخيارات والمفاتيح، مع الأمثلة، ننصحك بمراجعة [دليل المستخدم](https://github.com/sqlmapproject/sqlmap/wiki/Usage).
|
||||
|
||||
الروابط
|
||||
----
|
||||
|
||||
* الصفحة الرئيسية: https://sqlmap.org
|
||||
* التحميل: [.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
|
||||
* تتبع المشكلات: https://github.com/sqlmapproject/sqlmap/issues
|
||||
* دليل المستخدم: https://github.com/sqlmapproject/sqlmap/wiki
|
||||
* الأسئلة الشائعة: https://github.com/sqlmapproject/sqlmap/wiki/FAQ
|
||||
* تويتر: [@sqlmap](https://x.com/sqlmap)
|
||||
* العروض التوضيحية: [https://www.youtube.com/user/inquisb/videos](https://www.youtube.com/user/inquisb/videos)
|
||||
* لقطات الشاشة: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
|
||||
@@ -6,6 +6,8 @@ See the file 'LICENSE' for copying permission
|
||||
"""
|
||||
|
||||
from lib.core.common import Backend
|
||||
from lib.core.common import getSafeExString
|
||||
from lib.core.common import singleTimeWarnMessage
|
||||
from lib.core.data import conf
|
||||
from lib.core.data import kb
|
||||
from lib.core.dicts import DBMS_DICT
|
||||
@@ -171,16 +173,17 @@ def setHandler():
|
||||
if not dialect or exception:
|
||||
try:
|
||||
conf.dbmsConnector.connect()
|
||||
except Exception as ex:
|
||||
except NameError:
|
||||
if exception:
|
||||
raise exception
|
||||
else:
|
||||
if not isinstance(ex, NameError):
|
||||
raise
|
||||
else:
|
||||
msg = "support for direct connection to '%s' is not available. " % dbms
|
||||
msg += "Please rerun with '--dependencies'"
|
||||
raise SqlmapConnectionException(msg)
|
||||
msg = "support for direct connection to '%s' is not available. " % dbms
|
||||
msg += "Please rerun with '--dependencies'"
|
||||
raise SqlmapConnectionException(msg)
|
||||
except:
|
||||
if exception:
|
||||
singleTimeWarnMessage(getSafeExString(exception))
|
||||
raise
|
||||
|
||||
if conf.forceDbms == dbms or handler.checkDbms():
|
||||
if kb.resolutionDbms:
|
||||
|
||||
@@ -163,6 +163,9 @@ class BigArray(list):
|
||||
raise SqlmapSystemException(errMsg)
|
||||
|
||||
def _checkcache(self, index):
|
||||
if self.cache is not None and not isinstance(self.cache, Cache):
|
||||
self.cache = None
|
||||
|
||||
if (self.cache and self.cache.index != index and self.cache.dirty):
|
||||
filename = self._dump(self.cache.data)
|
||||
self.chunks[self.cache.index] = filename
|
||||
|
||||
+1
-5
@@ -1683,11 +1683,7 @@ def parseTargetDirect():
|
||||
elif dbmsName == DBMS.PGSQL:
|
||||
__import__("psycopg2")
|
||||
elif dbmsName == DBMS.ORACLE:
|
||||
__import__("cx_Oracle")
|
||||
|
||||
# Reference: http://itsiti.com/ora-28009-connection-sys-sysdba-sysoper
|
||||
if (conf.dbmsUser or "").upper() == "SYS":
|
||||
conf.direct = "%s?mode=SYSDBA" % conf.direct
|
||||
__import__("oracledb")
|
||||
elif dbmsName == DBMS.SQLITE:
|
||||
__import__("sqlite3")
|
||||
elif dbmsName == DBMS.ACCESS:
|
||||
|
||||
+1
-1
@@ -225,7 +225,7 @@ DBMS_DICT = {
|
||||
DBMS.MSSQL: (MSSQL_ALIASES, "python-pymssql", "https://github.com/pymssql/pymssql", "mssql+pymssql"),
|
||||
DBMS.MYSQL: (MYSQL_ALIASES, "python-pymysql", "https://github.com/PyMySQL/PyMySQL", "mysql"),
|
||||
DBMS.PGSQL: (PGSQL_ALIASES, "python-psycopg2", "https://github.com/psycopg/psycopg2", "postgresql"),
|
||||
DBMS.ORACLE: (ORACLE_ALIASES, "python cx_Oracle", "https://oracle.github.io/python-cx_Oracle/", "oracle"),
|
||||
DBMS.ORACLE: (ORACLE_ALIASES, "python-oracledb", "https://oracle.github.io/python-oracledb/", "oracle"),
|
||||
DBMS.SQLITE: (SQLITE_ALIASES, "python-sqlite", "https://docs.python.org/3/library/sqlite3.html", "sqlite"),
|
||||
DBMS.ACCESS: (ACCESS_ALIASES, "python-pyodbc", "https://github.com/mkleehammer/pyodbc", "access"),
|
||||
DBMS.FIREBIRD: (FIREBIRD_ALIASES, "python-kinterbasdb", "http://kinterbasdb.sourceforge.net/", "firebird"),
|
||||
|
||||
+9
-7
@@ -11,6 +11,7 @@ import codecs
|
||||
import functools
|
||||
import glob
|
||||
import inspect
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
import random
|
||||
@@ -1405,10 +1406,10 @@ def _setHTTPExtraHeaders():
|
||||
debugMsg = "setting extra HTTP headers"
|
||||
logger.debug(debugMsg)
|
||||
|
||||
if "\n" in conf.headers:
|
||||
conf.headers = conf.headers.replace("\r\n", "\n").split("\n")
|
||||
elif "\\n" in conf.headers:
|
||||
if "\\n" in conf.headers:
|
||||
conf.headers = conf.headers.replace("\\r\\n", "\\n").split("\\n")
|
||||
else:
|
||||
conf.headers = conf.headers.replace("\r\n", "\n").split("\n")
|
||||
|
||||
for headerValue in conf.headers:
|
||||
if not headerValue.strip():
|
||||
@@ -2544,11 +2545,12 @@ def _checkTor():
|
||||
logger.info(infoMsg)
|
||||
|
||||
try:
|
||||
page, _, _ = Request.getPage(url="https://check.torproject.org/", raise404=False)
|
||||
except SqlmapConnectionException:
|
||||
page = None
|
||||
page, _, _ = Request.getPage(url="https://check.torproject.org/api/ip", raise404=False)
|
||||
tor_status = json.loads(page)
|
||||
except (SqlmapConnectionException, TypeError, ValueError):
|
||||
tor_status = None
|
||||
|
||||
if not page or "Congratulations" not in page:
|
||||
if not tor_status or not tor_status.get("IsTor"):
|
||||
errMsg = "it appears that Tor is not properly set. Please try using options '--tor-type' and/or '--tor-port'"
|
||||
raise SqlmapConnectionException(errMsg)
|
||||
else:
|
||||
|
||||
@@ -19,7 +19,7 @@ from lib.core.enums import OS
|
||||
from thirdparty import six
|
||||
|
||||
# sqlmap version (<major>.<minor>.<month>.<monthly commit>)
|
||||
VERSION = "1.9.6.0"
|
||||
VERSION = "1.9.7.0"
|
||||
TYPE = "dev" if VERSION.count('.') > 2 and VERSION.split('.')[-1] != '0' else "stable"
|
||||
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)
|
||||
|
||||
@@ -408,6 +408,9 @@ def cmdLineParser(argv=None):
|
||||
techniques.add_argument("--time-sec", dest="timeSec", type=int,
|
||||
help="Seconds to delay the DBMS response (default %d)" % defaults.timeSec)
|
||||
|
||||
techniques.add_argument("--disable-stats", dest="disableStats", action="store_true",
|
||||
help="Disable the statistical model for detecting the delay")
|
||||
|
||||
techniques.add_argument("--union-cols", dest="uCols",
|
||||
help="Range of columns to test for UNION query SQL injection")
|
||||
|
||||
@@ -827,9 +830,6 @@ def cmdLineParser(argv=None):
|
||||
parser.add_argument("--disable-precon", dest="disablePrecon", action="store_true",
|
||||
help=SUPPRESS)
|
||||
|
||||
parser.add_argument("--disable-stats", dest="disableStats", action="store_true",
|
||||
help=SUPPRESS)
|
||||
|
||||
parser.add_argument("--profile", dest="profile", action="store_true",
|
||||
help=SUPPRESS)
|
||||
|
||||
|
||||
@@ -1243,7 +1243,7 @@ class Connect(object):
|
||||
warnMsg += ". sqlmap is going to retry the request"
|
||||
logger.warning(warnMsg)
|
||||
|
||||
page, headers, code = Connect.getPage(url=conf.csrfUrl or conf.url, post=conf.csrfData or (conf.data if conf.csrfUrl == conf.url else None), method=conf.csrfMethod or (conf.method if conf.csrfUrl == conf.url else None), cookie=conf.parameters.get(PLACE.COOKIE), direct=True, silent=True, ua=conf.parameters.get(PLACE.USER_AGENT), referer=conf.parameters.get(PLACE.REFERER), host=conf.parameters.get(PLACE.HOST))
|
||||
page, headers, code = Connect.getPage(url=conf.csrfUrl or conf.url, post=conf.csrfData or (conf.data if conf.csrfUrl == conf.url and (conf.csrfMethod or "").upper() == HTTPMETHOD.POST else None), method=conf.csrfMethod or (conf.method if conf.csrfUrl == conf.url else None), cookie=conf.parameters.get(PLACE.COOKIE), direct=True, silent=True, ua=conf.parameters.get(PLACE.USER_AGENT), referer=conf.parameters.get(PLACE.REFERER), host=conf.parameters.get(PLACE.HOST))
|
||||
page = urldecode(page) # for anti-CSRF tokens with special characters in their name (e.g. 'foo:bar=...')
|
||||
|
||||
match = re.search(r"(?i)<input[^>]+\bname=[\"']?(?P<name>%s)\b[^>]*\bvalue=[\"']?(?P<value>[^>'\"]*)" % conf.csrfToken, page or "", re.I)
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@ def checkDependencies():
|
||||
elif dbmsName in (DBMS.PGSQL, DBMS.CRATEDB):
|
||||
__import__("psycopg2")
|
||||
elif dbmsName == DBMS.ORACLE:
|
||||
__import__("cx_Oracle")
|
||||
__import__("oracledb")
|
||||
elif dbmsName == DBMS.SQLITE:
|
||||
__import__("sqlite3")
|
||||
elif dbmsName == DBMS.ACCESS:
|
||||
|
||||
@@ -162,7 +162,7 @@ class Fingerprint(GenericFingerprint):
|
||||
infoMsg = "confirming %s" % DBMS.ACCESS
|
||||
logger.info(infoMsg)
|
||||
|
||||
result = inject.checkBooleanExpression("IIF(ATN(2)>0,1,0) BETWEEN 2 AND 0")
|
||||
result = inject.checkBooleanExpression("IIF(ATN(2) IS NOT NULL,1,0) BETWEEN 2 AND 0")
|
||||
|
||||
if not result:
|
||||
warnMsg = "the back-end DBMS is not %s" % DBMS.ACCESS
|
||||
|
||||
@@ -68,7 +68,7 @@ class Fingerprint(GenericFingerprint):
|
||||
infoMsg = "testing %s" % DBMS.MIMERSQL
|
||||
logger.info(infoMsg)
|
||||
|
||||
result = inject.checkBooleanExpression("IRAND()>=0")
|
||||
result = inject.checkBooleanExpression("IRAND() IS NOT NULL")
|
||||
|
||||
if result:
|
||||
infoMsg = "confirming %s" % DBMS.MIMERSQL
|
||||
|
||||
@@ -6,8 +6,8 @@ See the file 'LICENSE' for copying permission
|
||||
"""
|
||||
|
||||
try:
|
||||
import cx_Oracle
|
||||
except:
|
||||
import oracledb
|
||||
except ImportError:
|
||||
pass
|
||||
|
||||
import logging
|
||||
@@ -25,32 +25,26 @@ os.environ["NLS_LANG"] = ".AL32UTF8"
|
||||
|
||||
class Connector(GenericConnector):
|
||||
"""
|
||||
Homepage: https://oracle.github.io/python-cx_Oracle/
|
||||
User https://cx-oracle.readthedocs.io/en/latest/
|
||||
API: https://wiki.python.org/moin/DatabaseProgramming
|
||||
License: https://cx-oracle.readthedocs.io/en/latest/license.html#license
|
||||
Homepage: https://oracle.github.io/python-oracledb/
|
||||
User: https://python-oracledb.readthedocs.io/en/latest/
|
||||
License: https://github.com/oracle/python-oracledb/blob/main/LICENSE.txt
|
||||
"""
|
||||
|
||||
def connect(self):
|
||||
self.initConnection()
|
||||
# Reference: https://cx-oracle.readthedocs.io/en/latest/user_guide/connection_handling.html
|
||||
self.__dsn = "%s:%d/%s" % (self.hostname, self.port, self.db)
|
||||
|
||||
self.user = getText(self.user)
|
||||
self.password = getText(self.password)
|
||||
|
||||
try:
|
||||
self.connector = cx_Oracle.connect(dsn=self.__dsn, user=self.user, password=self.password, mode=cx_Oracle.SYSDBA)
|
||||
dsn = oracledb.makedsn(self.hostname, self.port, service_name=self.db)
|
||||
self.connector = oracledb.connect(user=self.user, password=self.password, dsn=dsn, mode=oracledb.AUTH_MODE_SYSDBA)
|
||||
logger.info("successfully connected as SYSDBA")
|
||||
except (cx_Oracle.OperationalError, cx_Oracle.DatabaseError, cx_Oracle.InterfaceError) as ex:
|
||||
if "Oracle Client library" in getSafeExString(ex):
|
||||
msg = re.sub(r"DPI-\d+:\s+", "", getSafeExString(ex))
|
||||
msg = re.sub(r': ("[^"]+")', r" (\g<1>)", msg)
|
||||
msg = re.sub(r". See (http[^ ]+)", r'. See "\g<1>"', msg)
|
||||
raise SqlmapConnectionException(msg)
|
||||
|
||||
except oracledb.DatabaseError as ex:
|
||||
# Try again without SYSDBA
|
||||
try:
|
||||
self.connector = cx_Oracle.connect(dsn=self.__dsn, user=self.user, password=self.password)
|
||||
except (cx_Oracle.OperationalError, cx_Oracle.DatabaseError, cx_Oracle.InterfaceError) as ex:
|
||||
self.connector = oracledb.connect(user=self.user, password=self.password, dsn=dsn)
|
||||
except oracledb.DatabaseError as ex:
|
||||
raise SqlmapConnectionException(ex)
|
||||
|
||||
self.initCursor()
|
||||
@@ -59,7 +53,7 @@ class Connector(GenericConnector):
|
||||
def fetchall(self):
|
||||
try:
|
||||
return self.cursor.fetchall()
|
||||
except cx_Oracle.InterfaceError as ex:
|
||||
except oracledb.InterfaceError as ex:
|
||||
logger.log(logging.WARN if conf.dbmsHandler else logging.DEBUG, "(remote) '%s'" % getSafeExString(ex))
|
||||
return None
|
||||
|
||||
@@ -69,11 +63,10 @@ class Connector(GenericConnector):
|
||||
try:
|
||||
self.cursor.execute(getText(query))
|
||||
retVal = True
|
||||
except cx_Oracle.DatabaseError as ex:
|
||||
except oracledb.DatabaseError as ex:
|
||||
logger.log(logging.WARN if conf.dbmsHandler else logging.DEBUG, "(remote) '%s'" % getSafeExString(ex))
|
||||
|
||||
self.connector.commit()
|
||||
|
||||
return retVal
|
||||
|
||||
def select(self, query):
|
||||
|
||||
@@ -34,7 +34,7 @@ class Connector(GenericConnector):
|
||||
|
||||
try:
|
||||
self.connector = psycopg2.connect(host=self.hostname, user=self.user, password=self.password, database=self.db, port=self.port)
|
||||
except psycopg2.OperationalError as ex:
|
||||
except (psycopg2.OperationalError, UnicodeDecodeError) as ex:
|
||||
raise SqlmapConnectionException(getSafeExString(ex))
|
||||
|
||||
self.connector.set_client_encoding('UNICODE')
|
||||
|
||||
@@ -93,7 +93,7 @@ class Fingerprint(GenericFingerprint):
|
||||
infoMsg = "actively fingerprinting %s" % DBMS.SQLITE
|
||||
logger.info(infoMsg)
|
||||
|
||||
result = inject.checkBooleanExpression("RANDOMBLOB(-1)>0")
|
||||
result = inject.checkBooleanExpression("RANDOMBLOB(-1) IS NOT NULL")
|
||||
version = '3' if result else '2'
|
||||
Backend.setVersion(version)
|
||||
|
||||
|
||||
@@ -401,6 +401,10 @@ technique = BEUSTQ
|
||||
# Default: 5
|
||||
timeSec = 5
|
||||
|
||||
# Disable the statistical model for detecting the delay.
|
||||
# Valid: True or False
|
||||
disableStats = False
|
||||
|
||||
# Range of columns to test for.
|
||||
# Valid: range of integers
|
||||
# Example: 1-10
|
||||
|
||||
@@ -513,6 +513,11 @@ def main():
|
||||
logger.critical(errMsg)
|
||||
raise SystemExit
|
||||
|
||||
elif "'cryptography' package is required":
|
||||
errMsg = "third-party library 'cryptography' is required"
|
||||
logger.critical(errMsg)
|
||||
raise SystemExit
|
||||
|
||||
elif "AttributeError: 'module' object has no attribute 'F_GETFD'" in excMsg:
|
||||
errMsg = "invalid runtime (\"%s\") " % excMsg.split("Error: ")[-1].strip()
|
||||
errMsg += "(Reference: 'https://stackoverflow.com/a/38841364' & 'https://bugs.python.org/issue24944#msg249231')"
|
||||
|
||||
Reference in New Issue
Block a user