BUGKU Write Up

//20180725发现了这个网站,由于比较菜做做歇歇做了几道题目,分享一下个人解题思路,会持续更新下去直到做完。

//20180726做了两道web以及几道简单的社工和密码

  • 杂项

1.签到题略

2.是一张单纯的图片

Winhex查看发现如下一段编码

BUGKU Write Up

而我们知道以&#开头的是 HTML、XML 等 SGML 类语言的转义序列,所以使用urlencode得到flag

3.隐写

用了一遍winhex,stegslove,都没有发现问题,尝试使用winhex更改图片高度

BUGKU Write Up

第二行0123是宽度,4567是高度,我们将第6列的01更改为11得到flag

4.telnet

下载下来是一个.pcp文件,标题已经暗示了做法,过滤telnet,追踪tcp流得到flag。有关telnet的知识https://baike.baidu.com/item/Telnet/810597?fr=aladdin

5.眼见非实(iscc)

下载后打开更改后缀名为zip,打开后发现有个docx文件,但是打开后并非docx,再次更改后缀名为zip,查看有一堆文件,其实flag在documents.xml里,现在反过来想是对的,因为开始文件夹打开就有一个docx文件,而docx一般就是documents,本人在其他一个.xml里糊涂了,找到了一个像flag的东西,因为是{}格式就怎么提交也不对,后来发现蠢了。

6.又一张图片,还单纯吗?

BUGKU Write Up

通过binwalk分析发现里边还有jpg,对其进行分离得到flag

 

  • Web

1.web 2 看源代码

2.文件上传测试

尝试上传php文件,显示要求jpg文件,反过来也一样,抓包,修改后缀名为.jpg.php get到flag

BUGKU Write Up

3.计算器

修改maxlength

4.web基础$_get

BUGKU Write Up

  1. web 5

查看源代码,控制台跑一下

BUGKU Write Up

6.矛盾

BUGKU Write Up

分析代码,is_numeric语法要求num不能是数字或者是字符串,但是有要求num值为1,这时候需要用到科学计数法,构造?num=1*10^0得到flag。相似的360的一道题目

<?php

$num = $_GET['num'];

if(is_numeric($num)){

echo "Fuck it!";

}else{

if($num == 8){

echo "You got it!";

}

echo $num;

}

?>

这里也用到了这个函数,bypass方法:test.php?num=8 在 8 后面加任何除数字之外的字母或者符号即可绕过。比如 test.php?num=8a,甚至test.php?num=8%20,加一个空格就可以绕过。具体的可以参考这篇文章Ddctf.didichuxing.com/challenges

7.web3

查看源码,Unicode

8.sql注入

查看源代码gb2312应该是存在宽字节注入,也就是注入的时候会将’转义为\’,通过输入%df’转移之后为%df%5c’,%df%5c这两个字节就会被合并成汉字 運,后面的’就被释放出来了。 宽字节注入nctf平台也有到题目,有兴趣的可以看下,宽字节漏洞分析:https://blog.csdn.net/wy_97/article/details/77389088

题目已经说了是一道注入题,那么我们则需要找到注入点,一般思路’闭合导致注入,使用?id=1等数字进行测试,发现除了0,1之外其他数字都会导致页面的改变。

BUGKU Write Up

我们进行测试输入%df’会报错如下图所示

BUGKU Write Up

%df' union select 1,2 %23

BUGKU Write Up

Key值为2的地方则是注入点

%df' union select 1,database() %23

BUGKU Write Up

根据题意查询key表,id=1的string字段构造url?id=%df' union select 1,string from sql5.key %23或者%df' union select 1,string from sql5.key--+得到flag

9.域名解析

听说把 flag.bugku.com 解析到120.24.86.145 就能拿到flag,意思是将flag.bugku.com 解析到120.24.86.145,打开hosts文件,路径为C:\Windows\System32\drivers\etc ,如果出现了没有权限的情况,点击文件-windowspowershell-以管理员身份运行,输入cmd-回车-notepad hosts,打开hosts文件,这是修改后就可以保存,运行网站,即可拿到flag

BUGKU Write Up

BUGKU Write Up

 

BUGKU Write Up

10.你必须让他停下

Bp抓包,go

11.变量1

flag In the variable ! <?php  
error_reporting(0);
include "flag1.php";
highlight_file(__file__);
if(isset($_GET['args'])){
    $args $_GET['args'];
    if(!preg_match("/^\w+$/",$args)){
        die("args error!");
    }
    eval("var_dump($$args);");//$$可变变量涉}
?>

代码审计,发现最后一行$$,在php中$$是可变变量,可变变量可以参考https://www.jb51.net/article/68950.htm

BUGKU Write Up

在这个时候我们要用到$GLOBALS ,引用全局作用域中可用的全部变量,$GLOBALS 这种全局变量用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)。PHP 在名为 $GLOBALS[index] 的数组中存储了所有全局变量。变量的名字就是数组的键。构造url?args=GLOBALS得到flag。

12头等舱

抓包

13web4

解密得到

function checkSubmit(){

    var a=document.getElementById("password");

    if("undefined"!=typeof a)

    {

        if("67d709b2b54aa2aa648cf6e87a7114f1"==a.value)

            return!0;

        alert("Error");

        a.focus();

        return!1

    }

}

document.getElementById("levelQuest").onsubmit=checkSubmit;

提交67d709b2b54aa2aa648cf6e87a7114f1得到flag

14flag在index里

可以看到关键词file,所以应该是文件包含,构造url得到base64加密的内容解密得到flag

http://120.24.86.145:8005/post/index.php?file=php://filter/read=convert.base64-encode/resource=index.php

15输入密码查看flag

提示说请输入五位数密码,而且url写到了baopo,所以我们使用bp进行**

网页随意输入一个五位数进行抓包,send to intruder进行暴力**,

BUGKU Write Up

Clear不需要**的内容,对我们需要**的加上标识,

BUGKU Write Up

由于已经说是五位数字了,所以我们选择数字,变量只有一个所以payload set为1,设定范围,开始attack

BUGKU Write Up

在结果里找到与其他不一样的那一个则是我们需要的内容。

三、社工

1.密码

猜测flag为姓名+生日

2.信息查找

百度bugku.cn然后看你找到了什么

3.信息查找

百度一个社工库然后翻下墙找下flag

四.加密

1.滴答~滴

摩斯码了解一下?

2.聪明的小羊

栅栏密码了解一下?

3.Ook!

开始也不知道这个是什么,问了下度娘,原来是一种编程语言,解码一下得到flag

https://www.splitbrain.org/services/ook