bugku - Web(1~20)

刚 刚 入 门 C T F , 如 有 错 误 , 望 大 佬 指 教 \color{red}{刚刚入门CTF,如有错误,望大佬指教} CTF

1.web2

这题直接右击查看页面源代码即可

2.计算器

在文本框内发现只能输入一位数字,在框内右击-查看元素,发现“maxlength=1”,将其值改为较大的,然后在框内输入正确的值,点击验证,出现flag。

bugku - Web(1~20)_第1张图片

3.web基础$_GET

由题分析,what = flag的时候,会出现flag,重新构造网址:
http://123.206.87.240:8002/get/?what=flag, 页面上面显示

bugku - Web(1~20)_第2张图片

4.web基础$_POST

分析可知,这题与上面的极为相似(在火狐浏览器附加组件中下载hackbar,在页面右击查看元素可找到hackbar)
bugku - Web(1~20)_第3张图片
页面显示

bugku - Web(1~20)_第4张图片

5.矛盾

此题需要搞清楚php中=== 和 ==的区别(===会比较两个变量的类型和值

而==只比较他们的值)。分析代码,要想进入if代码里面需要满足给num的值不是数字,但进入里面需要num为1.有没有很困惑?不慌。其实因为num变量是与1比较,在比较的时候会默认把num转化为数字型。于是我们构造payload来绕过:http://123.206.87.240:8002/get/index1.php?num=1a
只要在1后面加上任意非数字字符就能绕过。

参考链接:https://www.jianshu.com/p/ec7ef77b67a2

bugku - Web(1~20)_第5张图片

6.web3

点击阻止创建对话框,右击查看网页源代码,在最后发现


查找在线解码工具http://tool.chinaz.com/Tools/urlencode.aspx
bugku - Web(1~20)_第6张图片

7.域名解析

题目:

bugku - Web(1~20)_第7张图片

这题需要改变hosts文件(C:\Windows\System32\drivers\etc),

访问flag.baidu.com得到flag

8.你必须让他停下

打开链接,发现有好多张图片一直在动,要看到每页的源码显然是不可能的,这个时候就需要burp suite进行抓包,我也是第一次使用此工具。参考链接:https://t0data.gitbooks.io/burpsuite/content/chapter2.html,在火狐浏览器里面配置好代理,看到页面,可知配置成功。

bugku - Web(1~20)_第8张图片
打开Burp Suite软件 — 点击Proxy — 点击Action(选择send to repeater ) — 点击repeater — 一直点击go,知道在Response页面的Raw选项出现如下内容,即为成功。

9.本地包含

先了解一下$_REQUEST:https://www.php.net/manual/zh/reserved.variables.request.php
由于本题已挂,所以只介绍一下做题方法:https://blog.csdn.net/dyw_666666/article/details/82389457#comments

10.变量1

PHP中全局变量global和$GLOBALS[]的区别分析:

global KaTeX parse error: Expected 'EOF', got '&' at position 8: var其实就是&̲GLOBALS[‘var’],调用外部变量的一个别名而已。PHP的全局变量和C语言有一点点不同。在C语言中,全局变量在函数中主动生效,除非被局部变量笼罩。这可能引起一些问题,有些人可能漫不经心的转变一个全局变量。PHP中全局变量在函数中应用时必须用global申明为全局。PHP的Global变量的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件。

知只要运行 eval(“var_dump($$args);”),就能得到flag.这是需要构造一个GET参数,

bugku - Web(1~20)_第9张图片
所以,只需给变量传一个全局数组变量即可,构造get参数:

http://123.206.87.240:8004/index1.php?args=GLOBALS

即可得到flag:

bugku - Web(1~20)_第10张图片

11. web5

看到这种问题,第一反应就是查看网页源代码:结果发现好多的"(+[]"这种符号,不要慌,这其实就是题中说的JSPFUCK,其实这是一串js代码,可以放在控制台去执行。复制源码中的所有这些代码,然后去控制台粘贴,回车

