Artigo Diretório
Prefácio
这是我第一次参加的比赛,两天时间一道题都没做出来,害有点小难受,希望能够将WP记录好,方便以后的复习查阅
Wallbreaker 2020
A solução esperada oficialmente não saiu e é incômoda. Aguardo a solução esperada após as finais! ! !
No começo eu mesmo abri o título e descobri que Yazi, que não parecia particularmente difícil, primeiro o verificou phpinfo
, e
então entrei no Ant Sword, mas descobri que além do html
diretório legível, o tmp
diretório é legível e gravável,
e então pensei em usá-lo glob
para arquivar Lendo, http://123.57.91.179:30080/?backdoor=$a=new DirectoryIterator("glob:///*"); foreach($a as $f)%20{echo($f->__toString().' '); }
li um arquivo no diretório raiz readflag
, depois pensei em como chamá-lo,
mas acabei com todas as posturas e não consegui ler .
Depois disso, segui o link https://github.com/mm0r1/exploits/blob/ Master / php7-backtrace-bypass / exploit.php é usado, o WP oficial disse que, desde que a linha 24 seja alterada para (new Error) -> getTrace (), ela pode ser usada.
Faça upload do tmp
arquivo no diretório
douyin_video (sob ataque)
easy_scrapy
Tem um nojento no título MD5截断比较
, coloque um script para evitar se perder
# -*- coding: utf-8 -*-
import multiprocessing
import hashlib
import random
import string
import sys
CHARS = string.letters + string.digits
def cmp_md5(substr, stop_event, str_len, start=0, size=20):
global CHARS
while not stop_event.is_set():
rnds = ''.join(random.choice(CHARS) for _ in range(size))
md5 = hashlib.md5(rnds)
if md5.hexdigest()[start: start+str_len] == substr:
print rnds
stop_event.set()
if __name__ == '__main__':
substr = sys.argv[1].strip()
start_pos = int(sys.argv[2]) if len(sys.argv) > 1 else 0
str_len = len(substr)
cpus = multiprocessing.cpu_count()
stop_event = multiprocessing.Event()
processes = [multiprocessing.Process(target=cmp_md5, args=(substr,
stop_event, str_len, start_pos))
for i in range(cpus)]
for p in processes:
p.start()
for p in processes:
p.join()
Ahhhh, por que fiz assim no início mas não deu resultado. Peguei, mas não posso fazer mal nenhum, sei que a primeira etapa é apenas
um arranhão. Depois de enviar o url, ele irá rastrear e a página irá Os links internos rastejam novamente. A tag a solicitará uma vez e o scrapy suporta o protocolo de arquivo, considere usar o protocolo de arquivo para ler arquivos. Um teste simples descobrirá que o rastreador pegará o link href na página e o rastreará.
Depois de usar /proc/self/environ
o caminho do código de leitura, environ
pode-se ver pwd
se o /code
comando de início de leitura é:
/usr/local/bin/python /usr/local/bin/scrapy crawl byte
ou seja python scrapy crawl byte
. Este é scrapy
o comando para iniciar o rastreador. Lendo o documento, você verá que ele precisa carregar scrapy.cfg
esse arquivo de configuração, então vamos ler o arquivo de configuração e file:///proc/self/cwd/scrapy.cfg
organizá-lo um pouco.
# Automatically created by: scrapy startproject
#
# For more information about the [deploy] section see:
# https://scrapyd.readthedocs.io/en/latest/deploy.html
[settings]
default = bytectf.settings
[deploy]
#url = http://localhost:6800/
project = bytectf
Os projetos criados por scrapy por padrão têm a mesma estrutura e, em seguida, leia a configuração: Bem, vamos dar uma olhada na estrutura do projeto.
Agora que você sabe, leia o settings
arquivo.
BOT_NAME = 'bytectf'
SPIDER_MODULES = ['bytectf.spiders']
NEWSPIDER_MODULE = 'bytectf.spiders'
RETRY_ENABLED = False
ROBOTSTXT_OBEY = False
DOWNLOAD_TIMEOUT = 8
USER_AGENT = 'scrapy_redis'
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
REDIS_HOST = '172.20.0.7'
REDIS_PORT = 6379
ITEM_PIPELINES = {
'bytectf.pipelines.BytectfPipeline': 300,
}
Ah, embora tenhamos visto o endereço do redis e tenhamos um SSRF sem eco, definitivamente tentaremos o redis, mas ele não pode ser usado. Basta tentar descobrir que ele não consegue passar e continuar a ler o código-fonte do rastreador
Link de referência
ByteCTF 2020 conversações oficiais writeup
sobre vários métodos de disable_functions Bypass
XSLeaks atacar análise HTTP cache de cross-site vazamentos para
quebrar as restrições de segurança iframe
[Tradução] Introdução ao XSLeaks atacar
Característica-Policy
scrapy para criar uma estrutura de diretório do projeto e do projeto Apresente o
diretório Linux / proc para explicar
a comparação do truncamento MD5 do CTF