Lemon's blog

Bugku—web题总结(一)

Record my learning process of CTF.

字数统计: 1.1k阅读时长: 4 min
2019/08/18 Share

前言:最近做了一些Bugku入门的web题目,感觉web题挺有趣的,并非是得出flag,而是可以通过一个题目学习到很多知识。

域名解析

在这里插入图片描述
题目说把 flag.baidu.com 解析到123.206.87.240 就能拿到flag,如果了解域名解析的原理和系统文件host的作用,那这道题就很简单了。

通俗的话说:域名是为了我们方便记忆,但计算机识别的是IP地址,所以要将域名解析为IP地址才能访问到自己想要访问的网站。而host文件中放的是一些网站的DNS(域名系统)缓存,通过本地解析会提高访问速度,如果没有host系统文件,我们发送请求,服务器端DNS接收解析再返回给客户端,这会慢很多,当然也可以用host文件来屏蔽一些垃圾网站,只要将它解析到一个不存在的IP即可屏蔽。

原理大致就是这样。
在这里插入图片描述
用管理员权限添加上题目所说的域名和IP,再次访问域名,即可得出flag

你必须让他停下

在这里插入图片描述
打开之后一直再刷新,查看源代码发现是用JSsetTimeout('myrefresh()',500)设置刷新,每500毫秒刷新一次页面,有两种方法可以做这到题。
一、在浏览器中禁用JS,然后手动刷新,查看源代码就可找到flag
二、用burp suite抓包
在这里插入图片描述
多点击几次go,就可得出flag

变量1

1
2
3
4
5
6
7
8
9
10
11
12
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);");
}
?>

一道关于正则表达式的web题,/表示的是正则表达式的开始和结束,^或\A 匹配字符串开始位置,\w匹配任意数字或字母或下划线(a-z,A-Z,0-9,_),+匹配1次或多次其前面的字符(相当于可以输入多个字符、数字、或下划线),$或者\Z匹配字符串的结束位置。

提示说flag In the variable ,直接用全局数组变量$GLOBALS可以得出所以变量的值,其中有一个变量是$$args那就构造语句,让变量成$GLOBALS即可。

1
http://123.206.87.240:8004/index1.php?args=GLOBALS

即可得出flag

头等舱

这个没啥好做的,抓一下包就可得出flag

本地包含

在这里插入图片描述
给了一段PHP代码,首先先来搞清一些函数:

1
2
3
4
5
$_REQUEST
默认情况下包含了 $_GET,$_POST 和 $_COOKIE 的数组。
show_source() 函数
show_source() 函数对文件进行 PHP 语法高亮显示。
注释:当使用该函数时,整个文件都将被显示,包括密码和其他敏感信息!

show_source() 函数
方法一、eval函数

前面学习过了命令注入其中eval函数是危险函数,可以将字符串当作PHP进行解析,可以利用这个漏洞构造payload:

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

);闭合前面的var_dump(var_dump(闭合后面的);,构造这样的语句便可以执行我们想要的语句了。
在这里插入图片描述
但是flag不对,查了一下,发现很多人都遇到这个问题,这里应该是网站的问题,就不管了,过程最重要!

方法二:

利用file()get_file_contents函数

1
2
file_get_contents() 函数把整个文件读入一个字符串中
file() 函数把整个文件读入一个数组中。

payload:

1
?hello=file('flag.php')

在这里插入图片描述
payload:

1
?hello=file_get_contents('flag.php')

在这里插入图片描述
方法三:

这道题的题目便是本地本地包含,就用本地包含的方法来做一下:

1
2
3
include()函数和php://filter结合使用
php://filter可以用与读取文件源代码,结果是源代码base64编码后的结果
php://filter/convert.base64-encode/resource=文件路径

payload:
在这里插入图片描述
在这里插入图片描述
正常的话,base64解码即可,但这个题有点问题。

web5

在这里插入图片描述
查看源码,发现是jother编码
jother编码详解 在这里插入图片描述
粘贴到控制台回车即可解码,注意flag转化成大写,题目中有提示:
在这里插入图片描述

网站被黑

在这里插入图片描述
源码什么也没有,其他也没有观察出什么就用御剑扫描一下
在这里插入图片描述
有隐藏目录shell.php
在这里插入图片描述
需要输入密码才能进入,也没有任何提示,一般就是弱口令爆破了

加载字典
在这里插入图片描述
进行爆破,便可得出flag。
在这里插入图片描述

打算继续做,发现网站炸了,打不开,算了这次就先总结到这里,下次继续总结学习。

CATALOG
  1. 1. 域名解析
  2. 2. 你必须让他停下
  3. 3. 变量1
  4. 4. 头等舱
  5. 5. 本地包含
  6. 6. web5
  7. 7. 网站被黑