VulnHub PowerGrid 1.0.1靶机渗透

本文详述了对VulnHub PowerGrid 1.0.1靶机的渗透过程,包括信息收集、漏洞利用和权限提升。通过nmap扫描、网页目录遍历、密码爆破等手段,最终获取了root权限,并揭示了靶机中涉及的docker环境和非对称加密技术的应用。
摘要由CSDN通过智能技术生成

​本文首发于微信公众号:VulnHub PowerGrid 1.0.1靶机渗透,未经授权,禁止转载。

难度评级:☆☆☆☆☆官网地址:https://download.vulnhub.com/powergrid/PowerGrid-1.0.1.ova天翼云盘:https://cloud.189.cn/t/2UN7Ffiuqyym百度网盘:https://pan.baidu.com/s/10l8dshcdaLxWL7eGN92U4Q 提取码:r4zc官网简介:靶机会进行计时,即使关闭虚拟机也不会停止,超时后将销毁证据渗透目标:获取root权限,找到4个flag本机地址:192.168.110.27靶机地址:192.168.110.36 

 

信息收集

话不多说,直接上nmap看靶机IP。

nmap 192.168.110.0/24 -sP

本机是192.168.110.27,那靶机就是192.168.110.36。接着扫一下端口。

nmap -A -p- 192.168.110.36

没有打开22号端口可还行,第一次见到这么任性的靶机。没关系,80端口终归还是打开了的,看看网页。

网页端显示了一个计时器,文字说明提示这是一封勒索信,3个小时之内要交250亿欧元,这黑客可是真够黑的。不过,这个网页的最后透露了deez1、p48、all2这几个用户名,需要留意一下。

按照规矩,一般都会遍历一下网页的目录。

dirb http://192.168.110.36

什么也没有可还行,不过按照以前的经验(VulnHub CengBox2靶机渗透),有可能是默认字典不够大,使用dirbuster的字典再扫一次。

dirb http://192.168.110.36 /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -w

发现imag

首先,你需要安装gym-power-grid环境,它是一个OpenAI Gym接口的电力系统仿真器。你可以使用以下命令安装: ``` pip install gym-power-grid ``` 接着,你需要安装其他依赖项,包括tensorflow、keras等。你可以使用以下命令安装: ``` pip install tensorflow keras numpy matplotlib ``` 然后,你需要下载IEEE 30节点系统的数据集。你可以从以下链接下载: https://github.com/Suyi32/Learning-to-Run-Forecasting-and-Resilience-Analysis-of-Power-Systems/tree/master/IEEE30 在下载完数据集后,你可以使用以下代码来运行DQN算法: ```python import gym import gym_power_grid from keras.models import Sequential from keras.layers import Dense from keras.optimizers import Adam import numpy as np # 构建DQN模型 def build_model(input_shape, num_actions): model = Sequential() model.add(Dense(32, activation='relu', input_shape=input_shape)) model.add(Dense(32, activation='relu')) model.add(Dense(num_actions, activation='linear')) model.compile(loss='mse', optimizer=Adam()) return model # DQN算法 def dqn(env, model, episodes): # 定义超参数 gamma = 0.95 epsilon = 1.0 epsilon_min = 0.01 epsilon_decay = 0.995 batch_size = 32 memory = [] max_memory_size = 1000 steps = 0 # 进行多次迭代 for episode in range(episodes): state = env.reset() state = np.reshape(state, [1, -1]) done = False total_reward = 0 while not done: # 选择动作 if np.random.rand() <= epsilon: action = env.action_space.sample() else: action = np.argmax(model.predict(state)) # 执行动作 next_state, reward, done, info = env.step(action) next_state = np.reshape(next_state, [1, -1]) total_reward += reward # 存储记忆 memory.append((state, action, reward, next_state, done)) if len(memory) > max_memory_size: memory.pop(0) # 训练模型 if len(memory) >= batch_size: minibatch = np.array(memory[-batch_size:]) X = np.empty((0, env.observation_space.shape[0])) Y = np.empty((0, env.action_space.n)) for state, action, reward, next_state, done in minibatch: target = reward if not done: target = reward + gamma * np.amax(model.predict(next_state)[0]) q_values = model.predict(state) q_values[0][action] = target X = np.vstack([X, state]) Y = np.vstack([Y, q_values]) model.fit(X, Y, epochs=1, verbose=0) state = next_state steps += 1 # 更新epsilon if epsilon > epsilon_min: epsilon *= epsilon_decay print("Episode: {}, Steps: {}, Total Reward: {}".format(episode, steps, total_reward)) # 运行DQN算法 env = gym.make("PowerGrid30-v0") model = build_model(env.observation_space.shape, env.action_space.n) dqn(env, model, 100) ``` 在这个代码中,我们首先定义了一个`build_model`函数,用于构建DQN模型。然后,我们定义了一个`dqn`函数,用于实现DQN算法。最后,我们使用`gym.make`函数创建了一个名为"PowerGrid30-v0"的gym环境,并使用`build_model`和`dqn`函数运行DQN算法。 请注意,由于IEEE 30节点系统是一个非常复杂的系统,这个代码可能需要较长的时间来运行。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值