2019-03-13 BugkuCTF Writeup之Web(Web2——管理员系统)

Web2

最基本的Web题,考察查看网页源代码

按F12查看网页源代码,flag在一条注释里。

总结:在Web题中,查看网页源代码是非常重要的操作,网页源代码里经常有flag、hint或者一些做题必要的信息。

计算器

考察修改页面源代码

答案是两位数字,但是输入框只能输入一个数字。

把这个maxlength属性改掉再输入答案就能得到flag。

web基础$_GET

最基本的Web题,考察提交GET请求,只要稍微有一点PHP基础就可以做

输入what=flag得到flag。

web基础$_POST

同上,但是这个题考察的是提交POST请求

提交POST请求需要用到一个叫做hackbar的插件,使用这个插件,先Load URL,再点Post data,填入what=flag,最后点Execute提交即可。

矛盾

考察使用空字符%00让is_numeric函数将数字判断为字符串

PHP代码显示要求传入“num”参数,其值为1,但是需要is_numeric()函数判断num不是数值型。

is_numeric函数对于空字符%00,无论是%00放在数值的前还是后都可以判断为非数值,所以构造num=1%00,提交得到flag。

Web3

考察查看网页源代码,以及Unicode编码的解码

打开链接发现一直在弹框,屏蔽之。

其实这个效果是使用JavaScript实现的,后面查看网页源代码也没发现有循环结构,所以如果浏览器没有屏蔽弹窗的功能,也可以把它点完。

点完之后什么都没有,查看页面源代码,在脚本的最后发现一串Unicode编码的字符串。

解码得到flag。

域名解析

考察hosts文件的作用——解析域名

根据提示,在hosts文件内添加以下内容:

然后访问一下flag.baidu.com,得到flag。

你必须让他停下

考察Burp Suite中的Repeater模块的基础使用

打开链接发现页面不停刷新,这时候就要用Burp Suite抓包。

抓到数据包之后按Ctrl+R发送到Repeater模块,然后一直点Go到flag出现为止。

其实这道题我看过一些别人的wp,有人是使用禁用JavaScript的方法做的,只不过我不知道怎么做……如果有会这种方法的欢迎指教。

本地包含

这道题貌似挂了,现在打开所有的页面都只有空白页。

等恢复之后再写吧。

变量1

考察$GLOBALS超全局变量

提示“flag in the variable”,就是flag在某个变量里。

var_dump函数的作用如下:

var_dump();———>>输出展示展示代码内容,结构与类型。
该函数作可以窥探所有内容的类型,以及内部信息。
(转自百度百科)

要求传入args参数,这段参数要符合正则表达式。

“args”使用了两个美元符号($)以后,就可以作为一个可变变量的变量了。这时,两个变量都被定义了,$args的内容是我们传入的值,$$args相当于$(我们传入的值),从这里和下面的var_dump函数可以猜测到这里需要用$GLOBALS超全局变量,也就是传入args=GLOBALS。

传入args=GLOBALS得到flag。

Web5

考察查看网页源代码,JSF*ck编码的加密与解密

查看网页源代码发现一些JSF*ck编码的字符串,解码得到一个新的字符串。

题目中提示“字母大写”将新字符串中的字母全部大写后提交,得到提示。

这应该就是flag了,提交了一下,果然是。

头等舱

考察HTTP响应头的查看

用Fiddler抓一下包,就可以在原始响应头里看到flag。

网站被黑

考察使用扫描工具扫描网站后台和使用Burpsuite爆破。

打开一看发现一个黑页,这个鼠标特效还挺好玩的(

在学习期间经常在书上看到有webshell的页面一般都是……/shell.php,打开看了看真的有,不过按正常操作来的话肯定是要先扫一下后台了。

提示输入密码,但是没有任何其他提示,爆破之。

随便写点东西然后抓包,设置爆破位置。

Payload类型我用了Simple list,Options选择Password

开始爆破,在Payload为hack时找到了flag。

管理员系统

考察查看网页源代码、X-Forwarded-For请求头的使用。

打开一看是登录页面,一开始以为是sql注入题。

管理员系统2.png

随便注入了一下发现并不是。

提示“IP禁止访问”,联想到以前做过的一道叫babyweb的题提示“你的IP地址不在允许范围内”,而那道题是使用“X-Forwarded-For: 127.0.0.1”绕过,看来这里也是一样的做法。

在请求头添加X-Forwarded-For: 127.0.0.1,发包。

又报错了,看来还有没注意到的地方。

看了一眼源码发现一条BASE64编码的注释。

解码得到test123,看来这个应该是密码。既然是“管理员系统”,那用户名应该是admin。

输入用户名和密码,发送,抓包,加上X-Forwarded-For: 127.0.0.1,发包,得到flag。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。