攻防世界WEB新手训练区

本文详细介绍了如何通过查看网页源代码、理解robots协议、处理HTTP请求、分析PHP代码和利用弱认证进行解题,展示了在网络安全入门级别的挑战中所需的技术和策略。
摘要由CSDN通过智能技术生成

view_source

此题我愿称之为网安领域的hello world

查看网页源代码的方式一般有——

  • 右键->查看网页源代码
  • F12->源代码/来源
  • Ctrl+u

随后可以再代码第17行处找到flag,至此迈入网安第一步。可喜可贺,可喜可贺...


 get_post

考察http的两种请求方式,一种是get方式,一种是post方式

get的提交方式为,在网页的URL后面写个英文问号,然后写变量表达式,如下:

提交完成后页面会更新并多一句话提醒用post方式提交变量b,这时候需要借助hackbar插件了(读者请自行查阅资料完成插件的安装)

弄好插件后用快捷键F12进入开发者模式 ,如下:

把该网页的URL复制到(可以直接点LOAD)HackBar中的URL栏中,打开【Use POST method】这个开关,随后在Body中输入b=2,最后点击【EXECUTE】即可刷新页面并获得flag


robots 

robots协议_百度百科 (baidu.com)

百度百科:robots协议也称爬虫协议、爬虫规则等,是指网站可建立一个robots.txt文件来告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,而搜索引擎则通过读取robots.txt文件来识别这个页面是否允许被抓取。

简单来说,我们知道网页其实就是服务器下的一个个文件,robots.txt就是其中之一,因此根据提示先直接去访问robots.txt这个文件,看看能有什么新线索。访问方式就是在网页的URL后面加上/robots.txt

发现新页面是如下三行

  • 第一行的User-agent: * 这里的*代表的所有的搜索引擎种类,*是一个通配符
  • 第二行的Disallow: 后面无内容。
  • 第三行的Disallow: f1ag_1s_h3re.php,表示禁止搜索引擎爬虫访问名为f1ag_1s_h3re.php的文件

通过访问robots.txt这个文件,我们获取到的线索就是该服务器下还有一个文件叫f1ag_1s_h3re.php,所以下一步就直接再去访问这个文件即可,就像刚刚访问robots.txt那样做(别忘了回到原来的父路径)

访问后页面刷新,获得flag


backup

这题让找备份文件,打开靶场后提示找的是index.php的备份文件,这样就获得一个线索,要知道,备份文件的名字就是在原文件的名字加上后缀,备份文件有以下几个常用后缀:

                .git        .svn        .swp        .~        .bak        .bash_history        .bkf

因此第一种思路就是枚举去尝试访问index.php.git,index.php.svn...等等这些文件,当试到index.php.bak的时候,网页会自动下载这个文件,说明试到正确答案了

我们用记事本打开它,可以轻松拿到flag

仅仅是这样的话就太浪费这题了,交完flag后回来复盘

这题其实可以通过kali(没装kali?见本篇->linux的kali安装,换源,更新包-CSDN博客)的工具dirsearch对该网页进行一个路径扫描,一扫就知道这个网页路径下有什么文件了

使用命令【dirsearch -u URL】对指定路径进行扫描,进度到60%左右时会出现index.php.bak(这时可以Ctrl+c提前结束扫描),证明该路径下确实有这个文件,然后进行访问即可

(笔者是finalshell连接的kali系统,用起来会比较顺手)


cookie

按F12键进入开发者模式,在【应用】中找到Cookie,可以看到名为【look-here】的项,其值为cookie.php,因此线索为该路径下存在此文件

理所应当地去访问一下这个文件,页面刷新了,提示去看http response,就去【网络】中找到【标头】,在响应标头中能找到flag


disabled_button

题目描述提到“前端知识”,给出这题的线索应该是和前端代码有关,打开靶场,一句话加一个按钮,点了点发现按钮确实按不了

那么F12进入开发者模式,点一个这个我用绿色框框起来的【选中】按钮后把鼠标移动到按钮位置,这样做可以快速定位这个按钮的代码位置

代码被定位到了下面绿色框起来的位置,发现它是一个表单,把它展开仔细观察,发现其存在一个属性【disabled】,这个属性会使该元素不可交互,这就是按钮不可按下的主要原因了

 把disabled属性删除,按钮就能按了

