[BJDCTF 2nd]文件探测

[BJDCTF 2nd]文件探测

那天,我见过的最强剑客,提起了天下最强的宝剑······却早已没了剑心。

记录一道BJDCTF第二次比赛的题目,相比于上一次的题目,这次的题目质量更好,对选手要求更高,这里记录一个web的文件探测;进入题目,花里胡哨的页面没有什么用;查找信息,发现响应包里面有个提示,hint;;home.php我们进去访问一下。

有个提示,显示我们处在system.php之下,我们这里看到url里面有个file;于是想到php伪协议,进行文件源码读取,这里键入php://filter/convert.base64-encode/resource=system;读取system.php的源码;解码;;得到php;;

这里经过代码审计,发现有个危险函数file_get_contents,但是这里false了。我们不能进行任意文件读取,所以只好利用ssrf了;

这里回到system.php页面,发现post提交数据;仔细审计代码,发现提交q1 q2 q3这里读源码看到,并没有对q1采取任何的措施,所以这里可以任意填;

然后我们发现q2提交以后,后面会拼接y1ng.txt 这里我们可以采用一种类似于闭合的方式进行闭合;?s1mple=1;;那么拼接以后就成为了::xxxxxx?s1mple=1.y1ng.txt 这样也算是类似闭合了;这里q3;有点讲究;;

我们看到,访问方法必须是GET和POST开头,但是没有过滤结尾,三个都过去以后进行格式化输出;但是我们看到这里输出的是%d;是数字,肯定无法读取源码;;

但是sprintf()是有格式化字符串漏洞的,我们往里面注%s 就可以打到输出字符串的效果,这里我们应该想到,我们结果$method是和%d连起来的,这里我们为了避免出错,就直接将%d转义,这里的转义并不是 \ 可以转义的,当时在这里卡了一下,后来上网查了一下,发下这里转义是要用到%%,所以我们传入GET%s%就可以将后面的%d转义掉;从而输出字符串;

这里我们ssrf读取admin.php;因为是本地文件包含,所以我们直接http://127.0.0.1/admin.php?s1mple=1 GET%s%,进行admin.php的读取,读取的源码如下,;

这里简单分析了一下,首先亮出了aes的加密方法;;

然后进行了check;;这里我们不难发现,只要不去乱修改cookie,是不会触发的;可以过去;;

然后对你的真实ip进行了判断,并且有回显‘;;

接下来就是重头戏了

用我们的真实ip md5作为session;然后这里需要get传参,必须满足if的条件以后才可以得到flag,否则就返回爬;这里我们可以看一下,两个比较方的生成方式,dect是我们直接get进去的,然而难点就在cipher;

我们知道php是具有为随机性的,他的种子可以被反向爆破出来,(buu有一道题);但是这里出了问题;;具体的原因是因为这里只是取得了种子的长度;然后用不能被破解的函数生成了一个新的随机数,这样就难破解了;;当时就是卡在了这里很长时间,然后仔细想想,怎么绕过去;;这里看到种子是被给了 session 然后赋值给了data;然后再用data进行aes加密,这里如果我们将其置为空,那么也就没有所谓的data,那么加密就是可见的了,;;也算是逻辑上的一个漏洞吧;

那就简单了;;构造poc,进行aes加密,令data置为空,并进行urlencode,然后删除PHPsession;最后go;从而打到效果;;flag是动态的哦~~~~

原文地址:https://www.cnblogs.com/Wanghaoran-s1mple/p/12556228.html

时间: 2024-11-10 12:24:41

[BJDCTF 2nd]文件探测的相关文章

BJDCTF 2nd Writeup

fake google 随便输点什么,url来看不是php,原样回显 那很有可能是ssti了,试试{{config}}有回显,直接打个python3的payload试试 {{().__class__.__bases__[0].__subclasses__()[177].__init__.__globals__.__builtins__['open']('/flag').read()}} 拿到flag old-hack 进去后看到是tp5,题目名字又叫old-attack,也没扫到源码,估计是现成

