背景:
10月28日的一个早上,老黑一如往常地练习,我测试不破坏,当时我找到sqli-libs 游戏,可是我没有立即开始,于是,奇妙的事情就由php开始了。ubuntu16.04安装相关环境 apache,php,mysql (参考网站),一切都很顺利,但是在启动创建sqli-libs需要的secure数据库时出错了。
问题截图:
应该点击“Setup/reset Database for labs”,进行启动创建数据库。可是结果呢?
竟然卡卡卡卡卡卡卡住了,呃,老黑也东邪php,直接看源码吧!
源码:
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title>SETUP DB</title> 6 </head> 7 8 <body bgcolor="#000000"> 9 10 <div style=" margin-top:20px;color:#FFF; font-size:24px; text-align:center"> 11 Welcome 12 <font color="#FF0000"> Dhakkan </font> 13 <br> 14 </div> 15 16 <div style=" margin-top:10px;color:#FFF; font-size:23px; text-align:left"> 17 <font size="3" color="#FFFF00"> 18 SETTING UP THE DATABASE SCHEMA AND POPULATING DATA IN TABLES: 19 <br><br> 20 21 22 <?php 23 //including the Mysql connect parameters. 24 //include("../sql-connections/db-creds.inc"); 25 include("db-creds.inc"); 26 27 28 $con = mysql_connect($host,$dbuser,$dbpass); 29 if (!$con) 30 { 31 die('[*]...................Could not connect to DB, check the creds in db-creds.inc: ' . mysql_error()); 32 }
发现代码卡在了第28行。所以老黑要解决这个问题。
解决过程:
第一次:猜测是安装mysql的账户不能被localhost之外的电脑访问,索性直接创造一个非root用户和密码。
1.1 登陆mysql,命令:mysql -u root -p
1.2 查看已存在的mysql用户,并创建新用户,并赋权限
1.3 修改php配置文件
1.4 重试网页安装sqli-lib,仍然没有结局问题。
第二次:原本想安装xdebug调试php代码,试图详细查清问题,但是转念又想,我又不是研究php代码,没必要下载安装再调试php代码,为了得到详细错误信息,可以通过其他方式。
2.1 找到apache日志文件,定位到错误信息。切到/var/log/apache2目录下
2.2 没想到竟然是mysql_connect()函数是不被php认识的。google一下,最终发现竟然是php7下已经舍弃了这个函数,太令人难以置信了。参考文章。旋即使用新函数,$mysqli = new mysqli("example.com", "user", "password", "database"); 连接数据库,发现可以连接,但是后续的sqli-lib中的sql命令和php7不兼容,这样修改的地方太多,老黑决定在ubuntu16.04中使用源码安装php5,希望可以兼容!