题目链接:http://ctf5.shiyanbar.com/web/PHP/index.php
打开网页发现页面只有一个
have a fun!!
查看网页源码也没有任何东西
于是直接F12看headers
发现了
跳转到http://ctf5.shiyanbar.com/web/PHP/6c525af4059b4fe7d8c33a.txt
得到源码
<?php
$info = "";
$req = [];
$flag="xxxxxxxxxx";
ini_set("display_error", false);
error_reporting(0);
if(!isset($_POST['number'])){
header("hint:6c525af4059b4fe7d8c33a.txt");
die("have a fun!!");
}
foreach([$_POST] as $global_var) { //这一小段的意思就是将post上去的数据写进数组中
foreach($global_var as $key => $value) {
$value = trim($value);
is_string($value) && $req[$key] = addslashes($value);
}
}
function is_palindrome_number($number) { //判断传入的数据是否为回文数
$number = strval($number);
$i = 0;
$j = strlen($number) - 1;
while($i < $j) {
if($number[$i] !== $number[$j]) {
return false;
}
$i++;
$j--;
}
return true;
}
if(is_numeric($_REQUEST['number'])){ //number不能为整数
$info="sorry, you cann't input a number!";
}elseif($req['number']!=strval(intval($req['number']))){ //intval 将number转换为整数
$info = "number must be equal to it's integer!! "; // 原来的number和intval的number要相等
}else{
$value1 = intval($req["number"]); //将number转换为整数
$value2 = intval(strrev($req["number"])); //将number反序 例如123化为321
if($value1!=$value2){ //为回文数
$info="no, this is not a palindrome number!";
}else{
if(is_palindrome_number($req["number"])){ // 不是回文数
$info = "nice! {$value1} is a palindrome number!";
}else{
$info=$flag;
}
}
}
echo $info;
直接构造number=0.000%00 post即可
%00当遇到is_number函数是会截断,0.000整数为0,反转后为000.0也等于0,故相等