你以为这就完了????别忘了,是要大写的。

所以答案是: C T F { W H A T F K } \color{red}{CTF\{WHATFK\}} CTF{WHATFK}

12.头等舱

说实话,刚点开链接,看见页面显示“什么都没有”,想着真棒,又有一道题挂了,哈哈哈哈哈哈!两巴掌抽死我自己吧!做什么白日梦。
解决方法:打开源码,也什么提示都没有。所以可以想到试试抓包,推荐一个新工具 — fiddler,此超链接里面有详细使用方法。发现flag在响应头里面。

bugku - Web(1~20)_第11张图片

13.网站被黑

题中提示实战中经常遇到,那就试一下开御剑扫描后台吧!扫描后发现有两个

bugku - Web(1~20)_第12张图片
选择第二个,使用万能钥匙“admin'-”等弱密码试登录,发现无果。接着开burp进行爆破。分别进行如下操作:点击intruder — payloads。
bugku - Web(1~20)_第13张图片
第一步选择Simple list ,第二步选择burp自带字典Passwords(我的burp软件没有自带的字典)或者导入本地字典(推荐剑眉大侠爆破专用字典)。 点击start attack,接下来就是漫长的等待。
用结果hack登录,成功得到flag。
bugku - Web(1~20)_第14张图片

14.管理员系统

  1. 先随便输入username 和password提交发现显示:“IP禁止访问,请联系本地管理员登陆,IP已被记录”
  2. 检查元素发现base64编码 < ! − − d G V z d D E y M w = = − − > \color{green}{} <!dGVzdDEyMw==> 尝试解码,发现密码为test123,管理员登陆username应该为admin,尝试登陆,未果。
  3. 返回最本质的提示:IP禁止访问,请联系本地管理员登陆,IP已被记录
    得到思路:可以伪装成本地访问(想到HTTP请求头中的X-Forwarded-For)
  4. 方法一:
直接在火狐浏览器里面按F12 — 网络 — 所有 — 刷新页面 — 出现
点击它,右边出现消息头,点击里面状态码(编辑和重发)
bugku - Web(1~20)_第15张图片
点击发送,出现新的POST,再次点击,查看响应,出现
记得格式,所以flag为flag{85ff2ee4171396724bae20c0bd851f6b}

方法二:

在burp里面抓包,然后发送到repeater,在repeater中的headers里添加x-forwarded-for,点击GO,在右面response的raw中出现

注:其实上面的方法原理是一样的,但第一种显然更简单.务必按照顺序进行

15.web4

在控制台运行源代码中(将eval改为alert)

页面弹出
这段js代码里面的if条件里面有一个字符串,不用想太多,直接把他在表单里面提交,然后就看到了flag

16.flag在index里

点击页面出现的连接,发现网址http://123.206.87.240:8005/post/index.php?file=show.php,file=show.php可以想到上传文件文件漏洞,如若访问index.php就能找到flag?不要犹豫,想到就去试。但是如何访问呢?在PHP里面独有个协议:php://filter, 用php://filter/read=convert.base64-
encode/resource=index.php(即以base64加密的方式读取resource的内容)来替换show.php,出现

PGh0bWw+DQogICAgPHRpdGxlPkJ1Z2t1LWN0ZjwvdGl0bGU+DQogICAgDQo8P3BocA0KCWVycm9yX3JlcG9ydGluZygwKTsNCglpZighJF9HRVRbZmlsZV0pe2VjaG8gJzxhIGhyZWY9Ii4vaW5kZXgucGhwP2ZpbGU9c2hvdy5waHAiPmNsaWNrIG1lPyBubzwvYT4nO30NCgkkZmlsZT0kX0dFVFsnZmlsZSddOw0KCWlmKHN0cnN0cigkZmlsZSwiLi4vIil8fHN0cmlzdHIoJGZpbGUsICJ0cCIpfHxzdHJpc3RyKCRmaWxlLCJpbnB1dCIpfHxzdHJpc3RyKCRmaWxlLCJkYXRhIikpew0KCQllY2hvICJPaCBubyEiOw0KCQlleGl0KCk7DQoJfQ0KCWluY2x1ZGUoJGZpbGUpOyANCi8vZmxhZzpmbGFne2VkdWxjbmlfZWxpZl9sYWNvbF9zaV9zaWh0fQ0KPz4NCjwvaHRtbD4NCg== 