按下按钮,轻松获得flag

(怎么说呢,这题有点小学初中那会玩史上最坑爹的小游戏的既视感??啊)


simple_js

这题的难度相对于其它的题目都显得有点高,比较吃做题人的经验,经验不足就会手足无措

首先打开靶场,测试了几下,发现确实如题所说,不管什么密码,结果都提示这个

这时就应该换个思路,比如去看看网页源代码、cookie、http response...等等,找找线索,显然在源代码中我们能提取到不少信息

说实话笔者写这里时也只是个ctf小白,不是很能看懂这个代码,但能根据一点编程经验猜个大概

主要是由一个自定义函数dechiffre(红框部分)和3行代码(绿框部分),函数在未调用时不会起作用,所以先从绿框的3行代码入手

 第22行代码:

String["fromCharCode"](dechiffre("\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"));

这行代码先调用上面红框自定义的dechiffre函数,传入一个字符串(看这个字符串的格式大概猜得到是16进制编码),dechiffre函数会经过它的逻辑后返回一个字符串A,然后String["fromCharCode"] 函数(JavaScript的API)把字符串A转换为字符串B除此之外这行代码似乎并没有对其它什么参数有造成影响??那就先放着...吧

第24行代码:

h = window.prompt('Enter password');

这行代码调用一个名为window.prompt的API,其作用是指示浏览器显示一个对话框,用来提示用户输入一些相关信息,也就是打开靶场后显示的这个密码框

接下来的逻辑是把用户输入的密码赋值给变量h,这就是第24行代码的所有作用了

第25行代码:

alert( dechiffre(h) );

这行代码调用alert函数,把其中的参数作为“警告”提示在屏幕,而所谓的参数是通过调用函数dechiffre(h)来获得的一个字符串

自此我们终于理清楚了调用链:

首先调用dechiffre(h),h来自用户输入,然而我们只用稍微看看dechiffre函数的逻辑就能明白,它返回的字符串跟传入的这个h参数根本没关系,而是固定返回一个字符串FAUX PASSWORD HAHA,所以不管输入什么密码,最后显示的结果都是这句话

到了这步,其实仅仅是把这个网页所谓的“bug”给理清楚了,但似乎对解题依旧没什么进展?

所以还是得换换思路,多写几道ctf题目其实不难总结出经验,所谓的flag就是被出题人藏在各种地方,但不一定以明文的形式展示,也可能是密文

而这题的flag就被藏在源代码中的第22行,甚至可以说其它都是无关信息,这一大串的十六进制编码就是密文形式的flag,需要做题人自行想办法去解码

 因此接下来的工作就是写一个脚本去解码,写这种脚本最好是用python而不是c、c++等,后者会很麻烦,随便一个字符串转整数就要写一大段算法代码,难顶...

接下来是脚本的编写教学,不想看的自行跳过即可——

①首先把这串十六进制编码打印出来,python识别到非十进制格式的编码时,会自动转成十进制输出,因此得到以下结果:

②通过输出的结果,合理猜测这是一串ASCII编码,我们将其转为对应的字符,或许就能拿到flag但也得进行一些相应的操作,首先把原字符串按逗号分割成字串,得到对应的列表,这里再把列表也打印一下验证正确性

③循环遍历列表list,对于每个元素,采取两次类型转换,先转为整型(int),再转为字符型(chr,python的字符型是chr而不是char),即可获得编码对应的字符,所有字符连在一起,组成了本题的flag,按题目要求的格式把flag包裹起来提交即可

Cyberpeace{786OsErtk12}

完整脚本:

str = "\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"
print(str)
list = str.split(',')
print(list)
for i in list:
    print(chr(int(i)), end='')#对每个元素,先转int再转chr后输出,print以空字符连接下次输出(不换行的意思)


xff_referer

百度百科:

X-Forwarded-For_百度百科 (baidu.com)

HTTP_REFERER_百度百科 (baidu.com)

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

HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器该网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理。

简单理解:

xff用来记录用户真实ip以及代理服务器的ip。
referer用来记录当前网页是从哪个链接过来的。
以上两个属性都是可以伪造的!

