攻防世界WEB题WriteUp收集
Last Update:
Word Count:
Read Time:
排序方式: 新手模式 -> 全部
难度1
Training-WWW-Robots
访问网站得到以下内容
In this little training challenge, you are going to learn about the Robots_exclusion_standard.
The robots.txt file is used by web crawlers to check if they are allowed to crawl and index your website or only parts of it.
Sometimes these files reveal the directory structure instead protecting the content from being crawled.Enjoy!
题目名字和网站都提到了 Robots
访问robots.txt
1 |
|
得到 fl0g.php
文件位置,访问得到flag
Flag
1 |
|
unserialize3
访问网站得到代码
1 |
|
序列化字符串中表示对象属性个数的值大于真实的属性个数时会跳过__wakeup的执行
PoC
1 |
|
Flag
1 |
|
ics-06
访问网站,是一个管理系统
在左边一列一个个点下去,只有报表中心
可以访问
发现网址中存在id
参数
将请求放入Burpsuite Intruder中,在id
处放置Payload占位符,在右侧选择数值并填写到(To)
扫描完成后,将结果导出为csv
文件并导入Excel
筛选出长度变化最大的一个项
此时 Payload
值为 2333
,即 id=2333
在浏览器中访问得到flag
Flag
1 |
|
view_source
根据题目名称 view_source
已经题目描述知道要查看源代码
查看源代码的几种方式(Edge浏览器)
右键网页 -> 检查 -> 元素 (本题不可用)
右键网页 -> 查看网页源代码 (本题不可用)
直接按F12
Ctrl+U
在网页注释中找到flag
Flag
1 |
|
get_post
答案在题干上
请用GET方式提交一个名为a,值为1的变量
在浏览器地址栏最后添加 ?a=1
请用GET方式提交一个名为a,值为1的变量
请再以POST方式随便提交一个名为b,值为2的变量
curl发送POST请求
Payload
1 |
|
Flag
1 |
|
robots
和Training-WWW-Robots一样,访问 robots.txt
1 |
|
访问 f1ag_1s_h3re.php
得到flag
Flag
1 |
|
backup
答案在题干
你知道index.php的备份文件名吗?
直接访问 index.php.bak
( bak
为 backup - 备份
的缩写,计算机中 .bak
文件通常作为源文件的备份)
Flag
1 |
|
cookie
答在题
访问网站,F12
打开 DevTools
,打开 网络
选项刷新页面
在 Set-Cookie
中找到 cookie.php
,访问后提示
See the http response
还是在 DevTools
,响应标头
中找到flag
Flag
1 |
|
disabled_button
都做过的题,开发者工具把 disabled
删除就行
Flag
1 |
|
weak_auth
题目说随手设了个密码,那就随手输个密码
用户名
admin
密码123456
Flag
1 |
|
simple_php
1 |
|
需要传入a和b两个参数,参数a需要满足 $a==0
和 $a==true
;参数b需要满足 is_numeric($b)
判断为非数值的同时 $b>1234
参数a
首先是参数a,可能的结果只有 true and true
或者 false and false
假设要让 $a==0
为 true
, a的值只能为 "0"
(自动类型转换为数字 0
),此时条件变为 if(true and $a)
在PHP中,0
/ 0.0
/ "0"
/ NULL
/ ""
(空字符串)被认为是false,也就是说此时条件变为 if(true and false)
,不满足题目条件
因此应让 $a
的值不应为数值型字符串
在PHP的松散比较 ==
中,非数字字符串将被转换为 0
,因此当a的值为任意字符串时,$a==0
的结果将永远为true
在接下来的and
判断中,$a
(非空字符串)又将被视为 true
因此参数a的值可以为任意非数值字符串
参数b
接下来是参数b,需要在被 is_numeric()
函数判断为非数值的同时在数值比较中大于1234
is_numeric()
函数用于判断一个字符串是否为数值字符串,当字符串中存在一个非数值字符串时返回false(不是数值字符串)
而PHP中的 >
比较会将字符串从前向后找数值,遇到非数值时停止
基于以上两点,参数b的值可以为 1235a
/ 123456bn
等 任何大于1234的数值
+ 任意个非数值字符
的组合
Payload
1 |
|
Flag
1 |
|
baby_web
答在题,一般来说网站的初始界面都是 index
(.php/.html/…)
访问 index.php
,自动跳转到 1.php
curl访问 index.php
Flag is hidden!
flag被藏起来了,添加 -i
显示相应头,在 FLAG
参数中找到flag
Flag
1 |
|
inget
又有ID又有绕过,直接盲猜SQL注入
猜测SQL语句如下
1 |
|
构造id值使得SQL语句变为
1 |
|
即id值为 ' or ''='
Flag
1 |
|
fileinclude
访问网站
Notice: Undefined index: language in /var/www/html/index.php on line 9
Please choose the language you want : English or Chinese
Hi,EveryOne,The flag is in flag.php
提示flag在 flag.php
开发者工具查看源代码,在注释里找到PHP的源代码
1 |
|
代码从cookie中提取 language
字段并include
构造PHP过滤器读取flag.php内容
Base64解码即可
Payload
1 |
|
Flag
1 |
|
fileclude
访问网站获取源码
1 |
|
第一行中已经include了flag.php,因此flag值可能在注释中
file_get_contents($file2) === "hello ctf"
限定参数file2中内容必须为 hello ctf
通过 php://input
与POST方法绕过
使用过滤器读flag.php内容并转为Base64
Payload
1 |
|
Flag
1 |
|
难度2
upload1
打开网站,只有一个上传点,尝试上传php文件
弹出了javascript的alert警告框,猜测为前端对上传内容做了限制
启用DevTool的替代模式
删除判断后缀的代码
上传成功,蚁剑连接得到flag
Flag
1 |
|
xff_referer
题目提示可以伪造 X-Forwarded-For
和 Referer
,访问网站
ip地址必须为123.123.123.123
向请求头添加 X-Forwarded-For
向请求头添加 Referer
Flag
1 |
|
command_execution
题目提示ping命令没有waf,使用 &&
连接两个命令
使用find
命令搜索文件名flag
127.0.0.1 && find / -name “flag*”
找到flag在/home/flag.txt
, cat出来
Flag
1 |
|
web2
1 |
|
首先使用CyberChef对密文进行初步处理,对应加密代码中的
1 |
|
使用python逆向加密算法得出flag
1 |
|
Flag
1 |
|
Web_php_unserialize
index.php
1 |
|
从上至下共有以下几点
从URL接收
var
参数Base64
解码var参数正则
匹配O:<任意数字>:
或C:<任意数字>:
__wakeup()
将$file的值限定为index.php
反向操作,绕过_wakeup()
序列化字符串中表示对象属性个数的值大于真实的属性个数时会跳过__wakeup的执行
O:4:”Demo”:
1
:{s:10:”Demofile”;s:8:”fl4g.php”;}
O:
+
4:”Demo”:2:{s:10:”Demofile”;s:8:”fl4g.php”;}
最后进行Base64编码
注意
由于变量file的类型为 private
,因此在 Demo
两边各有一个空字节
PoC
1 |
|
Flag
1 |
|
php_rce
题目提示了PHP的Rce,访问网站得到版本为 ThinkPHP V5
存在ThinkPHP 5.0.23/5.1.31 - 远程命令执行漏洞
Payload
1 |
|
Flag
1 |
|
Web_php_include
题目为PHP文件包含,查看源代码
1 |
|
include源由参数page控制,过滤了 php://
,但可以用 phP://
构造过滤器,phP://input
从POST请求体取得PHP代码执行
尝试使用 eval
函数执行命令,报500错误
改用 system
函数成功执行
ls找到文件 fl4gisisish3r3.php
, cat出来
Flag
1 |
|