CTF题,源于bugku
睡前几道小题

不知道怎么找源码:代码能力太差。

$10$t9x/ty500X5nCo97d01oyeTRRxbnWWzLQzLqjFLL7KJWz0RKwpuHK
知道加密加密算法=>直接尝试
不知道算法知道源码=>在源码当中查看加密的方式,获取加密的方法,尝试解密

前端可以看到源代码,后端即使是php也看不到源代码。

变量1

解题

题目源
题目源
得题如上
方向:
1.是不是需要函数绕过?
2.绕过函数后要怎么得到flag值?

<?php
error_reporting(0);
include "flag1.php"; // 导入并且包含
highlight_file(__file__); // 代码高亮显示不执行
if (isset($_GET['args'])) { // 检测get传参有效性
$args = $_GET['args']; // 赋值
if (!preg_match("/^\w+$/", $args)) {
//preg_match函数,检测$args是否符合正则表达式
// 正则表达式:匹配字母数字下划线,至少1个
// 如果匹配正确,返回布尔值1
// !1=null
// 跳过if函数执行后续的eval函数
die("args error!");
}
eval("var_dump($$args);");
// eval函数:将字符串转化为表达式并且执行
}

这里的精髓就是$args传什么参数才能使$$args得到一个有效的值,得到flag。
这里需要引入php的特殊变量:
PHP超全局变量
挨个试一遍,可以发现,传入GLOBALS时得到flag
flag
flag

这道题目除了直接传入GLOBALS外,还有一个办法:使用Burp进行爆破。当然,前提是有php字典。

总结

使用PHP的超全局变量能得到一些意想不到的信息。

头等舱

解题

题
html
得到这题目的第一件事情:转burp抓包,看数据包的头部
解决
flag手到擒来
flag

总结

观察抓取的数据包即可。

社工-伪造

解题

题
题
题
这题有点脑洞大开了……
讲下思路:
原本你问它flag的时候,它是不会回答你的,它的要求是:只告诉它男朋友
尝试使用它给出的男朋友的QQ号去登录时,它会告诉你:思考的方向错了
既然要男朋友才能说,登录QQ号又不给登,那……
原本我打算抓取cookie的,发现Cookie从头到尾都没变动过,就断定这不是思考的方向了。
思来想去,只剩下一个办法:假装是它男朋友。
昵称伪造+头像伪造。这里的昵称伪造是要看昵称对不对的。昵称源QQ号改过一次,原昵称是“小bug”。
尝试昵称+头像的伪装,尝试询问flag:
题
题

总结

人不能太死板,要学会适当情况下 伪造身份 获取相对有用的信息。

source

解题

得题:
题
题
题目提示信息:

  1. 描述:我哥说渗透我只用linux环境
  2. source
  3. 一个网址

解题:

  1. 按照寻常思路,把网址放到御剑去扫,没扫出个所以然,放弃扫描的思路。
  2. 使用GitHack下载文件,发现个假flag……放弃GitHack下载思路。
  3. 使用Linux下载
    1. 使用这个有一个大前提:确定文件夹是否存在。访问文件夹,通过状态码来确定。
    2. 其次就是调用Linux的wget进行递归下载
1. 使用wget下载:wget -r http://114.67.175.224:10746/.git
2. 使用git查找日志:git reflog
# git reflog
d256328 (HEAD -> master) HEAD@{0}: reset: moving to d25632
13ce8d0 HEAD@{1}: commit: flag is here?
fdce35e HEAD@{2}: reset: moving to fdce35e
e0b8e8e HEAD@{3}: reset: moving to e0b8e
40c6d51 HEAD@{4}: commit: flag is here?
fdce35e HEAD@{5}: commit: flag is here?
d256328 (HEAD -> master) HEAD@{6}: commit: flag is here?
e0b8e8e HEAD@{7}: commit (initial): this is index.html


3. 使用git show 切换到指定的分支,得到flag
# git show 40c6d51
commit 40c6d51b81775a1590c1b051d9562222e41c4741
Author: vFREE <flag@flag.com>
Date: Sun Jan 17 20:34:43 2021 +0800

flag is here?

diff --git a/flag.txt b/flag.txt
index aa6f6dc..726e5d1 100644
--- a/flag.txt
+++ b/flag.txt
@@ -1 +1 @@
-flag{nonono}
+flag{git_is_good_distributed_version_control_system}

题

总结

涉及知识点有:

  • Linux wget语法
    • 递归下载:wget -r 你的url
    • wget参考点我
  • git语法
  • 渗透测试之信息收集
    • 开发者不小心上传.git文件所产生的漏洞
    • 源码泄露相关文章点我