刷题2024.7.26
[TOC]
一言既出(笔记KEY:intval绕过)
考点:弱类型比较,intval()函数,注释
1 | <?php |
分析代码,传入num,要使num的值等于114514,经过intval()函数后要等于1919810。因此有两种思路:
1.让num的值同时满足这两个条件。比如可以构造num=114514+1919810-114514,传入时进行url编码。
由于是弱类型比较,提取开头数字就等于114514,满足条件1,而经过intval()函数处理,最后就是intval(1919810)==1919810,而不会执行die();
2.让intval()函数后面的直接不执行(注释掉)。传入num=114514);//。
语句在执行的过程中变为:
assert(“intval(114514);//)==1919810”) or die(“一言既出,驷马难追!”);
部分被注释,不在运行,此时执行 echo $flag;
webshell(经验:空白页面查看页面源代码)
打开网站
分析,大致就是执行cmd语句,但会对cmd语句进行反序列化,使用传入的cmd要进行序列化
发现flag.php,再次修改,因为过滤了flag字母,使用tac f*打开。
找到flag
批注:使用cat f*也可以,但是回显是空白,需要查看页面源代码。
评论