Web

ezlogin:

进入题目,一开始看到登录框以为是sql注入,于是在用户名和密码都输入单引号确认,发现回显no,又在用户名尝试了万能密码’1 or 1=1#密码随便输入123,发现回显了Invalid password。一番尝试没找到sql注入点但发现用户名密码相同和不同时回显不同,于是查看源码进一步分析。

图片8

Ctrl+u查看源码

图片7

看到提示说要让传入的username和password的MD5值强相等并且username和password弱相等,于是想到如果传入的不是字符串而是数组,不但md5()函数不会报错,结果还会返回null,在强比较里面null=null为true,构造payload,username[]=1&password[]=2。

然后来到如下界面:

图片6

http://121.5.230.65:2006/setu.php?file=setu,这样子表示可能是文件包含漏洞的考点,于是尝试读取一下源码,尝试http://121.5.230.65:2006/setu.php?file=setu.php,发现无法读取,于是尝试文件包含中的伪协议,构造payload:

http://121.5.230.65:2006/setu.php?file=php://filter/convert.base64-encode/resource=setu.php,但是发现还是读不到,一番尝试后想到一开始的?file=setu于猜测是最后加了.php,于是去掉.php的后缀后最终读到了base64加密后的源码。

图片5

Base64解密后结果如下:

图片4

替换了../同时只有在读到特定伪协议时才加上.php后缀,进一步解题要查看提示信息。

图片3

一番尝试后用同样的方法读到了hint.php的base64加密源码,解码后如下:

图片2

有了一半flag然后提示有/answer这个文件路径,结合第二点提示用同样方法读取/answer/flagggg的base64加密后的源码,解码后如下:

图片1

至此就有了完整flag:NUAACTF{H3ll0_Fri3nds!}