BugkuCTF wp

北慕城南 提交于 2020-02-11 16:51:30

MISC

签到题

扫码关注微信公众号即可获得flag

这是一张单纯的图片

图片

用UE打开如图,在ascii码最下面发现一串编码,发现是字符实体编码。

https://www.qqxiuzi.cn/bianma/zifushiti.php

网站在线解码可得flag

隐写

打开图片,先用stegsolve跑一边没有发现什么,LSB也没有什么,用UE打开也没有什么奇怪的。用binwalk跑一边,没有隐藏文件。

图片

所以考虑是不是高度修改,在IHDR后面将高度改大一些,果然发现flag

图片

## telnet

用wireshark打开流量包,在telent包的data中发现flag图片

眼见非实(ISCCCTF)

下载文件后,用UE打开发现是PK开头,则是zip压缩包

图片改后缀后解压得到一个docx文件,猜测可能是zip包。

docx文件本质上就是一个zip压缩包,文件内容在zip压缩包中(文本内容,字体格式等等)。

图片

改后缀为zip后打开

图片

发现一些文件,没有明显的flag信息,但应该就在这些文件里。

一个个用firefox打开,F3快速查找。

图片

得到flag.

啊哒

下载后发现是jpg文件,可能不是LSB隐写(png才有lsb隐写),用stagsolve跑了一下果然没有。用UE打开发现文件比较大,可能有藏东西。

用binwalk跑一下,果然有zip文件。

图片

而且就是flag.txt

在UE中搜binwalk中给出的偏移量,或者直接用UE搜jpeg文件的结尾FF D9

图片

将FF D9后面的另存为zip文件,打开后发现需要密码。

图片图片

返回去看ada.jpg的文件属性,发现有一个16进制编码

图片

使用notepad++的插件16进制转ascii得到密码图片

解压得flag图片

题目提示是某人名字全拼,下载得到的是半截的明星照片,应该可以通过更改PNG的IHDR来得到完整的照片。

不过可以直接拖到百度识图,得到名字为刘亦菲

则flag就是key{liuyifei}

闪的好快

下载是一个快速闪动的gif图片,用stegsolve可以分离出每一帧,然后逐个扫码就得flag。

又一张图片,还单纯吗

用binwalk跑一遍,发现有隐藏的jpeg图片。

图片

用winhex分离出来,得到flag(选的第一个jpeg的偏移量到末尾)

图片

隐写2

用binwalk跑一边,发现有zip压缩包

图片

用winhex提取出来,发现有提示密码是三位数,下面还有一长段话,不过知道密码是三位数就好了

图片

将加密的flag.rar用UE打开发现是pk开头,应该是zip包,则改为zip后,用爆破工具解密

图片

得到密码871

解压后得到一个图片,再用UE打开后,在ascii末尾得到flag

图片

不过似乎是base64加密,再用notepad++解密一下就好

图片

多种方法解决

下载解压后是一个exe文件,但是打不开,用UE打开后发现是base,而且应该是图片

图片

则用在线转换,得到二维码

图片

扫码得flag

宽带信息泄露

提示宽带信息泄露,而且是bin文件,则用RouterPassView打开

图片

提示flag是用户名,则搜索username得flag

图片

白哥的鸽子

文件名是jpg,并用UE打开后是FF D8开头,则就是jpg文件,改后缀后可打开图片

用binwalk跑一遍,没有隐藏文件,用UE打开后在ascii最后发现类似flag的字符串

图片猜测是栅栏密码,用解密工具解密

图片

come_game

下载得文件是一个exe游戏,玩了一下,,发现不可能正常通过。

然后退出发现文件夹中多了save文件和deathtime文件。应该是存档和死亡次数。

图片

修改存档数据应该可以通关,然后发现save文件中的数字对应关卡数

图片

改到5时得到flag

图片

提交发现不对,可能是16进制,再用notepda++转码

不对。。。。。

百度发现格式是SYC不是flag…

隐写3

打开后是半截大白图片,而且是PNG图片,应该可以修改IHDR高度

图片

IHDR后的的第一个4byte是宽,第二个4byte是高。

图片

改到1D0时,出现flag

图片

WEB

web2

网页是不断飞来的滑稽,还越来越快。。

右键打不开源代码,用firefox的F12打开查看器。

图片

发现flag

计算器

进入网页发现是一个数字计算验证码,只能输入一位数。

打开源代码后,发现设置输入最大长度是1

图片

firefox用F12打开查看器后就可以修改前端html参数了

图片

得到flag

图片

web基础$_GET

图片

打开网页后阅读这段php代码就知道用get方式穿参数what=flag就能得到flag

get方式直接在url后面传参

图片图片

得到flag

web基础$_POST

图片

这段php意思是用post方式传参what=flag就能得到flag

用firefox的hackbar插件传参

图片

得到flag

图片

矛盾

图片

查找is_numeric函数

图片

则这段php的意思是num既要不是数字又要是1

由于php的==是弱类型比较,即在比较时会将字符串类型化为相同再进行比较,当字符串开始部分是合法的字符,则使用此字符,若不合法,则其值为0