打开靶机,页面显示说“ip必须来自123.123.123.123”

因此第一步去构造xff:

F12】进入开发者模式->【HackBar】->【LOAD】把当前URL加载进插件->

MODIFY HEADER】修改头部,这里先按要求伪造一个xff,值为123.123.123.123->【EXECUTE】发包后,可以看见页面刷新,新的信息显示“必须来自https://www.google.com”

因此第二步去构造referer:

MODIFY HEADER】修改头部,这里按要求构造一个referer,值为https://www.google.com->

EXECUTE】发包后,可以看见页面刷新,获得本题flag


weak_auth

 weak auth是弱口令、弱认证的意思,打开靶机显示的是一个登录页面

先尝试性地随意输入一个账号密码,结果显示“please login as admin” ,即让我们用admin作为账号去登录

现在知道账号是admin了,那密码呢?不知道,但是题目提示我们了是“弱认证”,即密码安全性极低,因为我们采用字典爆破,把正确密码试出来:

①开启burp代理,使用burp抓包,admin是账号,先随便输入一个密码

②右键【Send to Intruder】,使用burp进行爆破的操作

③选中密码的文本(选中文本时要注意,burp似乎有点错位,选中的与实际相比,前面少一个字符后面多一个字符,所以选中文本过程要注意一点。。。)->【Add】添加需要爆破的position

 ④【Payloads】->【Load ...】把本地备好的字典(网上随手一搜有一堆)加载进burp

⑤按下【Start attack】开始爆破

⑥把结果按照【Length】倒序排列,发现密码为123456的回复包的长度最长,说明有问题,查看Response,获得flag

⑦也可以回到靶场,【账号:admin        密码:123456】,登录后页面刷新,获得flag


 command_execution

百度百科:WAF_百度百科 (baidu.com)

Web应用防护系统(也称为:网站应用级入侵防御系统。英文:Web Application Firewall,简称: WAF)。利用国际上公认的一种说法:Web应用防火墙是通过执行一系列针对HTTP/HTTPS安全策略来专门为Web应用提供保护的一款产品。

打开靶机,显示的是一个具有ping功能的页面

随意ping了一下比较简单的地址,这里通过显示的信息可以得知,该靶场基于Linux操作系统

本题题目描述说没有waf,可以理解为对于用户的命令不作安全性判断,借此可以利用Linux的管道符命令语法进行命令拼接,原理介绍:

在管道符左边的命令结束后,会将左边命令的结果作为输入,立即执行右边的命令,例如这边的ls,是指列出当前目录的文件夹和文件

因此利用这个语法特性,去进行命令拼接,查看靶机的工作目录下存放了哪些文件,由此获得线索

输入【ping w | ls】命令,这里的w是什么根本不重要,我们的目的是借助管道符拼接其后的命令【ls】,可以看见有名为【index.php】的条目被列举出来

 顺理成章地去访问一下此文件,发现页面刷新了一下,但内容没变,看来flag被藏在其它目录下,我们直接借助find函数去全局查找含有flag字样的文件

如法炮制,输入命令【ping w | find / -name "*flag*" 】 

find后面的/意味根目录,linux系统中根目录是最高级的父目录,-name表示按名字查找指定文件,"*flag*"即名字中含有flag的文件,可以看到查找结果中显然是第一个【/home/flag.txt】最有可能是我们的目标文件

再次拼接命令,这次我们要访问【/home/flag.txt】这个路径的文件,

输入命令【ping w | cat /home/flag.txt】,这里cat的作用是访问文件

访问结果拿下flag


simple_php

本题考察简单php代码分析,打开靶机就是一段php代码

 下面是代码分析:

<?php
show_source(__FILE__);//将当前文件的代码显示出来
include("config.php");//加载自定义配置文件
$a=@$_GET['a'];//get方式传入的参数a将赋值给变量$a
$b=@$_GET['b'];//get方式传入的参数b将赋值给变量$b
if($a==0 and $a){
    echo $flag1;//重点1:如果$a弱等于0并且$a为真,将输出$flag1
}
if(is_numeric($b)){
    exit();//如果$b是数字,程序将直接结束
}
if($b>1234){
    echo $flag2;//重点2:如果$b大于1234,将输出$flag2
}
?>

