,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注入的详细内容!
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did66545
什么是html注入
阅读:54次