故可以构建payload:num=1x

得到flag

图片

web3

选择不允许创建更多对话框后,查看源代码。

在最下面发现一串HTML实体编码

图片

在线解码得到flag

图片

域名解析

题目说把 flag.baidu.com 解析到123.206.87.240 就能拿到flag

修改hosts文件,把flag.baidu.com和123.206.87.240关联起来

图片

再访问flag.baidu.com就能得到flag

图片

你必须让他停下

网页不断刷新,有一定几率刷出图片。

当没有图片的时候右键查看源代码,提示flag is here

图片

当图片刷出来时候查看源代码,得到flag

图片

或者用burpsuit不断gogogogo

变量1

图片

阅读这段代码可知,用get方式传参args,并且必须是字母数字下划线。

题目提示flag在变量中,则用var_dump打印出超全局变量$GLOBALS的信息,即是打印所有变量信息。

args=GLOBALSvardump(args=GLOBALS则有var_dump(GLOBALS);

get传参

图片

得到flag

图片

web5

右键打开源代码,发现有一段类似brainfuck编码,拖去解码了下解不开,又根据题目提示,应该是JSFUCK编码

图片

firefox的consol解析不了,用chorme的consol可以解析。

图片

得到flag

头等舱

打开页面,什么也没有。

右键打开源代码,还是什么也没有。

图片

用burpsuit抓包

图片

发现flag

网站被黑

页面抓包没有发现什么信息,源代码也没有什么信息。

提示实战常用,那就用御剑扫后台

图片

打开shell.php,是一个webshell

图片

要输入密码,尝试用burpsuit爆破

图片

得到pass=hack

输入得到flag

图片

管理员系统

打开页面是一个登录界面,尝试admin登录,提示ip禁止访问

图片

查看源代码,在最后面发现了base64加密字符串

图片

解密后是test123,可能是密码或者用户名

绕过ip过滤要用X-Forwarded-For

用burpsuit抓包后添加X-Forwarded-For;127.0.0.1

X-Forwarded-For表示客户端原始地址

127.0.0.1表示本地机(127开头的都是本地回环地址,表示本地虚拟接口)

图片

然后尝试test123是用户名和密码

发现不对

图片

试试用户名为admin,得到flag

图片

web5

打开页面提示查看源代码,那就看源代码。

图片

显然有加密的内容,百度搜一下,是escape加密,用unescape函数就可以解密

直接将源代码中eval改为alert

图片

运行

图片

整理后

图片

将id为levelquest的元素的onsubmit属性设置为checksumit

既是当提交levelquest表单的时候,运行checksubmit函数

函数checksubmit的意思是选取id为password的元素,当它的数据类型不为undefined,并且值为67d709b2b54aa2aa648cf6e87a7114f1时,return!0

否则提示error,光标聚焦

更改输入框的id 为password,然后在输入框输入67d709b2b54aa2aa648cf6e87a7114f1

图片

得到flag

图片

flag在index里

提示flag在index里,打开index.php还是这个页面。

图片

点击’click me’后,从url猜测有文件包含漏洞

图片

则用php://filter读取index.php的源码

构造file=php://filter/read=convert.base64-encode/resource=index.php

其中read=convert.base64-encode是将index.php的源码进行base64加密

得到index.php源码的base64加密

图片

解密后得到源码

图片

得到flag

点击一百万次

打开页面是一个图片,点击后上方的goal就会加一

图片

提示javascript,则用F12打开源码找到javascript代码

图片

由js代码可知用post方式传参clicks=1000000就能得到flag

图片

得到flag

图片

welcome to bugkuctf

习惯性右键打开源代码,发现了php代码

图片

这段代码的意思是用get方式传参到user,file,pass,当user不为空,并且user中的值是welcome to the bugkuctf时,输出hello admin,并且包含file中的文件。

file_get_contents()函数的意思是将一个文件内容读入字符串中,则user必须是文件,可以用伪协议php://input作为文件名,然后post数据作为文件内容。

图片

成功

图片

然后include()存在文件包含漏洞,用php伪协议php://filter读取文件hint.php的源码

构造file=php://filter/read=convert.base64-encode/resource=hint.php

得到源码

图片

base64解码

图片

发现有__tostring()魔术方法,此魔术方法是当Flag类对象被当作字符串使用时(如echo时)触发。

当类Flag中的的file存在时,将file文件的内容以字符串形式输出,并且输出good。

由提示flag.php,则应让类Flag中的file等于flag.php,即可得到flag.php中的信息

再获取index.php

图片

由index.php的内容

可以get传参file=hint.php,即把hint.php包含进来

然后构造Flag对象,将对象中的file设为flag.php,再将此对象序列化后,传参进password

图片

得到

图片

构造txt=php://input&file=hint.php&password=O:4:“Flag”:1:{s:4:“file”;s:8:“flag.php”;}

图片

得到flag

本地包含

图片

有一个很危险的eval()函数,则可以构造任意命令执行

(1)任意命令执行构造为文件包含

构造payload为

?hello=1);include($_POST[cmd]);var_dump(1

即先将var_dump闭合,然后造成eval($_POST[cmd]);,最后再将var_dump的后括号闭合

然后就可以POST命令了

构造POST的payload为

cmd=php://filter/read=convert.base64-encode/resouce=flag.php

图片

点击execute得到回显

图片

base64解码得flag

图片

,,应该是flag{bug-ctf-gg-99}

(2)直接执行命令show_source()回显flag.php内容

构造payload为

?hello=1);show_source(“flag.php”);var_dump(1

得到flag

图片

输入密码查看flag

图片

提示五位密码,很明显可以用Burpsuit进行爆破

设置好服务器代理后,输入测试密码11111,点查看后burpsuit抓到了包

图片

右键send to in intruder,position中选sniper,然后clearpayloadadd,选中密码的payload,add

图片

设置set1,题目提示为5为数,则选payload为numbers,

设置从00000到99999,每次递进为1,位数为5

这里注意每输入一个值都要回车才能确认输入,注意下面的example

图片

然后在option中设置线程数,

这里我觉得越大越好,最高可以设置127,那就127吧

图片

过了一会点一下length,一般和其他不一样的就是正确密码了

图片

在response中直接可以看到flag

图片

备份是个好习惯

图片

试了一下,这一串既不是base64也不是hex

根据题目,备份就是bak文件

试试访问index.php.bak

访问后会下载index.php.bak文件

图片

将index.php.bak改为index.php即可打开文件

代码解析,

只包含一次flag.php

设置php.ini中的dispaly_errors为0

将当前url中的?与其后面部分赋给$str

将?后面部分赋给$str

将$str中的key替换为空,即删掉

将$str中的查询字符串解析到变量中,如key1

输出md5加密的key1与key2

若key1与key2不相等且key1与key2的md5值相等,则输出flag

图片

md5无法解析数组,数组的md5值为NULL,

以此实现最后一个if

可构造key1[]=flag且key2[]=flagg

但是这样会被上面的str_replace()将key删掉,对此可以构造kekeyy来绕过

则构造payload为

?kekeyy1[]=flag&kekeyy2[]=flagg

访问/index.php?kekeyy1[]=flag&kekeyy2[]=flagg

得到flag

图片

成绩单

很明显是sql注入,测试1可以返回,1’不能返回,1‘#正常返回,则可以注入。

先用order by确定有几列数据

图片

图片

测试发现4可以,5不行,则一共有4列。

明显只能输出一组内容,所以要将前面的查询数据置为空,写0。

测试0’ order by 1,2,3,4# 可以返回

图片

则开始查看数据库名,数据库版本,用户名,操作系统

0’ union select database(),version(),user(),@@version_compile_os#

图片

再查看skctf_flag数据库的表

0’ union select 1,2,table_name,table_schema from information_schema.tables where table_schema=‘skctf_flag’#

图片

再查看fl4g表中的列名

0’ union select 1,column_name,table_name,table_schema from information_schema.columns where table_schema=‘skctf_flag’ and table_name=‘fl4g’#

图片

可以查看列的内容了

0’ union select 1,2,3,skctf_flag from skctf_flag.fl4g#

图片

加密

滴答~滴

显然是摩斯密码,工具解密

图片

聪明的小羊

显然是栅栏密码,工具解密

图片

ok

是ook编码,在线解码

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

图片

这不是摩斯密码

是brainfuck编码,在线解码

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

easy_crypto

猜测是摩斯密码,对于密码表,发现0对于.

写一个php脚本来转换

图片得到标准摩斯密码

图片

拿去工具转码,有些字符没有转换成功

图片

再去在线转码

图片

有一些字符被转为javascript的escape编码,再用javascript转一下

图片

是花括号

图片

则flag为flag{m0rse_code_1s_interest1n9!}

简单加密

图片

密文后面有两个AA可能是base64的==

图片

用c看了一下,差4。再用c转一下

图片

是base64,用工具转码得到flag

图片

散乱的密文

开始以为是凯撒密码,仔细一看不太可能因为有数字5

提示2 1 6 5 3 4是置换密码的密钥

不过这个是横着的。。

图片

图片

图片

得到

图片

凯撒部长的奖励

显然是凯撒加密,直接拿去工具跑一下

图片

发现一个读的通的结果,既是flag

+[]-

显然是brainfuck,在线解码

图片

得到flag

.!?

是ook编码,拿去在线解码

图片

一段Base64

是base64,解密后

图片

是escape加密,解密后

图片

是16进制,解密后

图片

是unicode,解密后

图片

是javascript的String.fromCharCode方式

图片

解密得html实体

图片

解密得

图片

还是,在解密

图片

得到flag

flag{ctf_tfc201717qwe}

社工

密码

弱密码,名字加生日。

KEY{ZS19970315}

信息查找

去google搜“今日头条 bugku.cn",得到

图片

打开第一个网页,可能是这个群号

图片

flag就是KEY{462713425}

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!