老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了

目录

第一题 

第二题:

第三题: X老师忘记删除备份文件,他派小宁同学去把备份文件找出来,一起来帮小宁同学吧!

第四题cookie

第五题 disabled_button

第六题weak_auth

第七题:simple_php

宽松比较(==)类型转换规则

 'a'==0

第8题: get_post

第九题:xff_referer

第十题:webshell

十一题:command_execution

 第十二题:simple_js

第一题 

 老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了

查看一个网页的代码一般如下:

右键:

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第1张图片

此题右键无效,CTRL+U

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第2张图片

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第3张图片

哭了哭了

第一次提交框框错误

第二次提交cy....8e}终于成功

第二题:

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第4张图片

Robots

搜索引擎使用spider程序自动访问互联网上的网页并获取网页信息。spider在访问一个网站时,会首先会检查该网站的根域下是否有一个叫做robots.txt的纯文本文件。您可以在您的网站中创建一个纯文本文件robots.txt,在文件中声明该网站中不想被robot访问的部分或者指定搜索引擎只收录特定的部分。

robots.txt 放置位置

robots.txt文件应该放置在网站根目录下。举例来说,当spider访问一个网站(比如http://www.ubangmang.com)时,首先会检查该网站中是否存在http://www.ubangmang.com/robots.txt这个文件,如果 Spider找到这个文件,它就会根据这个文件的内容,来确定它访问权限的范围。

robots.txt 格式

User-agent:

该项的值用于描述搜索引擎robot的名字。如果该项的值设为*,则对任何robot均有效,在”robots.txt”文件中,”User-agent:*”这样的记录只能有一条

 Disallow: 该项的值用于描述不希望被访问的一组URL,这个值可以是一条完整的路径,也可以是路径的非空前缀,以Disallow项的值开头的URL不会被robot访问。

例 如”Disallow: /help”禁止robot访问/help*.html、/help/index.html, 而”Disallow: /help/”则允许robot访问/help*.html,不能访问/help/index.html。

允许robot访问该网站的所有url,在”/robots.txt”文件中,至少要有一条Disallow记录。如果”/robots.txt”不存在或者为空文件,则对于所有的搜索引擎robot,该网站都是开放的。

Allow:

该项的值用于描述希望被访问的一组URL,与Disallow项相似

特别注意的是Disallow与Allow行的顺序是有意义的,robot会根据第一个匹配成功的 Allow或Disallow行确定是否访问某个URL

来源:robots.txt写法-百度经验 (baidu.com)

robots.txt应放置于网站的根目录下==》改URL

robots.txt允许使用类似"Disallow: *.gif"这样的通配符。==》所以下图的.php有问题? 

我是网站,我心里有个门(robts.txt),心里的门只有在robts.txt名单上的人才可以访问
百度太丑了,讨厌他
记事本中记一笔:
姓名(USER):百度
禁止访问(Dis莎莎):静止访问我的心
允许访问(ALLOW):允许你看的我的脸
这个学会
百度访问不到的网站——》百度与这个网站关系破列
但你没有谷歌
别怕,用这个技巧,百度也可以访问网站

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第5张图片

 老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第6张图片

第三题: X老师忘记删除备份文件,他派小宁同学去把备份文件找出来,一起来帮小宁同学吧!

 老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第7张图片

当然不知道啊

php的备份文件一般是*.php.bak,在根目录下输入/index.php.bak,下载备份文件

Cyberpeace{855A1C4B3401294CB6604CCC98BDE334}

第四题cookie

老师告诉小宁他在cookie里放了些东西,小宁疑惑地想:‘这是夹心饼干的意思吗?

(第一次做题的我,想吐槽,这和夹心饼干有啥关系,夹心饼干是CTF的隐喻吗,题目我看得一头雾水,不过看标题,应该是找cookie吧?)

Cookie 并不是它的原意“甜饼”的意思, 而是一个保存在客户机中的简单的文本文件, 这个文件与特定的 Web 文档关联在一起, 保存了该客户机访问这个Web 文档时的信息, 当客户机再次访问这个 Web 文档时这些信息可供该文档使用。

OK,懂了夹心饼干

个 Web 站点可能会为每一个访问者产生一个唯一的ID, 然后以 Cookie 文件的形式保存在每个用户的机器上。如果使用浏览器访问 Web, 会看到所有保存在硬盘上的 Cookie。在这个文件夹里每一个文件都是一个由“名/值”对组成的文本文件,另外还有一个文件保存有所有对应的 Web 站点的信息。在这里的每个 Cookie 文件都是一个简单而又普通的文本文件。透过文件名, 就可以看到是哪个 Web 站点在机器上放置了Cookie(当然站点信息在文件里也有保存)

Cookie捕获/重放

攻击者可以通过木马等恶意程序,或使用跨站脚本攻击等手段偷窃存放在用户硬盘或内存中的Cookie。借助网络攻击手段,包括在不安全的局域网中被动地监听网络通信;通过攻击网络用户的路由器,或通过搭建恶意的无线路由器等手法,控制路由基础设施,将网络流量重定向到攻击者控制的主机;发动DNSPharming(域欺骗)攻击,通过DNS缓存中毒、DNS应答欺骗、或修改用户端的本地域名解析文件等方法攻击DNS系统,导致用户对合法网站的访问请求被重定向到恶意网站等等,同样可能窃取Cookie。对于捕获到的认证Cookie,攻击者往往会猜测其中的访问令牌,试图获取会话ID、用户名与口令、用户角色、时间戳等敏感信息;或者直接重放该Cookie,假冒受害者的身份发动攻击 

原来此题会了,为后面获取用户名和口令打基础 

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第8张图片

由于Cookies是我们浏览的网站传输到用户计算机硬盘中的文本文件或内存中的数据,因此它在硬盘中存放的位置与使用的操作系统和浏览器密切相关。

EG:

在Windows 9X系统计算机中,Cookies文件的存放位置为C:\Windows\Cookies,

在Windows NT/2000/XP的计算机中,Cookies文件的存放位置为C:\Documentsand Settings\用户名\Cookies。

硬盘中的Cookies文件可以被Web浏览器读取,它的命令格式为:用户名@网站地址[数字].txt。

要注意的是:硬盘中的Cookies属于文本文件,不是程序 

发送cookie

服务器端像客户端发送Cookie是通过HTTP响应报文实现的,在Set-Cookie中设置需要像客户端发送的cookie,cookie格式如下:

Set-Cookie: "name=value;domain=.domain.com;path=/;expires=Sat, 11 Jun 2016 11:29:42 GMT;HttpOnly;secure"
其中name=value是必选项,其它都是可选项。Cookie的主要构成如下:

name:一个唯一确定的cookie名称。通常来讲cookie的名称是不区分大小写的。

value:存储在cookie中的字符串值。最好为cookie的name和value进行url编码

domain:cookie对于哪个域是有效的。所有向该域发送的请求中都会包含这个cookie信息。这个值可以包含子域(如:

yq.aliyun.com),也可以不包含它(如:.aliyun.com,则对于aliyun.com的所有子域都有效).

path: 表示这个cookie影响到的路径,浏览器跟会根据这项配置,像指定域中匹配的路径发送cookie。

expires:失效时间,表示cookie何时应该被删除的时间戳(也就是,何时应该停止向服务器发送这个cookie)。如果不设置这个时间戳,浏览器会在页面关闭时即将删除所有cookie;不过也可以自己设置删除时间。这个值是GMT时间格式,如果客户端和服务器端时间不一致,使用expires就会存在偏差。

max-age: 与expires作用相同,用来告诉浏览器此cookie多久过期(单位是秒),而不是一个固定的时间点。正常情况下,max-age的优先级高于expires。

HttpOnly: 告知浏览器不允许通过脚本document.cookie去更改这个值,同样这个值在document.cookie中也不可见。但在http请求张仍然会携带这个cookie。注意这个值虽然在脚本中不可获取,但仍然在浏览器安装目录中以文件形式存在。这项设置通常在服务器端设置。

secure: 安全标志,指定后,只有在使用SSL链接时候才能发送到服务器,如果是http链接则不会传递该信息。就算设置了secure 属性也并不代表他人不能看到你机器本地保存的 cookie 信息,所以不要把重要信息放cookie就对了服务器端设置

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第9张图片

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第10张图片

 老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第11张图片

第五题 disabled_button

X老师今天上课讲了前端知识,然后给了大家一个不能按的按钮,小宁惊奇地发现这个按钮按不下去,到底怎么才能按下去呢?

disabled 属性规定应该禁用 input 元素。
被禁用的 input 元素既不可用,也不可点击。可以设置 disabled 属性,直到满足某些其他的条件为止(比如选择了一个复选框等等

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第12张图片

直接在上面把disable给删了:

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第13张图片

 cyberpeace{5fbfad8bf35840aa614bf603e9bd230a}

第六题weak_auth

小宁写了一个登陆验证页面,随手就设了一个密码

来吧,让我看看你设置的啥弱密码,估摸着题目的flag就是你的密码了

有点小激动呢

随便输入试试

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第14张图片

好,既然你提示了

那我就登admin

密码弱口令,那就试试

密码是123456

第七题:simple_php

小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第15张图片

 没学过PHP,但有点编程语言基础

 show_source(__FILE__);
include("config.php");
$a=@$_GET['a'];                   #赋值语句$a='a';  类似char a='a'  然后加了个@

## @的作用:如果$a存在,那就将$a赋值为$a,如果不存在,就将$a的值设为$_GET[a]

##白话就是后面如果我设置a='t',那么a的值就为t,如果没有设置,那就是a

$b=@$_GET['b'];
if($a==0 and $a){                   #如果a为0且a为真,输出flag1==》》我靠?矛盾论
    echo $flag1;
}
if(is_numeric($b)){
    exit();
}
if($b>1234){                        #如果b大于1234输出flag2
    echo $flag2;
}
?>

补PHP知识:

php虽然是弱类型的语言,但它是有数据类型的。大概分为三种类型:字符串、数字、布尔型

正常情况下不同类型的值是不能比较的

宽松比较(==)类型转换规则

(1)数字和字符串比较,将字符串转为数字,然后进行比较
(2)数字和布尔型比较,将数字转为布尔型,然后进行比较
(3)字符串和布尔型比较,将字符串转为布尔型,然后进行比较。
宽松比较的落脚点只有两个,一个是布尔型,一个是数字。只有当数字和字符串比较的时候,会把字符串转为数字

EG:

 'a'==0

'a' 这是一个字符串类型。0 是数字类型。使用 == 宽松比较,此时发生类型转换。字符串和数字比较,是将字符串转换为数字然后进行比较的。

运算步骤一:根据字符串转数字的规则,字符串的开始部分决定了它的数字值。该字符串的开头不是数字,则它的数字值为0

彻底解决php判断a==0为真引发的问题-类型转换 - 曙光城邦 - 博客园 (cnblogs.com)

解答:

我让a=a,a=t,a=hhhhh,a=sb等,出现下面这个结果

原因是:a的值为字符串,字符串与数字比较,字符串前面没有数字,那强制转换后的值为0

如果a=5hh,a的值为5,FLAG不出现 

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第16张图片

如果a=5hh,a的值为5,FLAG不出现 

 老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第17张图片

 利用这个性质,查看FLAG2 

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第18张图片

 综合一下

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第19张图片

Cyberpeace{647E37C7627CC3E4019EC69324F66C7C}

第8题: get_post

老师告诉小宁同学HTTP通常使用两种请求方法,你知道是哪两种吗?

下载burp

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第20张图片

解: 

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第21张图片

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第22张图片

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第23张图片

改写HTML代码:

 题目的网址随时有变动,以自己做题的时候的网址为主老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第24张图片

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第25张图片

在页面的提交框输入2,并点提交

 老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第26张图片

得到flag:FLAG也是变换的,今天是我这个FLAG,明天是明天的FLAG,所以投机的同学复制过去可能会遇到:你提交的FLAG不正确

cyberpeace{892e7c559262838d01ba7d8718eef00c} 

第九题:xff_referer

X老师告诉小宁其实xff和referer是可以伪造的

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第27张图片

 xff和referer是什么?

关于xff和referer维基百科:

X-Forwarded-For(XFF)是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段。

XXF的格式:

X-Forwarded-For: 本机IP, 代理1IP, 代理2IP, 代理2IP

其中

referer(来源) 是http的拓展头部,作用是记录当前请求页面的来源页面的地址。

(网页1中有个链接,你点链接,弹出网页2

此时你抓网页2的包,会看到

referer:网页1)

Referer的作用
1.防盗链。

设置网页对请求的判断,

访问网页2,想要我本人从网页2下载某些数据,不想让别人下载

那我就拥有个私人网页1,没有公开,我从网页1访问网页2

网页2一看请求的Referer:我靠,是网页!!!!!顶级VVVIP,惹不得,他要啥给啥

如果不是,权限一个都没有

这是不是就达到防盗链的效果了?

2.防止恶意请求。

比如我的网站上,静态请求是*.html结尾的,动态请求是*.shtml,那么由此可以这么用,所有的*.shtml请求,必须 Referer 为我自己的网站。

参考:

(1条消息) xff-referer伪造ip地址和域名_黑朱雀的博客-CSDN博客_xff和referer伪造
(1条消息) XFF与Referer(含实操)_米斯特怀特墨客的博客-CSDN博客_xff

由于很多用户通过代理服务器进行访问,服务器只能获取代理服务器的IP地址,而xff的作用在于记录用户的真实IP,以及代理服务器的IP。(上面的XXF格式说明了这一事实)

然而,既然访问网页都有记录我的真实的IP,我看啥网页,连偷偷学习都有证据留下,好不方便啊。。

重点来了,篡改XXF的IP,换成倒霉蛋的IP地址

补充:

XXF除了可以改IP,还可以:

①数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。

②网页篡改:通过操作数据库对特定网页进行篡改。

③网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。

④数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改。

⑤服务器被远程控制,被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。

XFF漏洞攻击原理及防御方案 - 知乎 (zhihu.com)

解:

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第28张图片

send to repeater

repeater属于HTTP的编辑工具

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第29张图片

卧槽,FLAG这个网址双重保护啊,不仅限制了特定的用户(IP),还限制了要到FLAG这个网页还必须从谷歌网页跳转,那我再加限制

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第30张图片

所以,在自己电脑上建个私人网页,这个网页没有其它内容,就一个链接,这样可以达到保护作业吗?私人网页跳私人网页跳私人网页。。。这样会不会更加保护呢?

cyberpeace{f9721d21299c4cb39dc2bfe7ce7cf143}

第十题:webshell

小宁百度了php一句话,觉着很有意思,并且把它放在index.php里。

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第31张图片

webshell

就是以asp、php、jsp或者cgi等网页文件形式存在的一种代码执行环境,主要用于网站管理、服务器管理、权限管理等操作。使用方法简单,只需上传一个代码文件,通过网址访问,便可进行很多日常操作,极大地方便了使用者对网站和服务器的管理。正因如此,也有小部分人将代码修改后当作后门程序使用,以达到控制网站服务器的目的。

 是什么

一句话木马:一句话木马就是一段简单的代码,就这短短的一行代码,就能做到和大马相当的功能。一句话木马短小精悍,而且功能强大,隐蔽性非常好,在入侵中始终扮演着强大的作用。


这是php的一句话后门中最普遍的一种。它的工作原理是:
首先存在一个名为shell的变量,shell的取值为HTTP的POST方式。Web服务器对shell取值以后,然后通过eval()函数执行shell里面的内容。
 

eval() 函数把字符串按照 PHP 代码来计算。

该字符串必须是合法的 PHP 代码,且必须以分号结尾。

(1条消息) php一句话木马_X__WY__X的博客-CSDN博客_php一句话木马代码

PHP scandir

(1条消息) php函数scandir_php使用scandir()函数扫描指定目录下所有文件示例_weixin_39873325的博客-CSDN博客

解:WAY1直接修改HTML

 老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第32张图片

 提交后在web页上显示了文件名flag.txt

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第33张图片

cyberpeace{a2d1dacf15b8bf1237a2005228940b70}

WAY2:

shell=system('find / -type f -name "flag*"');

Content-Type:application/x-www-form-urlencoded

 POST / HTTP/1.1

 老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第34张图片

 找到文件

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第35张图片

 再次用burpsuite构造post包,来输出flag.txt的内容

shell=system('cat /var/www/html/flag.txt');

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第36张图片

十一题:command_execution

 小宁写了个ping功能,但没有写waf,X老师告诉她这是非常危险的,你知道为什么吗

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第37张图片

WAF(Web Application Firewall):

Web应用防护系统称为:网站应用级入侵防御系统。 

 解:

1、不输入直接运行,提示ping -c 3 ,排除windows,windows是-n

2.试了拼接ipconfig或者ifconfig,判断是linux主机

 老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第38张图片

3.是否存在命令注入,输入payload='| ls'。

 老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第39张图片

存在

直接用linux的查找文件命令

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第40张图片

 显示该文件的内容

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第41张图片

 cyberpeace{9b198f67f21a3feb95180c0971f11726}

 第十二题:simple_js

小宁发现了一个网页,但却一直输不对密码。(Flag格式为 Cyberpeace{xxxxxxxxx} )

 老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第42张图片

确定,看看提示

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第43张图片

faux password(假密码)--不管你输入什么密码都是假密码

我:??????什么大病???

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第44张图片

发现dechiffre函数返回的是将局部变量pass中的ASCII转成字符后拼接成的字符串。

因此无论怎么输入密码,返回的都是pass的内容。

JS代码解释

审计代码(攻击与防御世界web simple_js),攻防,websimplejs (pythonf.cn)

看到\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"想到把\x转换为%,将字符串转换为URL编码,%35%35%2c%35%36%2c%35%34%2c%37%39%2c%31%31%35%2c%36%39%2c%31%31%34%2c%31%31%36%2c%31%30%37%2c%34%39%2c%35%30

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第45张图片
老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第46张图片

 数字转换ASCII

第一步encode as hex

第二步decode as ascii hex

老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了_第47张图片

FLAG:

7860sErtk12 

提交格式:

Cyberpeace{7860sErtk12}

你可能感兴趣的:(CTF,安全)