即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

zctf web100的简单解析

微信 ChaMd5安全团队 107℃ 0评论


   需要转载,请先联系ChaMd5安全团队授权。

  未经授权请勿转载。


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。



本文仅为抛砖引玉之作,我们希望有更多ctf大牛(尤其是re牛、pwn牛)加入我们团队。

首次亮相

感谢ChaMd5安全团队的各位兄弟

比心

#不忘初心,继续前进#

欢迎各位大牛指点   欢迎各位大牛投稿

关于文章的建议和意见都可以留言告诉我们呢

(撒花)

投稿至:admin@chamd5.org





ChaMd5的小八卦全在这里哟~比心❤



…………….ChaMd5安全团队…………….

悄悄的告诉你

关注会有小惊喜

转载请注明:CodingBlog » zctf web100的简单解析

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情
(2)个小伙伴在吐槽
  1. P大 么么哒
    A.P.D2017-02-28 12:51 回复
  2. 受教
    w-qy2017-02-28 12:58 回复