bugku题解

一.本地管理员

知识点:伪造ip地址,解码

1.伪造ip地址 :通过bp抓包,并且添加一条 X-Forwarded-For 数据

2.判断编码

(1条消息) 【Crypto】判断密文的加密方式_兔兔包点吃机的博客-CSDN博客_加密方式判断

30余种加密编码类型的密文特征分析(建议收藏) - 腾讯云开发者社区-腾讯云 (tencent.com)

如何判断一个编码是base64的

* 字符串只可能包含A-Z,a-z,0-9,+,/,=字符
* 字符串长度是4的倍数
* =只会出现在字符串最后,可能没有或者一个等号或者两个等号 

在看题目的源码中,看到这一条,由于他的结尾有两个等号,并且长度为12位,只有 A-Z,a-z,=

所以猜测是 base64编码,拿到在线网站解密,发现

这个应该是密码,结合弱口令,猜测账号是 admin

结合上面两个知识点

 成功拿到flag

二.eval远程代码执行

如图,知识点1: request方式传递参数

(1条消息) PHP $_REQUEST_小小的香辛料的博客-CSDN博客_$_request php

可以理解为 结合了post和get的请求方式,直接 /? 发送或者 构造一个post包发送

知识点2: eval函数

PHP eval() 函数 (w3school.com.cn)

知识点3: var_dump()函数

PHP var_dump() 函数 | 菜鸟教程 (runoob.com)

知识点4:include

PHP Include 文件 (w3school.com.cn)

知识点5 system函数

PHP: system - Manual

代码的意思是:头部引用了flag.php文件(也就是flag所在地),  参数a接受一个 由request方式传递的参数,参数名为 hello, 通过 var_dump 输出a的值(也就是参数具体的值),然后这个值会被当作php命令执行(eval的作用)

由于传递request的参数和get差不多因此我们直接 在url栏 /?hello= 传递即可

 题目转化为远程代码执行,直接用system函数即可

system('find / -name flag')先找一下flag,然后再cat

system(' cat /flag')

 三.变量1

题目提示了flag在变量里,

那一个正则说明了变量要以 字母数字下划线开头和结尾 

$GLOBALS!!!这种全局变量用于在 PHP 脚本中的任意位置访问全局变量

因此我们直接访问GLOBALS即可

(1条消息) Bugku web 变量1_酥酥糖学习的博客-CSDN博客

(1条消息) 正则匹配详解_识醉沉香的博客-CSDN博客_正则匹配

四.什么也没有

1.考虑目录扫描

2.考虑bp抓包

五.source

(1条消息) bugku-source-wp详解_forever4024的博客-CSDN博客_bugku wp

直接f12看

拿去base64解码,发现flag是假的,

目录扫描一下 

确定是git的信息泄露

git泄露知识点 

(1条消息) CTFHUB中的git泄露_kllwlick的博客-CSDN博客_ctfhub git

Git 基本操作 | 菜鸟教程 (runoob.com)

(1条消息) ctfhub技能树—信息泄露—git泄露—Stash_山巅自相逢的博客-CSDN博客_ctfhub stash

Log | CTFHub

1.下载.git文件

kali: wget -r http://114.67.175.224:18055/.git
GitHack python2 GitHack.py http://challenge-27567e8a0c3c2b2b.sandbox.ctfhub.com:10800/

2.log

通过日志发现flag

 解法1 通过 git diff比较现版本和之前版本的区别

git diff 版本号

 解法2 通过git reset切换到之前的版本

git reset --hard 版本号

 3.stash

git-stash用法小结 - Tocy - 博客园 (cnblogs.com)

以ctfhub的git泄露中的stash为例,题目的背景是工作人员将flag提交到了stash中,我们需要从stash中提取出flag

解法1

git stash list 查看现有的储藏
git stash show 查看
git stash pop 来重新应用储藏,同时立刻将其从堆栈中移走。

先通过 git stash list 查看stash中的缓存,可以发现,缓存只有一个

所以直接用 git stash pop 移除缓存得到 包含flag的txt文件

解法2

先通过 .git/refs/stash 文件拿到stash中的hash值然后用 diff直接比较两个文件的区别,拿到flag 

注意:如果使用过方法1,方法2就会失败,因为当前版本已经恢复到存有flag的版本了。使用diff就相当于和自己作比较,结果为空。

4.index

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jjj34

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值