Web2
查看网页源代码
计算器
方法一:发现只能输入一个字符,修改源码
方法二:
该验证码并没有用表单验证,那该题是用什么验证机制呢?
之后查看js文件,发现了flag
Web基础$_GET
题目给了很明显的提示
Web基础$_POST
由POST请求方法可知只要传递相应参数即可获得相应内容
方法一:hackbar
方法二:BurpSuite抓包
方法三:python的requests模块
import requests
value = {"what": "flag"}
r = requests.post("http://123.206.87.240:8002/post/", value)
print(r.text)
矛盾
num既不能是数字字符,但是要等于1
我们可以想到用其他方法表示数字1,既不是纯数字,其值又等于1
科学计数法num=1e0.1
num=1xx,php判断字符串以1开头即可判断等值
Web3
一直出现弹框
KEY{J2sa42ahJK-HS11III}
unicode编码转换
域名解析
域名解析:
域名解析是将域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程。域名的解析工作由DNS服务器完成。
尝试直接访问
400状态码
400是一种HTTP状态码,告诉客户端它发送了一条异常请求。400页面是当用户在打开网页时,返回给用户界面带有400提示符的页面。其含义是你访问的页面域名不存在或者请求错误。主要分为两种。
1、语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求。
2、请求参数有误。 400的主要有两种形式:
1、bad request意思是“错误的请求";
2、invalid hostname意思是"不存在的域名”。
通常只用Windows主机才会出现这样的字样,如果是Linux主机,会显示不同的错误提示。bad request invalid hostname出现这个错误的原因是某个域名绑定到了某个主机上,而该主机却没有绑定这个域名,所以IIS就返回了这个提示信息。遇到这个问题怎么办呢?解决方法首先就是Ping一下域名,看看是否解析到空间所在的IP,如果是,再去空间的管理面板看有没有绑定你的域名了,如果有,就可以肯定是空间提供商的问题了,解决这个问题就只能找空间提供商绑定你的域名了,如果自己有这个权限自己绑定域名就可以解决问题。
[1]
ping一下域名,请求找不到主机,应该不是供应商的问题
host
Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。需要注意的是,Hosts文件配置的映射是静态的,如果网络上的计算机更改了请及时更新IP地址,否则将不能访问。
结论:120.24.86.145需要flag.bugku.com作为host头信息接收,返回flag,但flag.bugku.com又不能通过DNS服务器解析。
方法一:修改hosts文件
wiin10没有修改hosts文件的权限,以管理员身份打开cmd然后打开hosts文件
方法二:利用burpsuite修改头部的host信息
将host的信息修改为flag.baidu.com
你必须让他停下
抓包,后台总共有15个jpg,后台会随机返回一个图片,如果jpg为10的时候就能得到flag
本地包含
该题好像出了一点问题,看看别人写的博客吧
https://blog.csdn.net/dyw_666666/article/details/82389457
变量一
flag In the variable ! <?php
error_reporting(0);//关闭php错误提示
include "flag1.php";//引入flag1.php代码文件
highlight_file(__file__);//对文件进行语法高亮显示
if(isset($_GET['args'])){//条件判断 get方法传递的args参数是否存在
$args = $_GET['args'];//赋值给变量 $args
if(!preg_match("/^\w+$/",$args)){//这个正则表达式的意思是匹配任意 [A-Za-z0-9_] 的字符,就是任意大小写字母和0到9以及下划线组成
die("args error!");
}
eval("var_dump($$args);");
}
?>
var_dump() 函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
preg_match 函数用于执行一个正则表达式匹配
可变变量:一个变量的变量名可以动态的设置和使用
eval()函数存在命令执行漏洞 我们的目标是查看flag1.php中的flag 首先想到的是本地包含漏洞查看源码 或者上传一句话木马等思路 。而本题条件判断加了正则表达式判断,过滤了括号和引号等字符。无法构造!
构造payload:
?args=GLOBALS
也可以测试php的九大全局变量:
$_POST [用于接收post提交的数据]
$_GET [用于获取url地址栏的参数数据]
$_FILES [用于文件就收的处理img最常见]
$_COOKIE [用于获取与setCookie()中的name 值]
$_SESSION[用于存储session的值或获取session中的值]
$_REQUEST [具有get,post的功能,但比较慢]
SERVER[是预定义服务器变量的一种,所有SERVER[是预定义服务器变量的一种,所有 _SERVER [是预定义服务器变量的一种
$GLOBALS [一个包含了全部变量的全局组合数组]
$_ENV [是一个包含服务器端环境变量的数组。它是PHP中一个超级全局变量,我们可以在PHP 程序的任何地方直接访问它]
Web5
出现了一行奇怪的东西
JSPFUCK有一个梗
JSFuck(或为了避讳脏话写作 JSF*ck )是一种深奥的 JavaScript编程风格。以这种风格写成的代码中仅使用
[、]、(、)、! 和 +六种字符。此编程风格的名字派生自仅使用较少符号写代码的Brainfuck语言。与其他深奥的编程语言不同,以JSFuck风格写出的代码不需要另外的编译器或解释器来执行,无论浏览器或JavaScript引擎中的原生
JavaScript 解释器皆可直接运行。鉴于 JavaScript 是弱类型语言,编写者可以用数量有限的字符重写 JavaScript
中的所有功能,且可以用这种方式执行任何类型的表达式。
把这一串放到console之后敲回车就可以得到flag
头等舱
抓包,之后重放
得到响应头
题目名字叫头等舱,暗示flag应该在请求头,响应头什么的里面