将其进行解码,得到flag,(大胆放开思维,打好基础)

bugku - Web(1~20)_第16张图片

17.输入密码查看flag

这题挺简单的,5位数直接在burp里面爆破就行。但是这回在inruder中的payloads里面payload type选择numbers,然后下面的数字范围选择从10000 - 99999,如下图所示。

bugku - Web(1~20)_第17张图片
bugku - Web(1~20)_第18张图片
但是这里有一个问题,就是我直接这样点击attack它会出现错误,提示:No payload positions defined. 查了好长时间,终于找到了解决方法

https://blog.csdn.net/Langtuteng17/article/details/80450354,按照步骤最终得到flag

18.点击一百万次

  • 查看源代码,发现js代码里面,if条件当clicks>=1000000,会提交。
  • F12查看元素,试着改span中间次数,未果。
  • 直接改变POST方法,在hackbar里面直接将clicks>=1000000,直接得到flag。
bugku - Web(1~20)_第19张图片

19 .备份是个好习惯

看到一串字符串(字符串前后重复),直接想到的就是解码,但是试了几乎所有的,毫无意外以失败告终。
用御剑扫描尝试,还是没有结果。(我搜了网上的答案,好多都是用御剑扫出来的,我的也不知道是咋回事)

想到题目提示备份,默认访问的是地址的index.php文件,备份文件的后缀.一般都是这几种:rar .zip .7z .tar.gz .bak .swp .txt .html,经过多次尝试,发现当地址被构造成 http://123.206.87.240:8002/web16/index.php.bak 的时候会得到一个文件。
分析里面的PHP代码可得出结论:要想得到flag,就要使得key1不等于key2,但是他两的MD5只要相等。然后怎样绕过这个,还是参考一下大佬的答案吧!写的很是详细。
大佬答案:http://www.manongjc.com/article/107754.html

20.成绩单

Notice

  • TABLE_SCHEMA=后面是库名的16进制(在线工具转16进制)莫忘记加上* 0× *
  • MySQL数据库特有的表是 —— information_schema.tables,access数据库特有的表是 —— msysobjects,SQLSever数据库特有的表是 —— syobjects
  • union 联合查询适用于有显示列的注入
  • 具体sql注入问题,请访问 https://mp.weixin.qq.com/s/xJVOW5Z4xvl0COSZBWKFYw,十分详细的教程

准备好sql注入:

  1. 获取字段数 :由表中可知,字段数大于等于3,所以 1’ order by 4# —— 有回显; 1’ order by 5# —— 没有回显。可以确定字段数为4
  2. 获取数据库名:-1’ union select 1,2,3,database()# 发现表中显示skctf_flag,猜想这就是数据库名
  3. 获取skctf_flag库名下的所有表名信息:-1’ union select 1,2,3,group_concat(table_name) from information_schema.tables where table_schema=database()# 发现表中显示(fl4g,sc),很显然fl4g是所要爆破的表名
  4. 获取fl4g表名下的列名信息: -1’ union select 1,2,3,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=0x666c3467# 发现表中显示skctf_flag,则这就是要获取的列名
  5. 获取指定列名skctf_flag里面的数据,-1’ union select 1,2,3,skctf_flag from fl4g# 最后得到flag
bugku - Web(1~20)_第20张图片

你可能感兴趣的:(bugku,ctf)