官方公众号企业安全新浪微博
FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。
FreeBuf+小程序
前言心得总结
此题目考点是对PHP的部分基本知识的掌握情况,以及binwalk或foremost分解工具的熟练使用。
一、首先查看题目,出题页面如下
根据上图hint的提示内容,此题目的Flag应隐藏在图片中,最终需要从图片中拿到Flag。
分析过程
此题目的Flag应隐藏在图片中,最终需要从图片中拿到Flag。得到图片的前提条件是通过post方式传入合适的参数,这里需要理解PHP的相关基础知识。
三、解题过程和结果
1、查看PHP后台逻辑内容,具体如下图:
分析逻辑以后,发现最终打印出flag.php需满足如下条件:
(1)webp的MD5值为e10adc3949ba59abbe56e057f20f883e,后面经过MD5值查询逆运算,算出webp是123456。
(2)a与b的MD5值相等,但是a与b不相同,这里考到了在PHP中数组MD5都是NULL,所以将a和b赋予不相同的数组即可。
(3)当前PHP_INT_MAX 官方最大值为32平台:2147483647,64平台:9223372036854775807,所以c是比最大值小1的数,测试后c为9223372036854775806。
2、知道a、b、c和webp以后,发送请求即可获得flag图片,发送代码如下:
得到图片backImg.jpg
3、根据一开始题目的提示,图片中应该会隐藏flag,所以考虑到使用binwalk或foremost解压缩图片backImg.jpg
本人是在本地的linux系统上安装了binwalk
首先直接wget得到图片,代码如下:
wget http://47.106.172.29:2221/backImg.jpg
然后用binwalk解压图片,代码如下:
binwalk -e backImg.jpg
解压后,得到173A0C.zip,解压173A0C.zip后,就得到含有flag的txt,代码如下:
unzip 173A0C.zip
解压后本地会有trueflag.txt文件,打开后即可获得flag