好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

什么是html注入

,Last name填入test,发现html2字母变成绿色,说明我们写入的html代码成功执行了,此网站存在html注入。

HTML Injection - Reflected (Current URL)

反射型HTML注入(Current URL)

首先,我们分析下源码
核心代码

 <div id="main">

    <h1>HTML Injection - Reflected (URL)</h1>

    <?php echo "<p align=\"left\">Your current URL: <i>" . $url . "</i></p>";?>

</div>

这段代码中有一段PHP代码,执行html语句,输出一段“Your current URL:”字符,并调用$url变量,将输出的内容跟在后面。

防护代码

$url= "";

        
switch($_COOKIE["security_level"])
{

    case "0" :

        // $url = "http://" . $_SERVER["HTTP_HOST"] . urldecode($_SERVER["REQUEST_URI"]);
        $url = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];                  //$url= ''接受的参数来自请求头HOST和URL
break;

    case "1" :

        $url = "<script>document.write(document.URL)</script>";
        break;

    case "2" :

        $url = "http://" . $_SERVER["HTTP_HOST"] . xss_check_3($_SERVER["REQUEST_URI"]);
        break;

    default :

        // $url = "http://" . $_SERVER["HTTP_HOST"] . urldecode($_SERVER["REQUEST_URI"]);
        $url = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];               
        break;

}


<select name="security_level">
            
            <option value="0">low</option>
            <option value="1">medium</option>
            <option value="2">high</option> 
            
        </select>

阅读防御代码可以了解到根据设置的难度不通,调用的防御代码也不同。

(1)LOW

将等级设置为Low时,执行下面的语句

$url = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];

这里的 $_SERVER[“HTTP_HOST”]表示获取当前域名
这里的 $_SERVER[“REQUEST_URI”]”是获取域名后面的完整的地址路径

通过burp抓包修改host参数,可以发现页面上发生了变化


(2)medium

将等级设置为medium时,执行下面的语句

$url = "<script>document.write(document.URL)</script>";

这里的document对象代表整个HTML文档,可用来访问页面中的所有元素;

document.write()是动态向页面写入内容
document.URL是设置URL属性从而在同一窗口打开另一页面

(3)high

将等级设置为high时,执行下面的语句

$url = "http://" . $_SERVER["HTTP_HOST"] . xss_check_3($_SERVER["REQUEST_URI"]);

这里调用了xss_check_3函数对host后面的部分进行了过滤处理,使得无法进行注入。

HTML Injection - Stored (Blog)

存储型HTML注入

注:反射型页面刷新后就不存在了,而存储型是写入了服务器数据库,刷新后照样存在。
因此,存储型危害性大大大于反射型。
在文本域输入 <p style=”color:red”>HTML </p> 即可成功解析p标签,说明存在HTML注入。

推荐教程:《html视频教程》

以上就是什么是html注入的详细内容!

查看更多关于什么是html注入的详细内容...

  阅读:54次