之前在ubantu下部署DVWA学习Web漏洞的时候碰到了访问DVWA页面404错误、mysql 1045(28000)错误两个问题,今天有时间写一下解决办法
1.PHP的配置问题(apache2.conf)
默认路径确实是/var/www 但是,在此目录下的php文件时无法打开的,提示404错误,无法找到路径下文件
需要把文件放在/var/www/html下才能找到,但是路径是不需要加/html的
2.mysql 1045(28000)错误解决,需要重置数据库root用户的密码
1)sudo /etc/init.d/mysql stop 暂停数据库服务
2)sudo /usr/bin/mysqld_safe --skip-grant-tables --skip-networking & 跳过密码验证(可能会报错)
2.1) 如果出现2018-09-08T11:50:44.870970Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2018-09-08T11:50:44.872874Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2018-09-08T11:50:44.874547Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
这种错误则执行2.2)
2.2)mkdir -p /var/run/mysqld 自己创建这个目录
chown mysql:mysql /var/run/mysqld 更改文件的所属用户
3) 2.2执行完后,终端不要关闭,打开一个新的终端 , mysql -u root 登录进去
执行 update user set authentication_string=PASSWORD("这里输入你要改的密码") where User='root'; #更改密码
执行 update user set plugin="mysql_native_password"; #如果没这一行可能也会报一个错误,因此需要运行这一行
执行 flush privileges; #更新所有操作权限
执行 quit #退出
4) 重启验证
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
mysql -u root -p
输入正确的密码后进入数据库,原本的那个终端可能会卡死,(我直接关闭了)
$至此DVWA能正确创建数据库了,注意DVWA的config.inc.php文件的配置,账号密码需要和mysql的一致,然后自动跳转到DVWA的login页面
A1:2017 – 注入
将不受信任的数据作为命令或查询的一部分发送到解析器时,会产生诸如SQL注入、NoSQL注入、OS 注入和LDAP注入的注入缺陷。攻击者的恶意数据可以诱使解析器在没有适当授权的情况下执行非预 期命令或访问数据。
防御思路:
--------------官方文档防御思路总述---------------
防止注入漏洞需要将数据与命令语句、查询语句分隔开来。
》 最佳选择是使用安全的API,完全避免使用解释器,或提供参数化界面的接口,或迁移到ORM或实体框架。
》 注意:当参数化时,存储过程仍然可以引入SQL注入,如果PL/SQL或T-SQL将查询和数据连接在一起,或者执行带有立即执行或exec()的恶意数据。
》 使用正确的或“白名单”的具有恰当规范化的输入验证方法同样会有助于防止注入攻击,但这不是一个完整的防御,因为许多应用程序在输入中需要特殊字符,例如文本区域或移动应用程序的API。
》 对于任何剩余的动态查询,可以使用该解释器的特定转义语法转义特殊字符。OWASP的Java Encoder和类似的库提供了这样的转义例程。
》 注意:SQL结构,比如:表名、列名等无法转义,