• 记一次省赛总结


            一个队伍有三个人,比赛环境中每个队伍有两台靶机,两台靶机上有两个web。

            比赛一共三个小时,前30分钟为修复时间,后两个半小时为对抗时间,每个靶机上都有一个flag,flag半小时刷新一轮。

            根据以往的线下赛的经验,在加固阶段要做的有:

            1.备份源码

                  两台靶机,一个人进行备份已经足够,windows平台上使用scp就行,十分方便,比赛给的两个web都是php写的。

            2.布置抓取流量的waf

                  线下赛布置waf很重要,能够第一时间反应过来自己是怎么被打的,waf 用的是下面这一款,能够记录详细的攻击流量,并且对于一些常见的攻击也能够阻挡,具体的布置方法就是找web目录下所有文件都会包含的config.php或者对于框架性web来说直接找入口文件index.php,然后只需在index.php或config.php中对waf进行包含就可以了,一般放在文件的最前面,包含结束以后,因为waf会进行写日志文件,所以需要给waf写文件的权限,一般靶机的权限是能够给waf chmod写权限的

    https://github.com/dr0op/k4l0ng_WAF

            3.扫后门,找洞

                 按照出题人的一般套路,总会在web目录下的某个文件下留个后门,所以可以使用提前准备好的D盾对之前已经备份下来的web源码进行后门扫面,web1是用原生的php写的,在扫面后检测到web1的目录中发现了n多后门,所以此时应该迅速把所有预留的后门注释掉,并且记下相应的路径,放在批量脚本中。web2是一个框架应用,只存在一个后门,在用D盾扫过后发现后门直接注释即可,除了后门以外就需要手工找洞了。

            4.写批量脚本

            此次比赛本科组一共有44个队伍,因此手动提交flag肯定很慢,因此批量提交flag的脚本需要提前准备好,我们比赛中使用的是学弟写的脚本,脚本会自动读取flags.txt中的flag,其中的格式必须是“ip+----+flag”,flags.txt的flag是批量攻击脚本中写入的

    import requests
    
    ips = []
    flags = []
    def submit_flag_auto(ip,flag):
        url = "http://192.168.80.1/lms/portal/sp/hz_flag.php"
        headers = {
            "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
            "Referer": "http://192.168.80.1/lms/portal/sp/hz_flag.php",
            "Cookie": "SSCSum=11; zlms-sid=hqfg26bm4766uanj9vm3fel9f7; webcs_test_cookie=lms_cookie_checker; lms_login_name=302-13"
        }
        data = {
            "melee_ip":ip,
            "melee_flag":flag
        }
        response = requests.post(url,headers=headers,data=data)
        print(response.text)
    
    with open("flags.txt","r",encoding="utf-8")as f:
        for line in f.readlines():
            line = line.strip()
            line = line.split("----")
            ip = line[0]
            flag = line[1]
            ips.append(ip)
            flags.append(line)
    
    for i1,i2 in zip(ips,flags):
        submit_flag_auto(i1,i2)

              在攻击阶段要做的是:1.利用已有的exp打;2.挖新的洞:3.权限维持

              web2是ashop,也是基于mvc的形式,目录结构如下所示

            index.php也就是入口文件,static和view通常是一些静态文件,config是配置文件,data是数据库文件,model是和数据库交互的文件,那么就需要审计controller文件夹和core文件夹,因为逻辑都在这两个文件夹中,我们在比赛中主要找到了两个web2的洞,一个任意文件读取,一个反序列话漏洞。

           反序列化漏洞:

           

    在index.class.php文件中可以发现这一句,为客户端设置了一个cookie值,并且在login.class.php中进行解序列化,所以我们只需要将payload替换了原始的AshopToken,然后访问login.php就可以触发反序列化漏洞。

    所以我们只需要在客户端替换AshopToken值就可以读取flag文件了.

          任意文件读取:

         

      在index.class.php中存在这样一个show_pic()函数,可以看到最终会调用file_get_contents函数读取$pic变量,那么$pic变量又是调用get函数以后的返回值,在这里我们跟踪get函数,在core文件夹下面存在init.php文件,里面存在如下代码:

        get函数会对超全局数组GET进行transcribe函数,并且检测$_GET[$str]变量是否存在,若存在则返回此变量的值,那么transcribe函数又是进行了什么操作?

      

     transscribe函数实际上会对GET函数消毒处理,但是对于任意文件读取漏洞并不起作用,所以我们只要访问show_pic.php?file=../../../../../../../flag.txt就能访问到flag文件了。

             比赛中的不足:

        虽然提前准备了不死马,但是并没有利用漏洞布置上去,所以下次比赛中应该手速快一点,先利用漏洞布置不死马维持好权限,接下来再批量拿flag。

  • 相关阅读:
    Windows Live Writer介绍及相关问题解决
    阳光盒子火狐浏览器
    Cracking Wifi Wpa-Wpa2 in 5 second——Dumpper V.80.8 +JumpStart+WinPcap
    叮咚recovery——想刷什么包就刷什么包
    vivo s11t线刷救砖过程
    syskey——让你的电脑更加安全
    滑动关机
    QQ空间点赞大法+浏览器自动翻页脚本=点赞根本停不下来
    Kon-boot v2.5介绍与使用方法总结(支持win10)
    Mimikatz的使用心得
  • 原文地址:https://www.cnblogs.com/tr1ple/p/9866276.html
Copyright © 2020-2023  润新知