最近想重新打一遍SQL靶场,前几天刚把phpstudy更新到最新版,然后进行本地SQL靶场练习时,发现报错型注入,无报错显示,自闭了一个早上,终于解决了,花了大量时间,希望这篇文章能让你快速解决而不像我被这个小问题搞了半天
问题描述
搭建本地SQL靶场,可以使用一切正常,但到了第五关的,SQL语句文本错误信息没有正常显示
也就是下图红色框的内容并不显示
问题原因
打开源码通过一系列测试发现我的问题是只是mysql_error()函数无法输出内容但mysql_errno()函数可以输出内容,也就是error和warnings无具体信息显示。
你可以自己试试是不是跟我一样的问题加入代码:
echo (mysql_errno().":".mysql_error())
如果可以输出错误编号却无具体信息可能你的问题和我差不多
下面是我的靶场代码,将上面代码插入测试看看
其实就是在使用时,我们没找到mysql里的错误信息文件。问题在于其实这个文件是存在的只是,mysql文件的配置信息出错了,才导致这个问题。
还有一个测试方法就是,在cmd里使用mysql,打条错误的sql语句提示内容是不是(当然错误代码编号不唯一,重点是后面是Unknown error,不显示具体错误信息)
ERROR 1049 (42000): Unknown error 1049
在你的mysql日志文件也可以看到这样的问题
Can't find error-message file 'F:\mysql\mysql-8.0.15-winx64\share\errmsg.sys'. Check error-message file location and 'lc-messages-dir' configuration directive.
解决方案
找到errmsg.txt文件路径,基本是在mysql/share的文件内
打开mysql的my.ini配置文件,添加或修改配置内容
lc-messages-dir="路径"即可
Ps:我就不写太详细了,太费时间了 awsl 我打靶场去了