---
# System prepended metadata

title: xss之htmlspeclalchars

---

# xss之htmlspeclalchars
- htmlspecialchars()
	- 將字符串中的特殊字符轉換為相應的HTML實體，從而確保這些字符不被解釋為HTML或JavaScript代碼。
	- 預定義字符
		- & 成為 &amp
		- " 成為 &quot
		- ' 成為 &`#039`
		- < 成為 &lt
		- `>` 成為 &gt
- 輸入特殊字符
	![image](https://hackmd.io/_uploads/HybqC208T.png)

	- source page
		- ```php
		  <div id="xssr_main">
		                  <p class="xssr_title">人生之所有苦短,是因为你的xss学习的还不够好</p>
		                  <form method="get">
		                      <input class="xssr_in" type="text" name="message" />
		  
		                      <input class="xssr_submit" type="submit" name="submit" value="submit" />
		                  </form>
		                  <p class='notice'>你的输入已经被记录:</p><a href='&quot;&lt;&gt;?#&#039;666'>&quot;&lt;&gt;?#&#039;666</a>            </div>
		  
		          </div><!-- /.page-content -->
		  ```
		- 可以看到特殊字符已被編碼 `<a href='&quot;&lt;&gt;?#&#039;666'>&quot;&lt;&gt;?#&#039;666</a>`
- 輸入 ``<script>alert("xss")</script>``
	- source page
		- ```php
		  <div id="xssr_main">
		                  <p class="xssr_title">人生之所有苦短,是因为你的xss学习的还不够好</p>
		                  <form method="get">
		                      <input class="xssr_in" type="text" name="message" />
		  
		                      <input class="xssr_submit" type="submit" name="submit" value="submit" />
		                  </form>
		                  <p class='notice'>你的输入已经被记录:</p><a href='&lt;script&gt;alert(&quot;xss&quot;)&lt;/script&gt;'>&lt;script&gt;alert(&quot;xss&quot;)&lt;/script&gt;</a>            </div>
		  
		          </div><!-- /.page-content -->
		  ```
		- 單引號未被編碼
- payload
	- 加上單引號來閉合href中的單引號
	- `' onclick='alert(111)'`
	- 輸入後發現單引號被編碼了
		- ```php
		  <p class='notice'>你的输入已经被记录:</p><a href='&#039; onclick=&#039;alert(111)&#039; &#039;'>&#039; onclick=&#039;alert(111)&#039; &#039;</a>           
		  
		  ```