MoneyBox: 1靶机

文章讲述了通过端口扫描发现FTP弱点,利用匿名登录并进行目录爆破,进而找到隐藏的密钥,使用密钥访问其他账户,最终成功提升到root权限的过程。

主机发现

端口扫描

爆破到了ftp的账号密码,这是ftp的允许匿名登陆,密码为空也是可以的。
ftp 192.168.10.131 输入账号anonymous,密码为空或者anonymous1234也可以,连接上ftp后ls一下,看看有什么内容。

目录爆破发现blogs目录

查看页面源代码

访问目录192.168.10.131/S3cr3t-T3xt/

下拉得到密钥为:3xtr4ctd4t4

找到密钥3xtr4ctd4t4,重新回到查看图片隐写处,输入密钥

得到用户renu,用提示的用户爆破ssh

得到账号和密码login: renu   password: 987654321,连接靶机

得到第一个flag

查看一下history历史命令,ip地址还跟本地有一个同样叫lily的账号,那就是把生成的密钥发送给了本地的lily账户,如果是这样的话就能不用账号密码,用密钥就能够登录lily账户,为了验证这个猜想,执行ssh lily@192.168.10.131

提升为root

得到第二个flag

package ZiXueShiZhan.LingQianMoHe; import java.util.Scanner; public class MagicBox { MoneyBox moneyBox10; MoneyBox moneyBox5; MoneyBox moneyBox2; MoneyBox moneyBox1; MagicBox(){ moneyBox10 = new MoneyBox(10); moneyBox5 = new MoneyBox(5); moneyBox2 = new MoneyBox(2); moneyBox1 = new MoneyBox(1); moneyBox10.setNextMoneyBox(moneyBox5); moneyBox5.setNextMoneyBox(moneyBox2); moneyBox2.setNextMoneyBox(moneyBox1); } public void giveChange(){ Scanner scanner = new Scanner(System.in); System.out.print("请输入货品的钱:"); int goodsMoney = scanner.nextInt(); System.out.print("输入收取的钱:"); int receiveMoney = scanner.nextInt(); if (goodsMoney > receiveMoney){ System.out.println("顾客购物款不足"); } if (goodsMoney < receiveMoney){ moneyBox10.handleChange(receiveMoney-goodsMoney); } if (moneyBox10.success){ System.out.printf("\n找零钱:%d元面值%d张",moneyBox10.moneyValue,moneyBox10.changeCount); } else if (moneyBox5.success) { System.out.printf("\n找零钱:%d元面值%d张",moneyBox10.moneyValue,moneyBox10.changeCount); System.out.printf("\n找零钱:%d元面值%d张",moneyBox5.moneyValue,moneyBox5.changeCount); } else if (moneyBox2.success) { System.out.printf("\n找零钱:%d元面值%d张",moneyBox10.moneyValue,moneyBox10.changeCount); System.out.printf("\n找零钱:%d元面值%d张",moneyBox5.moneyValue,moneyBox5.changeCount); System.out.printf("\n找零钱:%d元面值%d张",moneyBox2.moneyValue,moneyBox2.changeCount); } else if (moneyBox1.success) { System.out.printf("\n找零钱:%d元面值%d张",moneyBox10.moneyValue,moneyBox10.changeCount); System.out.printf("\n找零钱:%d元面值%d张",moneyBox5.moneyValue,moneyBox5.changeCount); System.out.printf("\n找零钱:%d元面值%d张",moneyBox2.moneyValue,moneyBox2.changeCount); System.out.printf("\n找零钱:%d元面值%d张",moneyBox1.moneyValue,moneyBox1.changeCount); } else { System.out.println("\n找零钱失败"); } } } package ZiXueShiZhan.LingQianMoHe; import java.util.Scanner; public class MainClass { public static void main(String[] args) { MagicBox magicBox = new MagicBox(); byte isContinue = 1; while (isContinue == 1) { magicBox.giveChange(); Scanner scanner = new Scanner(System.in); System.out.printf("\n继续输入1,否则输入0:"); isContinue = scanner.nextByte(); } } } package ZiXueShiZhan.LingQianMoHe; public class MoneyBox { public int moneyValue; //小魔盒的面值 public int changeCount; //找零钱数 public boolean success; //找零钱成功吗 private MoneyBox nextBox ; //后继小魔盒 public MoneyBox(int moneyValue){ this.moneyValue = moneyValue; } //用面值moneyValue的钱,把整钱money分解成小于或等于money的零钱 public void handleChange(int money){ int completedChangeTasks = 0; //本小魔盒贡献的零钱 int n =0,sum=0; while (true){ sum = sum +moneyValue; n ++; if (sum > money){ break; } } n--; //本小魔盒可以给出的面值是moneyValue的零钱个数 changeCount = n; completedChangeTasks = moneyValue*changeCount; if (completedChangeTasks == money){ success = true; } else { if (nextBox != null){ //下一个小魔盒负责处理剩余的找零钱任务 nextBox.handleChange(money-completedChangeTasks); } else { success = false; //找零钱失败 } } } public void setNextMoneyBox(MoneyBox nextBox){ this.nextBox = nextBox; } } 解释每行代码的意思
最新发布
10-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

什么都好奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值