اجرای sqlmap در برابر یک پارامتر در داخل یک پارامتر

من یک دامنه در قالب دارم: example.com؟foo=http://anotherexample.com؟bar=…

من می خواهم پارامب "بند" را پیوست کنم، اما sqlmap (به درستی) تجزیه می کند دومین آدرس به عنوان مقدار پارامتر foo. بنابراین من نمی توانم متغیر نوار را با پارامتر -p انتخاب کنم.

هرچیزی که در اطراف این است؟

java – آیا این پارامتر به تزریق SQL آسیب پذیر است؟

سرور پشت صحنه Tomcat 8.5 (جاوا اسکریپت) را اجرا می کند. نشانی اینترنتی مورد نظر:

 https://website.com/application/servlet.do؟currentOID=abc12300000000

متوجه شدم وقتی که من یک OID ناقص (یعنی 1 کاراکتر را حذف کنم)، یا یک کاراکتر (یعنی a یا ') را اضافه می کنم، سرور یک خطا می کند:

 org.apache.ojb.broker.PersistenceBrokerSQLException: شکست SQL در حالی که درج اطلاعات شیء برای کلاس com.abc، PK از شی داده شده است [ oid=CBA000000AAAAA]، شی GroupPageTab CBA000000AAAAA، پیام استثنایی [String or binary data would be truncated.]
    در org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeInsert (JdbcAccessImpl.java: 243)
    در org.apache.ojb.broker.core.PersistenceBrokerImpl.storeToDb (PersistenceBrokerImpl.java: 1642)
    در org.apache.ojb.broker.core.PersistenceBrokerImpl.store (PersistenceBrokerImpl.java: 1557)
    در org.apache.ojb.broker.core.PersistenceBrokerImpl.store (PersistenceBrokerImpl.java: 1506)
    ...

و OID CBA000000AAAAA تغییر می کند زمانی که currentOID تغییر می کند. آیا این به نظر می رسد که ممکن است به تزریق آسیب پذیر باشد؟ من در JDBC کم تجربه هستم بنابراین مطمئن نیستم

SQL injection – خطای SQLmap (چه اتفاقی می افتد اگر من هیچ پارامتر ندارم)

هنگام استفاده از sqlmap خطایی دارم مشکل این است:

من از این نرم افزار استفاده میکنم https://www.exploit-db.com/ghdb/4301/
اما من نمی دانم که چگونه از sqlmap با این نوع تزریق sql استفاده کنم.
من از کلاسیک استفاده می کنم:

sqlmap -u site.com/ –tor –check-tor -tor-port = 9050 -tor-type = SOCKS5 –user-agent = "Googlebot (سازگار ؛ Googlebot / 2.1؛ + http: //www.google.com/bot.html) "–dbms = MySQL –dbs

در این موارد من یک پارامتر مانند" id = 1 "ندارم من فقط یک سایت با اشتباهات sql دارم، اما نه پارامتر در لینک

اما من را برمی گرداند:

همه پارامترهای تست شده به نظر نمی رسد تزریقی است. اگر می خواهید تست های بیشتری انجام دهید، سعی کنید مقادیر برای گزینه های '-level' / '- risk' را افزایش دهید. لطفا با کلید «text only» (همراه با – technique = BU) دوباره امتحان کنید زیرا این مورد به عنوان یک کاندید کامل (محتوای کم متن همراه با عدم توانایی موتور مقایسه برای تشخیص حداقل یک پارامتر پویا). به عنوان تست اکتشافی معلوم شد که شما به شدت توصیه می شود که با آزمایش ادامه دهید. اگر شما مشکوک هستید که یک نوع مکانیزم حفاظت وجود دارد (مثلا WAF)، شاید بتوانید از گزینه '–tamper' (به عنوان مثال '–tamper = space2comment') استفاده کنید (19459007)

سپس من استفاده از همان، اما با – بدون متن و – تکنیک = BU مانند خطا می گویند، اما هیچ چیز رخ داده است.

چگونه باید sqlmap در این مورد استفاده کنم ؟

تزریق SQL: نحوه شروع زمانی که مقدار پارامتر id عددی نیست

نوع استدلال در اینجا باید در تزریق SQL نقش نداشته باشد و سپس این که چگونه پرس و جو SQL در وهله اول شکل گرفته است.

SQL injection سوء استفاده SQL Query که از پارامتر به عنوان یک رشته ایجاد شده است. وب سرور تمام نشانی اینترنتی را به عنوان یک متن پردازش می کند و تمام پارامترها را به عنوان رشته نیز تجزیه می کند. بنابراین حتی زمانی که عدد عددی مانند 1 است، آن را توسط یک سرور وب به عنوان رشته و کد در نظر گرفته می شود و سپس آن را به عنوان یک رشته وارد می کند. این اجازه می دهد تا شما را به وارد کردن کاراکتر های خاص، که ممکن است اگر تنها اعداد مجاز بود ممکن است.

با این حال، ممکن است در پرس و جو SQL وجود دارد. هنگام استفاده از رشته در یک پرس و جو SQL، رشته باید در نقل قول ها ' محصور شود. اعداد می توانند، اما لازم نیست.
شماره: SELECT * از آزمون WHERE id = $ NUMBER؛
String: SELECT * FROM Test WHERE id = '$ TEXT؛'؛

هنگامی که یک رشته در نقل قول بسته است، ابتدا باید ابتدا قاعده را ببندید. بنابراین برای مثال شما می توانید A 'ارسال کنید؛ DROP TABLES *؛ - که به شما می دهد:
SELECT * از تست WHERE id = 'A'؛ جداول قطره *؛ - '.
شما می توانید "پایان دادن به اولین" را ببینید، به طوری که دستور DROP TABLES *؛ به عنوان یک فرمان و نه به عنوان متن در نظر گرفته می شود. – برای نظر در SQL استفاده می شود و در اینجا از آن برای خلاص شدن از بسته شدن ' استفاده می کنیم. در غیر این صورت، یک query SQL نادرست ایجاد می شود.

لطفا توجه داشته باشید که اعداد همچنین می توانند از نقل قول در پرس و جو استفاده کنند، بنابراین با استفاده از این روش فرار ممکن است مفید باشد حتی اگر سایت فقط از اعداد در پارامتر. همچنین، بسته به موتور SQL، انواع دیگر نقل قولها و سپس نقل قول های تک، مانند نقل قول های دوگانه ممکن است قابل استفاده باشد، که می تواند چگونگی فرار از آنها را تغییر دهد.