web1
解答:右击,查看源码;f12;ctrl+u
web2
解答:ctrl+u可以看到flag。
进一步学习:无法右键,无法选择文本,无法f12。
ctrl+u看到源码内容是:
<script type="text/javascript">
window.oncontextmenu = function(){return false};
window.onselectstart = function(){return false};
window.onkeydown = function(){if (event.keyCode==123){event.keyCode=0;event.returnValue=false;}};
</script>
oncontextmenu 事件:在元素中用户右击鼠标时触发并打开上下文菜单。
(上下文菜单(context menu),指的是Windows操作系统中任何地方右击鼠标会出现俗称的“右键菜单”)
onselectstart事件:触发时间为目标对象被开始选中时(即选中动作刚开始,尚未实质性被选中)
onkeydown事件:在用户按下一个按键时执行Javascript代码
keyCode表示键盘编码,编码123为f12。
//取消鼠标右键
window.oncontextmenu = function(){return false};
//禁止用户选中网页上的内容
window.onselectstart = function(){return false};
//按键f12无响应
window.onkeydown = function(){if (event.keyCode==123){event.keyCode=0;event.returnValue=false;}};
键盘编码:
web3
解答:burp抓包,response有flag
进一步学习:
http请求构成:
请求行
请求头部
空行
请求数据
在这里插入图片描述
请求行3个字段构成:请求方法、uri字段、HTTP协议版本字段
请求方法:
GET:从指定资源中请求数据。
POST:向指定资源发送数据进行处理请求。
HEAD:从指定资源中请求响应消息报头(传输状态行和标题部分)。
PUT:向指定资源位置上传其最新内容,可以替换指定资源中的当前内容。
DELETE:请求服务器删除指定资源。
CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。开启一个客户端与所请求资源之间的双向沟通的通道。它可以用来创建隧道(tunnel)。
OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求。
TRACE:路径追踪。请求服务器回送收到的请求信息,主要用于测试或判断。
请求头部:
Header头部 | 解释 |
---|---|
Host | 指定请求的服务器的域名和端口号 |
Content-Length | 请求的内容长度 |
Accept | 指定客户端能够接受的内容类型 |
X-Requested-With | Ajax异步请求 |
User-Agent | 发出请求的用户信息 |
Content-Type | 请求的与实体对应的MIME信息 |
Origin | 指明当前请求来自哪个站点 |
Referer | 先前网页的地址,当前请求网页紧随其后 |
Accept-Encoding | 指定浏览器可支持的web服务器返回内容压缩编码类型 |
Accept-Language | 浏览器可接受的语言 |
Cookie | HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器 |
Connectiont | 表示是否需要持久连接(HTTP 1.1默认进行持久连接) |
Date | 请求发送的日期和时间 |
X-Forwarded-For | 它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。(HTTP_X_FORWARDED_FOR) |
Via | 通知中间网关或代理服务器地址,通信协议。(例:Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)) |
Clinet-IP | 用户真正IP地址。接收变量HTTP_CLIENT_IP |
From | 发出请求的用户的Email |
响应消息状态码:
状态码 | 解释 |
---|---|
1xx | 指示信息–表示请求已接收,继续处理 |
2xx | 成功–表示请求已被成功接收、理解、并接受 |
3xx | 重定向–需要后续操作才能完成这一请求 |
4xx | 客户端错误–请求有语法错误或请求无法实现 |
5xx | 服务器端错误–服务器在处理某个正确请求时发生错误 |
状态码 | 解释 |
---|---|
200 | OK,客户端请求成功 |
301 | 永久重定向。表示所请求的资源已经永久地转移到新的位置,Location字段表示重定向后的资源新位置 |
302 | url跳转。临时重定向 |
400 | Bad Request,客户端请求有语法错误,不能被服务器所理解 |
401 | Unauthorized,请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用 |
403 | Forbidden,服务器收到请求,但是拒绝提供服务 |
404 | Not Found,请求资源不存在 |
405 | Method Not Allowed(客户端错误)由于方法和资源组合不正确而出现此错误。 例如,您不能对一个实体集合使用 DELETE 或 PATCH |
412 | Precondition Failed 客户端错误 |
500 | Internal Server Error,服务器发生不可预期的错误 |
503 | Server Unavailable,服务器当前不能处理客户端的请求,一段时间后可能恢复正常 |
web4
解答:(后台地址泄露)查看robots.txt
查看/flagishere.txt,获取flag。
进一步学习:
robots.txt是存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的漫游器,此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被漫游器获取的。(详见百度百科robots协议)
web5
解答:(phps源码泄露)查看index.phps,下载index.phps后打开获取flag。
进一步学习:
phps文件是php的源代码文件,通常用于提供给用户(访问者)查看php代码,因为用户无法直接通过Web浏览器看到php文件的内容,所以需要用phps文件代替。(phps文件)
web6
提示:解压源码到当前目录,测试正常,收工
解答:(源码泄露)存在源码的压缩包没有删除,访问/www.zip。知道了flag所在txt的文件名和路径,直接访问/fl000g.txt
进一步学习:
网站管理员一般会将网站源码进行备份,以便于出问题后恢复网站。但备份时,安全意识薄弱的管理员经常会使用一些常见的压缩备份名,如文件夹的名字www.zip、web.rar,或者backup.rar等,有的甚至就直接把备份好的源码放了在网站根目录里。
常见备份后缀名:.rar
、.zip
、.7z
、.tar.gz
、.bak
、.txt
、.old
、.temp
web7
提示:版本控制很重要,但不要部署到生产环境更重要。
解答:(git泄露)关于版本控制,首先想到的是git泄露。访问/.git
,获取源码。
进一步学习:
版本控制
版本控制器
目前影响力最大且使用最广泛的是Git(分布式版本控制系统)与SVN(集中式版本控制)。
版本控制中的最基本的模块是 “仓库(Repository)”。仓库里存储了项目积攒的所有版本和元数据。在 Git 中,仓库是项目的根目录下名为 “.git” 的隐藏文件夹。
web8
提示:版本控制很重要,但不要部署到生产环境更重要。
解答:(svn泄露)访问 /.svn
, 得到 flag
web9
提示:发现网页有个错别字?赶紧在生产环境vim改下,不好,死机了。
解答:(vim缓存信息泄露),访问index.php.swp
(按理应该是访问.index.php.swp
,这里没有前面的.
,稍稍有点小问题,理解知识点就可以了)
进一步学习:
vim在编辑文本时就会创建临时缓存文件,用来备份缓冲区中的内容。当程序异常退出时会被保留下来,因此可以通过该缓存文件恢复原始文件内容。
VIM不正常退出产生的swp文件
web10
提示:cookie 只是一块饼干, 不能存放任何隐私数据
解答:burp抓包可以在请求头看到cookie,也可以从firefox中的插件直接看。
进一步学习: