A1 -Injection
HTML Injection - Reflected(GET)
low 级别
low级别意味着没有任何检查
输入·<h1>This is a test</h1>·,可以看到可以被完整解析到页面上
输入<meta http-equiv="refresh" content='0; url=https://xxx:xxx/portal.php
medium 级别
进行和low级别相同操作
发现无法注入成功
抓包可见cookie值有变化
查看源码app/htmli_get.php
进一步找到xss_check_1,在app/functions_external.php中
可以看出medium级别的检查是先将输入的<>转为html字符实体<和>
然后对输入解码
这里可以看到bwapp提供了三个例子
<script>alert(0)</script>
%3Cscript%3Ealert%280%29%3C%2Fscript%3E //这是对<script>alert(0)</script>的一次编码
%253Cscript%253Ealert%25280%2529%253C%252Fscript%253E //这是对<script>alert(0)</script>的二次编码
不难得出解决办法是输入编码后的代码
这里就不放图了
high 级别
运行和medium相同操作,也是无法注入成功,查看代码
发现是带有ENT_QUOTES参数的htmlspecialchars()函数,
暂时没想到办法
HTML Injection - Reflected(POST)
同GET方式
HTML Injection - Reflected (URL)
low 级别
抓包如图示,将编码部分更改即可
根据源码
也可以更改host
medium 级别
该问题似乎是在 Javascript 中运行的 DOM XSS 中的一个漏洞.
它已在最近的浏览器中得到处理。现在的浏览器可以对URL中的<>字符进行编码,从而导致攻击失败.
可以在老版本的IE中实现进攻.
high 级别
可以从源码看到再次使用了带有ENT_QUOTES参数的htmlspecialchars()函数,不可绕过.
HTML Injection - Stored (Blog)
low 级别
直接尝试注入,可行
medium&high 级别
尝试注入,发现没有被解析
查看源码 app/htmli_stored.php
function htmli($data)
{
include("connect_i.php");
switch($_COOKIE["security_level"])
{
case "0" :
$data = sqli_check_3($link, $data);
break;
case "1" :
$data = sqli_check_3($link, $data);
// $data = xss_check_4($data);
break;
case "2" :
$data = sqli_check_3($link, $data);
// $data &