首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >zctf web100的简单分析

zctf web100的简单分析

作者头像
ChaMd5安全团队
发布2018-03-29 11:20:58
7410
发布2018-03-29 11:20:58
举报
zctf web100的简单分析

From ChaMd5安全团队核心成员 Pcat

web100

xctf2017第二站的zctf,web100的链接点开之后,只看到ha?一个

作为ctf的web第一题,题目简介是“简单点”,那么先查找源代码、header等信息,没发现什么有用的,于是直接上简单的扫描器,扫到了一个1.php,进去后是phpinfo();的界面

翻阅一番后没发现什么,估计是个坑。于是回到index.php,继续看那个ha?,按以往经验,ctf的web题一部分是有源码的(让人可以源码审计,不然纯黑盒测试就太难了),所以先尝试常见的源码备份,幸运的是访问.index.php.swp(最前面有一个点,表示是隐藏文件,.swp文件是因为vi不正常退出产生的)有效,右键查看源码即可得到如下源码。

源码分析如下:

1. get提交flag参数

2. flag中不能等于15562

3. flag中要包含zctf字样

4. md5(flag)的中间16位要跟md5(15562)中间16位相等

(php的substr(string,start,length)相当于python的string[start:start+length])

只要满足以上提交就可以得到flag

前3点都简单,关键是第4点,要md5相同,那么我们先算15562的md5值,45961dd50e46379442318098474e0ced ,中间16位是0e46379442318098

这个0e46379442318098很特别,0e开头,跟着14个数字,在php弱类型转换中,可以转换为0(0e这种可以视为数字的科学计算法)

所以一个思路就是我们也找一串字符串,包含zctf字样,然后其md5值的中间16位以0e开头,并且后面带着14位数字(不能含a-f十六进制的,0e头跟0x头不同)

依照这个思路,我编写了如下的py文件

代码中建议用re.match来匹配0e字符串就简单,其他的只要符合刚才分析的思路即可,运行后得到的值(不管多长,我们这里没追求优化),get提交即可得到flag。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ChaMd5安全团队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档