58 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			58 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
 | 
