57 lines
1.5 KiB
PHP
57 lines
1.5 KiB
PHP
<?php
|
|
|
|
require_once 'common.php';
|
|
|
|
echo '<?xml version="1.0" encoding="UTF-8" ?>';
|
|
?><!DOCTYPE html
|
|
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html>
|
|
<head>
|
|
<title>HTML Purifier Variable Width Attack Smoketest</title>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
|
</head>
|
|
<body>
|
|
<h1>HTML Purifier Variable Width Attack Smoketest</h1>
|
|
<p>For more information, see
|
|
<a href="http://applesoup.googlepages.com/bypass_filter.txt">Cheng Peng Su's
|
|
original advisory.</a> This particular exploit code appears only to work
|
|
in Internet Explorer, if it works at all.</p>
|
|
<h2>Test</h2>
|
|
<?php
|
|
|
|
$purifier = new HTMLPurifier();
|
|
|
|
?>
|
|
<table>
|
|
<thead><tr><th>ASCII</th><th width="30%">Raw</th><th>Output</th><th>Render</th></tr></thead>
|
|
<tbody>
|
|
<?php
|
|
|
|
for ($i = 0; $i < 256; $i++) {
|
|
$c = chr($i);
|
|
$html = '<img src="" alt="X' . $c . '"';
|
|
$html .= '>A"'; // in our out the attribute? ;-)
|
|
$html .= "onerror=alert('$i')>O";
|
|
$pure_html = $purifier->purify($html);
|
|
?>
|
|
<tr>
|
|
<td><?php echo $i; ?></td>
|
|
<td style="font-size:8pt;"><?php echo escapeHTML($html); ?></td>
|
|
<td style="font-size:8pt;"><?php echo escapeHTML($pure_html); ?></td>
|
|
<td><?php echo $pure_html; ?></td>
|
|
</tr>
|
|
<?php } ?>
|
|
</tbody>
|
|
</table>
|
|
|
|
<h2>Analysis</h2>
|
|
|
|
<p>By making sure that UTF-8 is well formed and non-SGML codepoints are
|
|
removed, as well as escaping quotes outside of tags, this is a non-threat.</p>
|
|
|
|
</body>
|
|
</html>
|
|
<?php
|
|
|
|
// vim: et sw=4 sts=4
|