前言:最近做了一些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 | flag In the variable ! |
一道关于正则表达式的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 | $_REQUEST |
show_source() 函数
方法一、eval函数
前面学习过了命令注入其中eval
函数是危险函数,可以将字符串当作PHP进行解析,可以利用这个漏洞构造payload:
1 | ?hello=);show_source("flag.php");var_dump( |
);
闭合前面的var_dump(
,var_dump(
闭合后面的);
,构造这样的语句便可以执行我们想要的语句了。
但是flag不对,查了一下,发现很多人都遇到这个问题,这里应该是网站的问题,就不管了,过程最重要!
方法二:
利用file()
或get_file_contents
函数
1 | file_get_contents() 函数把整个文件读入一个字符串中 |
payload:
1 | ?hello=file('flag.php') |
payload:
1 | ?hello=file_get_contents('flag.php') |
方法三:
这道题的题目便是本地本地包含,就用本地包含的方法来做一下:
1 | include()函数和php://filter结合使用 |
payload:
正常的话,base64解码即可,但这个题有点问题。
web5
查看源码,发现是jother编码
jother编码详解
粘贴到控制台回车即可解码,注意flag转化成大写,题目中有提示:
网站被黑
源码什么也没有,其他也没有观察出什么就用御剑扫描一下
有隐藏目录shell.php
需要输入密码才能进入,也没有任何提示,一般就是弱口令爆破了
加载字典
进行爆破,便可得出flag。
打算继续做,发现网站炸了,打不开,算了这次就先总结到这里,下次继续总结学习。