从几道CTF学习Blind XXE

0x00 前言

对于传统的XXE来说,攻击者只有在服务器有回显或报错的情况下才能使用XXE漏洞来读取服务器端文件。 例如

<!ENTITY file SYSTEM "file:///etc/passwd">
<username>&file;</username>

如果服务器没有回显,只能通过Blind XXE构造一条外带信道来提取数据,也就是数据外带。

继续阅读从几道CTF学习Blind XXE

一次渗透测试引发Json格式下的CSRF攻击

0x00 前言

漏洞背景

hw时期在电信三巨头之一旗下的子公司出差,做一下渗透测试。公网的业务主挖逻辑漏洞,但是每次挖着挖着就变成了CSRF攻击,出差半个月算是把这辈子的CSRF都给挖完了。

testme师傅说的一句话:开发者修或不修,挖洞者觉得鸡肋不鸡肋,CSRF漏洞就躺着那里。这一次的体会很深,某云基本所有的业务逻辑都存在CSRF洞。

继续阅读一次渗透测试引发Json格式下的CSRF攻击

BUU CTF web(四)

[HarekazeCTF2019]encode_and_encode

 <?php
error_reporting(0);

if (isset($_GET['source'])) {
  show_source(__FILE__);
  exit();
}

function is_valid($str) {
  $banword = [
    // no path traversal
    '\.\.',
    // no stream wrapper
    '(php|file|glob|data|tp|zip|zlib|phar):',
    // no data exfiltration
    'flag'
  ];
  $regexp = '/' . implode('|', $banword) . '/i';
  if (preg_match($regexp, $str)) {
    return false;
  }
  return true;
}

$body = file_get_contents('php://input');
$json = json_decode($body, true);

if (is_valid($body) && isset($json) && isset($json['page'])) {
  $page = $json['page'];
  $content = file_get_contents($page);
  if (!$content || !is_valid($content)) {
    $content = "<p>not found</p>\n";
  }
} else {
  $content = '<p>invalid request</p>';
}

// no data exfiltration!!!
$content = preg_replace('/HarekazeCTF\{.+\}/i', 'HarekazeCTF{<censored>}', $content);
echo json_encode(['content' => $content]); 

继续阅读BUU CTF web(四)

BUU CTF web(三)

[WesternCTF2018]shrine

import flask
import os

app = flask.Flask(__name__)

app.config['FLAG'] = os.environ.pop('FLAG')

@app.route('/')
def index():
    return open(__file__).read()

@app.route('/shrine/')

def shrine(shrine):

    def safe_jinja(s):
        s = s.replace('(', '').replace(')', '')
        blacklist = ['config', 'self']
        return ''.join(['{{% set {}=None%}}'.format(c) for c in blacklist]) + s

    return flask.render_template_string(safe_jinja(shrine))

if __name__ == '__main__':
    app.run(debug=True)

/shrine/路径下可以模板注入

继续阅读BUU CTF web(三)

XXE攻击面的一些总结

0x00 前言

什么是XXE

简单来说,XXE就是XML外部实体注入。当允许引用外部实体时,通过构造恶意内容,就可能导致任意文件读取、系统命令执行、内网端口探测、攻击内网网站等危害。例如,如果你当前使用的程序为PHP,则可以将libxml_disable_entity_loader设置为TRUE来禁用外部实体,从而起到防御的目的。

继续阅读XXE攻击面的一些总结

PHP反序列化学习笔记

0x00 前言

php程序为了保存和转储对象,提供了序列化的方法,php序列化是为了在程序运行的过程中对对象进行转储而产生的。序列化可以将对象转换成字符串,但仅保留对象里的成员变量,不保留函数方法。

php序列化的函数为serialize。反序列化的函数为unserialize

继续阅读PHP反序列化学习笔记

BJDCTF 2020 web

Easy MD5

响应头里的hint告知了sql语句:

select * from 'admin' where password=md5($pass,true)

password=md5($pass,true)

ffifdyop这个字符串被MD5哈希了之后会变成276f722736c95d99e921722cf9ed621c,而这个字符串开头刚好是' or '6 ,而Mysql会把hex转为ascii解释,因此拼接之后的语句正好构成万能密码

继续阅读BJDCTF 2020 web

服务器端请求伪造笔记

0x00 前言

SSRF,Server-Side Request Forgery,服务端请求伪造,是一种由攻击者构造形成由服务器端发起请求的一个漏洞。一般情况下,SSRF 攻击的目标是从外网无法访问的内部系统。漏洞形成的原因大多是因为服务端提供了从其他服务器应用获取数据的功能且没有对目标地址作过滤和限制。

继续阅读服务器端请求伪造笔记