Portswigger
  • Portswigger
  • Server-Side Request Forgery
    • Server-Side Request Forgery (SSRF)
  • SSRF with filter bypass via open redirection vulnerability
  • Blind SSRF with out-of-band detection
  • Cross-Site Scripting
    • Cross-Site Scripting (XSS)
  • Reflected XSS into a JS string with angle brackets and double&single quotes HTML-encoded escape
  • XSS into a template literal w/ angle brackets, single, double quotes, backslash & backticks Escaped
  • Authentication
    • Authentication
  • Username enumeration via subtly different responses
  • 2FA broken logic
  • Username enumeration via response timing
  • Username enumeration via account lock
  • Password reset poisoning via middleware
  • Path Traversal
    • Path Traversal
  • File path traversal, traversal sequences stripped with superfluous URL-decode
  • File path traversal, traversal sequences blocked with absolute path bypass
  • Business Logic Vulnerabilities
    • Business Logic Vulnerabilities
  • Insufficient workflow validation
  • Inconsistent handling of exceptional input
  • Server-Side Template Injection
    • Server-Side Template Injection
  • Basic server-side template injection
  • Basic server-side template injection (code context)
  • SQL Injection
    • SQL Injection
    • Blind SQL injection with conditional responses
  • SQL injection UNION attack, retrieving data from other tables
  • SQL injection attack, listing the database contents on non-Oracle databases
  • API Testing
    • API Testing
  • Exploiting an API endpoint using documentation
  • Exploiting a mass assignment vulnerability
  • Finding and exploiting an unused API endpoint
  • JWT ATTACK
    • JWT Attack
    • JWT authentication bypass via unverified signature
  • JWT authentication bypass via jku header injection
  • JWT authentication bypass via flawed signature verification
  • HTTP HOST HEADER ATTACKS
    • HTTP Host header attacks
  • Basic password reset poisoning
  • Host header authentication bypass
  • No SQL Injection
    • NoSQL Injection
  • Detecting NoSQL injection
  • Exploiting NoSQL operator injection to bypass authentication
  • Exploiting NoSQL injection to extract data
  • FILE UPLOAD VULNERABILITIES
    • File Upload Vulnerabilities
  • Web shell upload via obfuscated file extension
  • OAuth Authentication
    • OAuth Authentication
  • OAuth account hijacking via redirect_uri
  • ACCESS CONTROL VULNERABILITIES
    • Access Control Vulnerabilities
  • User ID controlled by request parameter with data leakage in redirect
  • User ID controlled by request parameter with password disclosure
  • User role controlled by request parameter
  • User role can be modified in user profile
  • URL-based access control can be circumvented
  • INFORMATION DISCLOSURE VULNERABILITIES
    • Information Disclosure Vulnerabilities
  • Information disclosure in version control history
  • XML external entity injection
    • XML External Entity (XXE) Injection
  • Exploiting XXE using external entities to retrieve files
  • Exploiting blind XXE to retrieve data via error messages
  • Blind XXE with out-of-band interaction
  • Blind XXE with out-of-band interaction via XML parameter entities
  • OS COMMAND INJECTION
    • OS Command Injection
  • Blind OS command injection with out-of-band data exfiltration
  • PROTOTYPE POLLUTION
    • Prototype Pollution
  • Privilege escalation via server-side prototype pollution
  • WEB CACHE POISONING
    • Web Cache Poisoning
  • Web cache poisoning via an unkeyed query parameter
Powered by GitBook
On this page

SQL injection attack, listing the database contents on non-Oracle databases

Link: https://portswigger.net/web-security/sql-injection/examining-the-database/lab-listing-database-contents-non-oracle

PreviousSQL injection UNION attack, retrieving data from other tablesNextAPI Testing

Last updated 3 months ago

Description:

This lab contains a vulnerability in the product category filter. The results from the query are returned in the application's response so you can use a UNION attack to retrieve data from other tables.

The application has a login function, and the database contains a table that holds usernames and passwords. You need to determine the name of this table and the columns it contains, then retrieve the contents of the table to obtain the username and password of all users.

To solve the lab, log in as the administrator user.

Proof of concept:

  1. Analisa web target

  2. Pada target terdapat fitur pemilihan kategori barang. Ketika menggunakan fitur sort by category tersebut akan menggunakan parameter category

  3. Lakukan pengecekan SQL Injection pada parameter category tersebut dengan menginputkan karakter single-quote (’). Jika muncul pesan kesahalan, maka parameter tersebut memiliki kemungkinan rentan terhadap SQL Injection

  4. Dari pengecekan tersebut, seperti yang dapat dilihat bahwa muncul pesan kesalahan. Untuk memastikannya, inputkan payload basic ‘OR ‘1’=’1--. Payload tersebut bernilai true, maka jika sistem menampilkan data maka dapat dipastikan parameter category tersebut rentan terhadap SQL Injection

  5. Lakukan eksploitasi lanjutan untuk memanfaatkan kerentanan ini. Gunakan payload ‘UNION SELECT NULL-- pada parameter tersebut dengan melakukan URL encode pada payload yang diinputkan

  6. Seperti yang dapat dilihat pada gambar diatas, menunjukan pesan kesalahan dengan ditandai response HTTP code yang diberikan adalah 500 (Internal Server Error). Ini terjadi mungkin dikarenakan jumlah column belum sesuai. Maka tambahkan kembali dengan menggunakan payload ‘UNION SELECT NULL, NULL--

  7. Maka tidak ada pesan kesalah, yang artinya terdapat 2 column yang digunakan. Selanjutnya, gunakan payload ‘UNION SELECT NULL, table_name FROM information_schema.tables-- untuk mendapatkan nama-nama table yang terdapat pada database target. Jangan lupa untuk melakukan URL encode pada payload tersebut

  8. Dari tahapan sebelumnya telah didapati informasi bahwa terdapat tabel users_dlnqza pada database target. Langkah selanjutnya yaitu perlu untuk mengetahui kolom apa saja yang terdapat pada tabel tersebut. Untuk mendapatkan informasi tersebut, dapat menggunakan payload berikut

    ‘UNION SELECT NULL, column_name FROM information_schema.columns WHERE table_name = ‘users_dlnqza’--

    Seperti biasa, untuk melakukan URL encode terlebih dahulu pada payload yang diinputkan

  9. Dari payload sebelumnya telah didapati informasi bahwa pada tabel users_dlnqza terdapat beberapa kolom diantaranya email, username_awcalj dan password_ymkdqd. Langkah selanjutnya adalah mengambil data username dan password dari pengguna-pengguna yang terdaftar pada web target. Untuk melakukannya, dapat menggunakan payload ‘UNION SELECT username_awcalj, password_ymkdqd FROM users_dlnqza--. Maka akan ditampilkan data-data username dan password dari pengguna-pengguna yang terdaftar pada database target

  10. Untuk menyelesaikan tangtangan pada lab ini, login kedalam akun administrator menggunakan username dan password yang telah didapatkan pada tahapan sebelumnya

  11. Selain denganc cara manual, SQL Injection ini dapat menggunakan tools otomasi baik menggunakan SQLMap atau Ghauri. Sebagai contoh disini menggunakan tool SQLMap dengan perintah sqlmap -u ‘http://<>?parameter=’ --dbs --level=3 --risk=3

Thanks, Stay Ethical & Happy Hacking! 🍻

SQL injection