解决自建wooyun系统无法使用搜索功能


(以下内容来自学员:阿修罗)

课程

《python武器库定制》里面,第六章第一节,课程提供的虚拟机,使用phpstudy搭建。

#先说问题:

  • 搭建当前站点后可以正常访问页面,做好相应配置
  • 但是在查询时会出现以下问题:
    • 提示在searchbug.php文件下的第84行出现错误
    • 在文件第八十四行,是展示页面结果,实际执行的sql在第(6-8)行进行sql预处理

踩坑

查看当前函数(mysql_num_rows,以为是php版本过高(当前版本5.3),保险起见,还是切换了函数为mysqli_num_row,还是报同样的错误.

尝试处理:

将当前sql语句在前台进行输出

   select * from bugs where wybug_title like '%百度某站%' group by wybug_id order by wybug_date desc

没问题的,符合要求.

sql语句单独放入数据库进行执行,发现会出现如下错误:

Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'wooyun.bugs.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

解决办法

1、找到my.ini(不知道在哪里可以用everything搜索)

2、在配置文件中,[mysqld]下面添加
sql-mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
如果遇到不能保存(拒绝访问),可以将服务停止,将my.ini文件先保存到其他位置,之后再复制到当前mysql的根目录下即可.(测试成功)
3、重启MySQL数据库

触发原因(摘抄自CSDN)

1、原理层面
这个错误发生在mysql 5.7.5 版本及以上版本会出现的问题:
mysql 5.7.5版本以上默认的sql配置是:sql_mode=“ONLY_FULL_GROUP_BY”,这个配置严格执行了"SQL92标准"。
很多从5.6升级到5.7时,为了语法兼容,大部分都会选择调整sql_mode,使其保持跟5.6一致,为了尽量兼容程序。
2、 sql层面
sql执行时,出现该原因,简单来说就是:
由于开启了ONLY_FULL_GROUP_BY的设置,如果select 的字段不在 group by 中,
并且select的字段未使用聚合函数(SUM,AVG,MAX,MIN等)的话,那么这条sql查询是被mysql认为非法的,会报错误…

关键词:乌云镜像


无涯 2024年6月5日 00:05 收藏文档