前言
萌新就要多刷题…
正文
web2
flag在源码的注释里
计算器
改一下text文本框的最大输入位数>1即可
web基础$_GET
GET方式传参即可
web基础$_POST
post方式传参即可
矛盾
$num=$_GET['num'];
if(!is_numeric($num))
{
echo $num;
if($num==1)
echo 'flag{**********}';
}
这题要求传参num不能是数字,而且num=1,一开始没有什么思路,认为是弱类型的绕过,传了true进去,发现无效,问了一下度娘,发现在数字后面加上%00截断,is_numeric()函数就不能识别为数字了…
payload:
123.206.87.240:8002/get/index1.php?num=1%00
web3
这题疯狂弹出对话框,阻止以后查看源码,果然全是alert弹窗,在最下面的注释里发现了一大串编码,不太认识:
问了一下度娘,发现是unicode,直接在线解码即可
域名解析
进入windows/system32/drivers/etc/hosts中添加123.206.87.240 flag.baidu.com,然后直接访问域名即可
你必须让他停下
这题如何让他停下?直接bp抓包拦截,然后一次一次执行,go了几次发现flag
本地包含
<?php
include "flag.php";
$a = @$_REQUEST['hello'];
eval( "var_dump($a);");
show_source(__FILE__);
?>
REQUEST默认情况下包含了
_
G
E
T
,
\_GET,
_GET,_POST 和
_
C
O
O
K
I
E
的
数
组
。
这
题
的
最
终
目
的
就
是
要
看
到
∗
∗
f
l
a
g
.
p
h
p
∗
∗
里
的
内
容
,
e
v
a
l
是
执
行
\_COOKIE 的数组。 这题的最终目的就是要看到**flag.php**里的内容,eval是执行
_COOKIE的数组。这题的最终目的就是要看到∗∗flag.php∗∗里的内容,eval是执行a里的内容,所以直接file(‘flag.php’)就可以
payload:
http://123.206.87.240:8003/?hello=file(%27flag.php%27)
变量1
这题花了点时间研究了一下
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);");
}
?>
理解1:preg_match()是正则表达式的匹配,/^表示开始,KaTeX parse error: Expected 'EOF', got '\w' at position 12: /表示结束,结束字符 \̲w̲包含\[a-z,A-Z,,0-…
a
r
g
s
表
示
的
是
以
args表示的是以
args表示的是以args为变量名的变量;
理解3:
G
L
O
B
A
L
S
[
]
包
含
正
在
执
行
脚
本
所
有
超
级
全
局
变
量
的
引
用
内
容
;
开
头
就
提
示
f
l
a
g
在
变
量
里
,
所
以
只
要
看
看
变
量
里
都
放
了
些
什
么
就
可
以
了
,
a
r
g
s
=
G
L
O
A
B
L
S
就
可
以
将
GLOBALS[]包含正在执行脚本所有超级全局变量的引用内容; 开头就提示flag在变量里,所以只要看看变量里都放了些什么就可以了,args=GLOABLS就可以将
GLOBALS[]包含正在执行脚本所有超级全局变量的引用内容;开头就提示flag在变量里,所以只要看看变量里都放了些什么就可以了,args=GLOABLS就可以将
a
r
g
s
解
析
成
args解析成
args解析成GLOBALS,var_dump打印变量的相关信息
这样就可以显示出所有变量的内容
payload:
http://123.206.87.240:8004/index1.php?args=GLOBALS
Web5
提示是jspfuck,查看源代码,复制下来放到google控制台跑一下
发现了ctf{whatfk},提交提示离答案非常接近,要求是CTF头,所以全部大写提交,成功…
头等舱
打开发现什么都没有…查看源代码也没有什么东西,F12查看一波也没有什么发现,无奈之下用bp截取之后运行…以为有点难,没想到是水题…
网站被黑
嗯,挺漂亮的网页,查看半天也没发现什么奇怪的东西,就扫一波后台目录
发现了index.php和shell.php,打开shell.php如图:
发现需要输入密码,bp抓一波,然后选择passwords字典暴力破解
降序排列一波发现1110匹配项
管理员系统
这题不太会,找到源码中的base64编码
解码以后是test123,输入admin为用户名,test123为密码,发现不能访问,IP禁止访问,请联系本地管理员登录,也就是说需要本地登录才可以进去,所以就尝试着bp抓一波包,从大佬的wp中了解到这题需要伪装成本地访问才可以通过,伪装本地访问的方法就是在headers里面添加如下http头:
X-Forwarded-For:127.0.0.1
弹出flag:
web4
提示查看源码就查看一波源码,发现一大串url编码:
解码后:
function checkSubmit()
{
var a=document.getElementById("password");
if("undefined"!=typeof a)
{
if("67d709b2b54aa2aa648cf6e87a7114f1"==a.value)
return!0;
alert("Error");
a.focus();
return!1
}
}
document.getElementById("levelQuest").onsubmit=checkSubmit;
将67d709b2b54aa2aa648cf6e87a7114f1这一串数字提交到表单里直接出flag…(什么鬼玩意儿)
flag在index里
文件包含题,和nctf的文件包含如出一辙;
payload:
http://123.206.87.240:8005/post/index.php?file=php://filter/read=convert.base64-encode/resource=index.php
解析为base64编码,解码后发现flag
输入密码查看flag
进去发现需要输入5位密码,就直接用burp爆破一下,先设置五位数字爆破
等一下发现出现length不一样的项目,直接找到了flag
点击一百万次
这题你点一下鼠标数值就会加一,
<script>
var clicks=0
$(function() {
$("#cookie")
.mousedown(function() {
$(this).width('350px').height('350px');
})
.mouseup(function() {
$(this).width('375px').height('375px');
clicks++;
$("#clickcount").text(clicks);
if(clicks >= 1000000){
var form = $('<form action="" method="post">' +
'<input type="text" name="clicks" value="' + clicks + '" hidden/>' +
'</form>');
$('body').append(form);
form.submit();
}
});
});
</script>
查看源代码发现只要点击鼠标就会clicks++,method是POST,所以可以直接post一个clicks=1000000过去就可以了
得到flag
备份是个好习惯
提示备份直接进入index.php.bak,发现如下,是一个弱类型的MD5绕过,构造MD5值为0e开头的值就可以了
<?php
/**
* Created by PhpStorm.
* User: Norse
* Date: 2017/8/6
* Time: 20:22
*/
include_once "flag.php";
ini_set("display_errors", 0);
$str = strstr($_SERVER['REQUEST_URI'], '?');
$str = substr($str,1);//返回从1到后面的字符
$str = str_replace('key','',$str);//key替换为''
parse_str($str);//字符串解析到变量
echo md5($key1);
echo md5($key2);
if(md5($key1) == md5($key2) && $key1 !== $key2){
echo $flag."取得flag";
}
?>
去掉第一个字符后,用’'替换key,也就是直接去掉key,然后字符串解析到变量,构造payload:
http://123.206.87.240:8002/web16/?kekeyy1=s878926199a&kekeyy2=QNKCDZO
持续更新…