分析完代码后可以得出:get方式传入一个参数a,a要满足本身为true且a弱等于0,查看php弱相等表:php比较运算,强相等(===)弱相等(==)表-CSDN博客

 因此我们先传入一个a="任意字符串"即可,传参方式为在URL后面输入【?a="xxx"】,可以看见传参后页面显示出了flag的前半部分

 接下来是b的参数,分析得出b不能是数字,否则会进入第二个if逻辑导致程序直接结束,又要满足b大于1234,进入第三个if逻辑,获取下半的flag

必须输入一个字符串绕过第二个if逻辑,然后涉及到字符串的类型转换,见本篇string类型转整型(int)或者浮点型(float/double)->php基础学习之数据类型-CSDN博客

因此我们输入【&b=1235a】即可(同时提交多个变量,用&符号连接),"1235a"本身被php识别为字符串,在与1234进行比较时,进行类型转换,1235a变为1235,1235>1234,条件为真,输入第二段flag,与第一段flag组成本题flag

  • 36
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
水资源是人类社会的宝贵财富,在生活、工农业生产中是不可缺少的。随着世界人口的增长及工农业生产的发展,需水量也在日益增长,水已经变得比以往任何时候都要珍贵。但是,由于人类的生产和生活,导致水体的污染,水质恶化,使有限的水资源更加紧张。长期以来,油类物质(石油类物质和动植物油)一直是水和土壤中的重要污染源。它不仅对人的身体健康带来极大危害,而且使水质恶化,严重破坏水体生态平衡。因此各国都加强了油类物质对水体和土壤的污染的治理。对于水中油含量的检测,我国处于落后阶段,与国际先进水平存在差距,所以难以满足当今技术水平的要求。为了取得具有代表性的正确数据,使分析数据具有与现代测试技术水平相应的准确性和先进性,不断提高分析成果的可比性和应用效果,检测的方法和仪器是非常重要的。只有保证了这两方面才能保证快速和准确地测量出水中油类污染物含量,以达到保护和治理水污染的目的。开展水中油污染检测方法、技术和检测设备的研究,是提高水污染检测的一条重要措施。通过本课题的研究,探索出一套适合我国国情的水质污染现场检测技术和检测设备,具有广泛的应用前景和科学研究价值。 本课题针对我国水体的油污染,探索一套检测油污染的可行方案和方法,利用非分散红外光度法技术,开发研制具有自主知识产权的适合国情的适于野外便携式的测油仪。利用此仪器,可以检测出被测水样中亚甲基、甲基物质和动植物油脂的污染物含量,为我国众多的环境检测站点监测水体的油污染状况提供依据。
### 内容概要 《计算机试卷1》是一份综合性的计算机基础和应用测试卷,涵盖了计算机硬件、软件、操作系统、网络、多媒体技术等多个领域的知识点。试卷包括单选题和操作应用两大类,单选题部分测试学生对计算机基础知识的掌握,操作应用部分则评估学生对计算机应用软件的实际操作能力。 ### 适用人群 本试卷适用于: - 计算机专业或信息技术相关专业的学生,用于课程学习或考试复习。 - 准备计算机等级考试或职业资格认证的人士,作为实战演练材料。 - 对计算机操作有兴趣的自学者,用于提升个人计算机应用技能。 - 计算机基础教育工作者,作为教学资源或出题参考。 ### 使用场景及目标 1. **学习评估**:作为学校或教育机构对学生计算机基础知识和应用技能的评估工具。 2. **自学测试**:供个人自学者检验自己对计算机知识的掌握程度和操作熟练度。 3. **职业发展**:帮助职场人士通过实际操作练习,提升计算机应用能力,增强工作竞争力。 4. **教学资源**:教师可以用于课堂教学,作为教学内容的补充或学生的课后练习。 5. **竞赛准备**:适合准备计算机相关竞赛的学生,作为强化训练和技能检测的材料。 试卷的目标是通过系统性的题目设计,帮助学生全面复习和巩固计算机基础知识,同时通过实际操作题目,提高学生解决实际问题的能力。通过本试卷的学习与练习,学生将能够更加深入地理解计算机的工作原理,掌握常用软件的使用方法,为未来的学术或职业生涯打下坚实的基础。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值