BUUOJ Misc刷题大作战

你竟然赶我走 随便一个txt文件都可以拿 LSB 当然还有别的,根据里面左右左右变化,在0管道有变化,然后把下面的三个0打钩,导出png,一个二维码,扫出来 乌镇峰会种图 只要会用winhex打开文件就行 rar 四位数密码爆破 qr 扫码 文件中的秘密 属性,备注 ningen binwalk分析+四位数密码爆破 wireshark 点进去 然后就拿到 镜子里面的世界 emm 这道题很迷惑 steg给了提示,然后发现管道有问题,就直接分析,接着就看到了答案, 但是从steg上复制的都是有问题的

WEB安全工程师培训

Web安全工程师训练学院:系统化的知识体系+实战训练,助你成为下一个WEB安全工程师.白帽子或者黑客. 下载地址:http://www.zygx8.com/thread-6125-1-1.html 01WEB基础知识  内容类型:视频 文档 随堂测验 富文本 讨论  课程分类:信息安全与加密 Web安全 技术开发  本课是基础中的基础,通俗易懂的讲解了Web的本质和Web开发的基础知识.对于Web小白,建议从头开始抓紧学习:对于已经有一定Web基础知识的同学,建议快速的过一遍,夯实基础. 预备知

SSRF漏洞分析,利用及其防御

0x00 什么是SSRF SSRF(Server-Side Request Forgery:服务器端请求伪造)是一种有攻击者构造形成有服务器发起请求的一个安全漏洞.一般情况下,SSRF攻击的目标是从外网无法访问的内部系统. 0x01 SSRF是如何产生的 SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制.比如从指定URL地址获取网页完本内容.加载指定地址的图片.下载等. 0x02 SSRF的利用场景 <meta charset="utf-8

FFmpeg源代码简单分析:avformat_open_input()

本文简单分析FFmpeg中一个常用的函数:avformat_open_input().该函数用于打开多媒体数据并且获得一些相关的信息.它的声明位于libavformat\avformat.h,如下所示. /** * Open an input stream and read the header. The codecs are not opened. * The stream must be closed with avformat_close_input(). * * @param ps Po

SSRF

SSRF是什么: SSRF(Server-Side Request Forgery:服务器端请求伪造)是一种由攻击者构造形成由服务端发起请求的一个安全漏洞.一般情况下,SSRF攻击的目标是从外网无法访问的内部系统(大厂商的内网). SSRF产生原因: SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制. 比如从指定URL地址获取网页文本内容.加载指定地址的图片.下载等 常见产生点: 1.weblogic中间件 2.php代码 file_get_co

【经验分享】渗透指定网站的思路

转载:http://tieba.baidu.com/p/4296562184 首先说明我也是菜鸟,只不过花了不少时间在渗透上.下面我把自己会的和大家分享一下.不涉及提权和旁站.只单纯的讲指定站的渗透思路.单丝不成线,独木不成林.哪里讲的不好,请大家指出来,共同进步 [前戏]信息探测:主要是网站的脚本语言.数据库.搭建平台.操作系统.服务器IP.注册人信息.网站防护情况. 简单说一下这些信息的获取方式:1.[目标站的脚本语言识别]1-1 最简单的方法,在域名后面分别加个/index.asp /in

(转)FFmpeg源代码简单分析:avformat_open_input()

目录(?)[+] ===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 FFmpeg源代码结构图 - 编码 [通用] FFmpeg 源代码简单分析:av_register_all() FFmpeg 源代码简单分析:avcodec_register_all() FFmpeg 源代码简单分析:内存的分配和释放(av_malloc().av_free()等)

最佳vim技巧

最佳vim技巧----------------------------------------# 信息来源----------------------------------------www.vim.org         : 官方站点comp.editors        : 新闻组http://www.newriders.com/books/opl/ebooks/0735710015.html : Vim书籍http://vimdoc.sourceforge.net/cgi-bin/vim