Web攻防世界入门题单
Web学习笔记 Writeup
攻防世界入门题单:https://adworld.xctf.org.cn/challenges/problem-set-index?id=25
入门题单教程:https://www.bilibili.com/video/BV1rz4y137dF/(讲的非常通俗,爱了爱了)
1.view_source
题目描述:
1 | X老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了。 |
本题要求就是看网页源代码,按F12,元素里就可以看到flag
flag为:
1 | cyberpeace{34c612f0278f14ab46733186fa21d41f} |
2.get_post
题目描述:
1 | X老师告诉小宁同学HTTP通常使用两种请求方法,你知道是哪两种吗? |
通过上网查询,得知:
HTTP协议中最常用的两种请求方法是GET和POST。
- GET:用于从服务器获取数据,参数通过URL传递(如
/test?name=value),适合非敏感信息的查询,但数据长度受URL限制。 - POST:用于向服务器提交数据,参数放在请求体中(如表单提交),适合传输敏感或大量数据(如文件上传)。
这是HTTP协议中基础且最广泛使用的两种方法,其他方法(如PUT、DELETE等)通常用于RESTful API设计,但日常场景中GET和POST最为常见。
其中,需要注意的是,GET请求的参数必须放在URL的?之后,格式为 ?参数名=值(多个参数用&分隔)。
例如本题,题目第一个要求是
1 | 请用GET方式提交一个名为a,值为1的变量 |
例如本题:
http://61.147.171.103:64044/是**url**,其中**/**后面加参数,根据上面说的规则,应该是下面这种形式:
http://61.147.171.103:64044/**?a=1**
这样我们就构造了一个get请求,然后我们就可以用两种方式来发送:
第一种就是直接访问http://61.147.171.103:64044/**?a=1**这个就能看到改变。
第二种就是使用浏览器插件hackbar,具体安装教程可以上网查询,也可以看我开头给的别的师傅的教程。
使用hackbar:
1.右键鼠标点击检查或者直接F12,上面选项的最右边就是hackbar
2.点击load,会载入现在查看的网页,在你构造完get请求后点击EXECUTE,就可以发现页面发生变化,出现第二个要求:
1 | 请再以POST方式随便提交一个名为b,值为2的变量 |
这里在hackbar里点击USE POST method → 声明请求方法为 POST
在body里填写b=2→ 将参数放入 HTTP 请求体(Body)(参数放在请求体中(如表单提交)这是上面上网查询得到的,hackbar就是完成这一步操作的工具,Body 中的数据是 URL 编码的键值对(格式为 参数名=值),请按此规则解析。)
点击EXECUTE发送即可得到flag:
1 | cyberpeace{7ae8333fd47e586cf2c048df6233108a} |
3.robots
题目描述:
1 | X老师上课讲了Robots协议,小宁同学却上课打了瞌睡,赶紧来教教小宁Robots协议是什么吧。 |
Robots 协议(又叫 robots.txt、爬虫协议)是网站用来告诉搜索引擎爬虫(spider、bot)哪些页面可以抓取、哪些不可以抓取的约定。它本身不是防火墙,也没有强制执行力,只有遵守协议的爬虫才会按指令行动。
1️⃣ 为什么会有这个协议?
- 保护站点隐私:站长可以阻止搜索引擎抓取后台、登录页、临时文件等不希望公开的内容。
- 减轻爬虫负载:通过限制爬取频率(
Crawl‑delay)或排除大文件,避免对服务器造成过大压力。 - 控制搜索结果:只让重要的页面被索引,提高 SEO 效果。
如果站点根目录下没有
robots.txt,搜索引擎默认可以抓取所有非受密码保护的页面[1]。
2️⃣ 文件位置与格式
- 必须放在网站根目录的
/robots.txt(即http://example.com/robots.txt)下[4]。 - 文件是纯文本(ASCII/UTF‑8),每行一条指令,以
#开头的行为注释。
3️⃣ 基本指令(最常见的几条)
| 指令 | 作用 | 示例 |
|---|---|---|
User-agent: |
指定哪类(或全部)爬虫适用本组规则。* 表示 所有爬虫[2]。 |
|
Disallow: |
禁止爬虫访问后面的路径。路径相对于根目录。 | |
Allow: |
允许访问即使上层有 Disallow(用于细粒度放行)。 |
|
Crawl-delay: |
建议爬虫每次请求之间的等待秒数(非所有搜索引擎都实现)[2]。 | |
Sitemap: |
声明站点地图位置(不受 User-agent 限制)[2]。 |
常见写法示例
txt
1 | # 1. 让所有爬虫只能访问根目录,其他全部禁止 |
Disallow:后面可以使用 通配符*(匹配任意字符)和 正则$来匹配文件后缀等[2]。
4️⃣ 扩展/补充方式
| 名称 | 说明 |
|---|---|
| Robots Meta 标签 | 放在页面 <head> 中的 <meta name="robots" content="noindex,nofollow">,对单个页面细粒度控制[4]。 |
| X‑Robots‑Tag HTTP Header | 通过服务器返回头部 X-Robots-Tag: noindex, nofollow,可以对非 HTML 资源(PDF、图片等)设置指令。 |
| 非标准指令 | 如 Allow:(最早不是正式标准,但已被多数搜索引擎接受)[2]。 |
这些方式都是**“自律”**的约定,搜索引擎可以选择不遵守(尤其是恶意爬虫),因此不能把
robots.txt当作安全防护手段[1]。
5️⃣ 使用注意事项(避免常见坑)
- 路径大小写敏感:Linux 主机上
/Admin/与/admin/被视为不同路径。 - 不要在
Disallow中写*代表所有文件(Disallow: *实际会被解释为“禁止访问名为*的文件”),应使用Disallow: /[2]。 - 不要阻止 CSS/JS:如果搜索引擎抓取不到页面的样式或脚本,可能导致页面被误判为低质量。
- 定期检查:可以用
https://www.google.com/webmasters/tools/robots-testing-tool或curl -I https://example.com/robots.txt查看是否生效。 - Sitemap 必须可访问:若在
robots.txt中声明了Sitemap,确保该 URL 返回 200,否则搜索引擎会忽略站点地图。
6️⃣ 小结
- Robots 协议 = 站点根目录的
robots.txt,用来说明**“哪些内容可以被搜索引擎抓取,哪些不可以”**。 - 通过
User-agent、Disallow、Allow等指令,站长可以细粒度控制爬虫行为。 - 它是自愿遵守的规则,并非硬件防护;真正的安全措施仍需通过认证、权限控制来实现。
这样,小宁同学就能在以后写网站或调试爬虫时,快速判断或配置 robots.txt,让搜索引擎与站点和谐相处啦! 🚀
对于本题页面是空白的,查看源代码发现显示flag is not here,所以先访问容器下的robots.txt查看允许我访问什么,例如 http://61.147.171.105:57360/robots.txt,然后页面返回的是:
1 | User-agent: * |
虽然这上面写着 f1ag_1s_h3re.php不能被访问,但是我们仍然可以去访问试试,即http://61.147.171.105:57360/f1ag_1s_h3re.php,发现flag出了:
1 | cyberpeace{a51eb719c6d2ce582fc6781fd17d85f2} |
4.backup
题目描述:
1 | X老师忘记删除备份文件,他派小宁同学去把备份文件找出来,一起来帮小宁同学吧! |
backup就是备份文件的意思
你点击容器后发现页面上有一句话:
1 | 你知道index.php的备份文件名吗? |
备份文件主要后缀名有
.git (git工作目录),.svn, .swp, .~ ,.bak, .bash_history(bash历史指令)
先访问index.php发现还是那个页面,之后不断在后面加后缀,例如:http://61.147.171.105:57073/index.php.bak,
http://61.147.171.105:57073/index.php.git
最后在写到.bak那个后缀的时候你下载到了一个文件:
1 | <html> |
所以,flag为:
1 | Cyberpeace{855A1C4B3401294CB6604CCC98BDE334} |
这里还有第二种解题方式,在你不知道备份文件是什么的前提下,可以使用kali自带的dirsearch,就是路径扫描
命令是
1 | dirsearch -u <target url> |
这样他就会扫描这个网址的全部目录:
1 | ┌──(kali㉿kali)-[~/Desktop] |
1 | [07:19:32] 200 - 500B - /index.php.bak |
这样就发现了,然后如法炮制,即可得到flag.
5.cookie
题目描述:
1 | X老师告诉小宁他在cookie里放了些东西,小宁疑惑地想:‘这是夹心饼干的意思吗?’ |
打开页面是:
1 | 你知道什么是cookie吗? |
Cookie 是网站存储在用户浏览器中的小型文本数据片段,用于识别用户、保存状态或个性化设置,是 Web 交互的基础机制之一。简单来说,它是网站用来“记住你”的小纸条。
怎么看自己的cookie呢?
直接F12在选项:应用,里面可以找到cookie的选项点开可以发现cookie.php,这里我们去访问一下,发现页面出现一句话:
1 | See the http response |
在http协议中,发包叫request,response就是响应的意思,那么响应怎么看呢?
依旧F12,找到选项:网络,重新刷新网页或者ctrl+R强制刷新,打开cookie.php那个响应,在标头界面往下翻可以发现flag:
1 | cyberpeace{18c9da0e745d26b7ab63d5ddd95e0199} |
这里补充几点:
User-agent叫请求标头
host就是我们访问的网址
6.disabled_button
题目描述:
1 | X老师今天上课讲了前端知识,然后给了大家一个不能按的按钮,小宁惊奇地发现这个按钮按不下去,到底怎么才能按下去呢? |
这题涉及到前端知识的简单修改就是修改html代码,让按钮可以点。
打开F12-元素,按中左上角那个小图标,抓取按钮那一部分
可以发现有关前端代码:
1 | <input disabled="" class="btn btn-default" style="height:50px;width:200px;" type="submit" value="flag" name="auth"> |
可以看到是有了disabled我才点不了的,所以干脆把disabled=””删掉,怎么修改呢?
右键点击这个就行了修改完了以后点击其他地方就能生效了,然后再次点击那个按钮,响应完成后就可以看到flag:
1 | cyberpeace{4bc727d4d0fe2ce93f584285046928c0} |
在获得flag后我们复盘一下
发现修改完成之后相当于向后端发送了一个POST请求,请求体是auth=flag,前端也是这么写的:
1 | <form action="" method="post"> |
7.simple_js
题目描述:
1 | 小宁发现了一个网页,但却一直输不对密码。(Flag格式为 Cyberpeace{xxxxxxxxx} ) |
打开以后确实有一个选项框让你输入密码,随便输入一个密码都会提示:FAUX PASSWORD HAHA
这时候我们看看源代码,F12或者ctrl+u都可以,源代码是js代码:
1 | <html> |
这个代码的意思是
主要函数 dechiffre(pass_enc):
- 硬编码了一个密码数组:
70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65 - 将输入的密码字符串按逗号分割成数组
- 通过复杂的索引操作将两个数组组合
实际执行流程:
- 代码在底部调用
dechiffre("\x35\x35\x2c\x35\x36\x2c...") - 弹窗要求用户输入密码
- 将用户输入传递给
dechiffre函数 - 显示处理结果
密码分析: 硬编码的ASCII码 70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65 转换为字符是: FAUX PASSWORD HAHA(意思是”假密码 哈哈”)
就是你不管输入什么密码都会给你返回FAUX PASSWORD HAHA,看似无解其实关键在于
1 | \x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30 |
这个十六进制字符串,用python脚本转换一下,先把十六进制转换为一些数字,再把数字转换成ASCII码就是flag里包裹的内容:
1 | s = "\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30" |
结果为:
1 | ['55', '56', '54', '79', '115', '69', '114', '116', '107', '49', '50'] |
第二行就是我们flag里的字符串,所以flag为:
1 | Cyberpeace{786OsErtk12} |
8.xff_referer
题目描述:
1 | X老师告诉小宁其实xff和referer是可以伪造的。 |
