sqlmap
sqlmap copied to clipboard
Added "Snowflake" DBMS support
I've ran into the "Snowflake" DBMS when exploiting SQL injection often enough to warrant wanting SQLmap to do it auto-magically. This PR adds a plugin which adds support for the "Snowflake" DBMS.
nice. any way to test it here at my side?
nice. any way to test it here at my side?
Here's an example Flask app using the Snowflake python connector:
from flask import Flask, request
import snowflake.connector
conn = snowflake.connector.connect(
user="REDACTED",
password="REDACTED",
account="REDACTED",
warehouse="COMPUTE_WH",
database="SNOWFLAKE_SAMPLE_DATA",
schema="TPCDS_SF100TCL"
)
app = Flask(__name__)
@app.route("/shipping", methods=["GET"])
def hello():
shipping_id = request.args.get("id", "")
query = f"SELECT sm_ship_mode_id, sm_type, sm_carrier FROM ship_mode WHERE sm_ship_mode_id='{shipping_id}'"
try:
cursor = conn.cursor()
cursor.execute(query)
data = cursor.fetchall()
cursor.close()
except:
data = []
# blind
return {'status': len(data) > 0}
# union
return {
"count": len(data),
"results": [{"id": x[0], "type": x[1], "carrier": x[2]} for x in data]
}
if __name__ == "__main__":
app.run(host="127.0.0.1", port=5000)
You can signup for a 30-day free trial: https://signup.snowflake.com/
Then you can grab connection details for the default SNOWFLAKE_SAMPLE_DATA database:
Then you point and shoot:
> $ sqlmap -u 'http://localhost:5000/shipping?id=AAAAAAAABAAAAAAA' -p id --threads 10 --dbs