今天继续昨天下午刚开始的实验:身份认证与口令加密。
任务1是密码与账户策略:首先搜索gpedit.msc打开组策编辑器,然后在计算机配置的安全设置中打开账户策略,在密码策略中对口令进行设置:开启密码必须符合复杂性要求、设置密码长度不少于6个字符、设置密码最长使用期限为30天、设置强制密码历史数为3。在账号锁定策略中进行如下设置:账户锁定阈值为3,账号锁定时间为3分钟,重置账户锁定计数器时间为1分钟。
任务3是口令强度判断:修改.password.cpp代码,使程序输出正确。需要修改的是字符串用’'表示出来,除了第一个的if,最后一个else不变,其他的都改成else if。
在blog项目中为用户注册模块添加前端口令强度检测。
任务4是明文口令加密:在blog项目中为用户注册模块添加明文口令加密功能,保证用户能正常登录系统。
下午学习的专题是漏洞利用与安全加固。在web应用中,上传功能是用户与服务器进行文件交互的重要手段。每个人都会接触到上传功能,以头像和附件上传功能最为常见。在这个过程中,用户会上传自己的信息,服务器接受到用户端的上传信息后将文件保存到服务器某个目录中。文件上传攻击是指攻击者利用web应用对上传文件过滤不严的漏洞,将应用程序定义类型范围之外的文件上传到web服务器,在上传成功后攻击者即可获得当前服务器的webshell。
SQL注入的成因可以归结为以下两个原因: (1)程序编写者在处理应用程序和数据库交互时,使用字符串拼接的方式构造SQL语句。 (2)未对用户可控参数进行足够的过滤便将参数内容拼接进入到SQL语句中。 最终,用户提交的参数数据未做充分检查过滤即被代入到SQL命令中,改变了原有SQL命令的“语义”,且成功被数据库执行。实验步骤如下:1、打开SQL Injection界面,该界面的功能是通过输入User ID查询Username。2、输入1提交,将正常返回查询结果。3、输入1’提交,将返回一个错误。
4、猜测使用的sql语句可能是:select First name and Surname from 表名 where id=‘输入的id’。
5、输入1’ union select 1,database()#提交,得到数据库名称。
6、输入1’ union select 1,table_name from information_schema.tables where table_schema=‘dvwa’#,得到数据库中的表名。
7、输入1’ union select 1,column_name from information_schema.columns where table_name=‘users’#,得到users表的列名。
8、输入1’ union select 1,concat(user,password) from users#,得到users表的所有用户名和密码。
9、破解所以密码,得到口令的明文
今天学习的内容很多,也很复杂,我学会的不是很多,也不明白其中的道理,只是按部就班的照做,希望有机会能系统的学习全部。