引言:这里是我做的攻防世界-WEB-基础题的一些writeup,同样也是在大一学期末编写的,一些内容难免写的生硬,但是对面萌新来说是很好的上手wp,在过程中遇到任何问题大家都是可以一起探,部分解题思路借鉴了其他博主,如果哪些地方有问题或更好的思路,请评论区给出指正和意见。

所用环境以及做题思路只在当时写下writeup时适用,若之后题目做出改动可与我联系,做出相应更改。
作者:李世荣
联系方式:点击网站头像即可与我联系
转载请标明出处。

1.view_source

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

分析:
点击浏览器控制台的查看。

解题:
右键不管用,那就直接打开控制台吧。

flag: cyberpeace{7c25cbb0dcdfebd3feeddce088c84f22}

截屏2020-12-21下午1.41.07.png

2.robots

题目:X老师上课讲了Robots协议,小宁同学却上课打了瞌睡,赶紧来教教小宁Robots协议是什么吧。
http://220.249.52.134:33326/

分析:

robots.txt是搜索引擎中访问网站的时候要查看的第一个文件。当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,所有的搜索蜘蛛将能够访问网站上所有没有被口令保护的页面。
工具:扫目录脚本dirsearch(项目地址:https://github.com/maurosoria/dirsearch)
[步骤]
1.根据提示robots,可以直接想到robots.txt,
2.或通过扫目录也可以扫到: python dirsearch.py -u http://220.249.52.134:33326/ -e *
3.访问http://220.249.52.134:33326/robots.txt发现f1ag_1s_h3re.php
4.访问http://220.249.52.134:33326/f1ag_1s_h3re.php得到flag。

解题:
1.打开地址,没有返回内容,于是查看robots协议,提示flag在一个php文件中。
查看robots协议:http://220.249.52.134:33326/robots.txt
截屏2020-12-21下午1.50.06.png
2.尝试构造php地址:
http://220.249.52.134:33326/flag_1s_h3re.php
截屏2020-12-21下午1.51.57.png

flag:cyberpeace{97234cc21ef90ea93aede83f40e70e93}

3.backup

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

分析:

掌握有关备份文件的知识
常见的备份文件后缀名有: .git .svn .swp .svn .~ .bak .bash_history
工具:扫目录脚本dirsearch(项目地址:https://github.com/maurosoria/dirsearch(https://github.com/maurosoria/dirsearch))
1.可以手动猜测,也可以使用扫目录脚本/软件,扫一下,这里使用的是github上的脚本dirsearch,命令行下: py python3 dirsearch.py -u http://220.249.52.134:33119/ -e *
2.看到存在备份文件index.php.bak访问 http://220.249.52.134:33119/index.php.bak
3.保存到本地打开,即可看到flag

解题:

常见的备份文件后缀名有.git.svn.swp.~.bak.bash_history
常见的备份文件后缀名有.git.svn.swp.~.bak.bash_history第一步逐个试常用的文件后缀,发现是.bak
220.249.52.134:33119/index.php.bak
打开文件,找到flag。

解题2:

打开链接,页面显示下面一句话,找备份文件名,备份文件的格式后缀为bak这里可以用工具御剑,先添加网址,然后双击点要找的文件类型。

截屏2020-12-21下午2.03.03.png

打开链接,页面显示下面一句话,找备份文件名,备份文件的格式后缀为bak这里可以用工具御剑,先添加网址,然后双击点要找的文件类型点击开始扫描,最后得到一个http://111.198.29.45:35594/index.php.bak备份的网址。

截屏2020-12-21下午2.04.51.png

打开备份网站,跳转到下载这个备份文件。

截屏2020-12-21下午2.05.37.png

打开备份网址,跳转出下载这个备份文件下载后,用笔记本打开该文件

截屏2020-12-21下午2.06.10.png

4.cookie

题目:
X老师告诉小宁他在cookie里放了些东西,小宁疑惑地想:‘这是夹心饼干的意思吗?’
http://220.249.52.134:51272/
分析:

[原理]
 Cookie是当主机访问Web服务器时,由 Web 服务器创建的,将信息存储在用户计算机上的文件。一般网络用户习惯用其复数形式 Cookies,指某些网站为了辨别用户身份、进行 Session 跟踪而存储在用户本地终端上的数据,而这些数据通常会经过加密处理。
[目的]
掌握有关cookie的知识,了解cookie所在位置
1.浏览器按下F12键打开开发者工具,刷新后,在存储一栏,可看到名为look-here的cookie的值为cookie.php。

截屏2020-12-21下午2.13.13.png

2.访问http://220.249.52.134:51272/cookie.php,提示查看http响应包,在网络一栏,可看到访问cookie.php的数据包。

截屏2020-12-21下午2.17.44.png

3.点击查看数据包,在消息头内可发现flag。

截屏2020-12-21下午2.18.37.png

flag:cyberpeace{af45113c13ebe7313a4e0d881028374c}

5.disabled_button

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

分析&解题:

1.打开开发者工具,在查看器窗口审查元素,发现存在disabled=""字段

截屏2020-12-21下午2.21.41.png

2.将disabled=""删除后,按钮可按,按下后得到flag

截屏2020-12-21下午2.22.50.png

6.weak_auth

题目:
小宁写了一个登陆验证页面,随手就设了一个密码。
http://220.249.52.134:52161/

分析:
考察弱口令
弱口令我试了2次,第一次试了admin admin错了,第二次试了admin 123456对了,直接就拿到
cyberpeace{b50feca3a14bc1eeb6d61bd29be58044}

解题:

Brupsuite
字典:<https://github.com/rootphantomer/Blasting_dictionary/blob/master/%E5%B8%B8%E7%94%A8%E5%AF%86%E7%A0%81.txt>
1.随便输入下用户名和密码,提示要用admin用户登入,然后跳转到了check.php,查看下源代码提示要用字典。
2.用burpsuite截下登录的数据包,把数据包发送到intruder爆破。

截屏2020-12-21下午2.30.50.png

2.设置爆破点为password

截屏2020-12-21下午2.31.34.png

3.加载字典

截屏2020-12-21下午2.32.05.png

4.开始攻击,查看响应包列表,发现密码为123456时,响应包的长度和别的不一样.

截屏2020-12-21下午2.32.48.png

5.点进去查看响应包,获得flag

截屏2020-12-21下午2.33.31.png

解题2:

打开链接,有一个登录页面。

截屏2020-12-21下午2.35.12.png

当随便输入user和password是返回另一个check.php页面,让login=admin

截屏2020-12-21下午2.36.03.png

把user改成admin后,不知道密码,所以这里可以暴力破解得到密码,使用Burpsuiteprofessional工具进行抓包。

截屏2020-12-21下午2.36.36.png

把抓到的包在Action中选择send to Intruder传到Intruder中在Positions中先clear§,再在password的值左右Add§

截屏2020-12-21下午2.37.21.png
截屏2020-12-21下午2.37.47.png
关于一些爆破的字典连接https://github.com/rootphantomer/Blasting_dictionary把常用密码这个字典下载到本地,在Loadhouse中选择这个字典
截屏2020-12-21下午2.38.26.png
截屏2020-12-21下午2.38.54.png

修改好后点击Start attack返回结果,发现长度上不一样的,就是密码了把包传到repeater中,修改正确的密码,Go一下,得到flagcyberpeace{79e011c377a083ad67127335b51ae951}

7.simple_php

题目:
小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。
http://220.249.52.134:31928/

分析:

php中有两种比较符号
=== 会同时比较字符串的值和类型
== 会先将字符串换成相同类型,再作比较,属于弱类型比较
1.打开页面,进行代码审计,发现同时满足 $a==0 和 $a 时,显示flag1。
2.php中的弱类型比较会使'abc' == 0为真,所以输入a=abc时,可得到flag1,如图所示。(abc可换成任意字符)。

截屏2020-12-21下午2.42.43.png

3.is_numeric() 函数会判断如果是数字和数字字符串则返回 TRUE,否则返回 FALSE,且php中弱类型比较时,会使('1234a' == 1234)为真,所以当输入a=abc&b=1235a,可得到flag2,如图所示。

截屏2020-12-21下午2.43.58.png

解题:

要求a等于0,并且a是true,那么a可以是字符串:"ailx10"
要求b不是数字,并且b大于1234,数字后面加空格就可以了
满足a==0且if a为真,b不是数字且b>1234才会返回flag检索php的==
==是 不严格的比较, 会 先 进行类型转换再 比较, 查看php类型比较表https://www.php.net/manual/zh/types.comparisons.php发现“0”为true,所以可以把参数a构造为’0’或者‘alph’这种转换后为0但本身 不为False的形式数字和字符混合的字符串转换为整数后只保留数字
形式数字和字符混合的字符串转换为整数后只保留数字B可以构造 为12345s,类型转换后为12345, 大于1234,得到flag。

8.get_post

题目:
X老师告诉小宁同学HTTP通常使用两种请求方法,你知道是哪两种吗?
http://220.249.52.134:58262/

分析:

HTTP工作原理
目的:掌握常用http请求方式
1.打开hackbar,用get方式传递a=1
http://220.249.52.134:58262/?a=1
2.勾选hackbar上的Enable post data,用post方式传递b=2,可获得flag

解题:
代理走起来,修改GET为POST,添加一个body,key是b,value是2即可
截屏2020-12-21下午2.52.41.png
9.xff_referer

题目:
X老师告诉小宁其实xff和referer是可以伪造的。
http://220.249.52.134:44392/

分析:

考察代理修改请求头的字段
添加X-Forwarded-For字段
添加Referer字段

截屏2020-12-21下午4.20.51.png

X-Forwarded-For(XFF)
是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段。
简单地说,xff是告诉服务器当前请求者的最终ip的http请求头字段
通常可以直接通过修改http头中的X-Forwarded-For字段来仿造请求的最终ip
Referer
HTTP来源地址(referer,或HTTPreferer)
是HTTP表头的一个字段,用来表示从哪儿链接到当前的网页,采用的格式是URL。换句话说,借着HTTP来源地址,当前的网页可以检查访客从哪里而来,这也常被用来对付伪造的跨网站请求。
简单的讲,referer就是告诉服务器当前访问者是从哪个url地址跳转到自己的,跟xff一样,referer也可直接修改。

解题:

题目说IP地址必须为123.123.123.123
所以抓包修改XFF。

截屏2020-12-21下午4.55.16.png

而又显示请求来自https://www.google.com/,所以修改Referer

截屏2020-12-21下午4.56.12.png

最终得到结果:

截屏2020-12-21下午5.52.07.png

拿下flag:cyberpeace{edda54ba5c327cdae17a3172a0633d0f}

10.webshell

题目:
小宁百度了php一句话,觉着很有意思,并且把它放在index.php里。
http://220.249.52.134:44587/

分析:

考察一句话:木马的利用
在index.php的页面下,通过POST请求一个shell字段,值为system("ls");,试图看看当前页面下有哪些文件,找到了flag.txt。

截屏2020-12-21下午6.04.45.png

页面中显示的是一句php木马,用中国菜刀或者蚁剑等工具上传命令,密码是shell。

截屏2020-12-21下午6.36.44.png
截屏2020-12-21下午6.37.05.png

解题:
    BurpSuite:1)拦截到页面请求,将其转到Repeater,并在最下方加入请求参数:shell = system(“find / -name ‘flag*’”)

截屏2020-12-21下午6.39.54.png

2)查看Response,最下方有目标文件路径:

截屏2020-12-21下午6.40.53.png
截屏2020-12-21下午6.41.50.png

截屏2020-12-21下午6.42.26.png

解题2:
截屏2020-12-21下午6.43.03.png

截屏2020-12-21下午6.43.34.png

截屏2020-12-21下午6.44.07.png

11.command_execution

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

分析:

考察命令注入
试了一下几个命令,127.0.0.1;ls /home ,在这个里面发现了线索
打印这个文件127.0.0.1;cat /home/flag.txt ,拿到flag

截屏2020-12-21下午6.49.15.png

解题:

| 的作用为将前一个命令的结果传递给后一个命令作为输入
&&的作用是前一条命令执行成功时,才执行后一条命令
[目地]
掌握命令拼接的方法 
1、打开题目
2、掌握有关命令执行的知识windows或linux下:command1 && command2 先执行command1,如果为真,再执行command2command1 | command2 只执行command2command1 & command2 先执行command2后执行command1command1 || command2 先执行command1,如果为假,再执行command2命令执行漏洞(| || & && 称为管道符)
3、执行一个ping带一个其他命令试试,果然能看到当前目录下的文件
4、找到home目录,看看home目录下有些啥,发现flag文件
5、利用cat命令打开flag文件,127.0.0.1 && cat ../../../../home/flag.txt,得到flag。

12.simple_js
题目:
小宁发现了一个网页,但却一直输不对密码。(Flag格式为 Cyberpeace{xxxxxxxxx} )
http://220.249.52.134:42296/
分析:

考察JS代码审计
这题是真的坑,浪费时间的东西,这也太无聊了。
这个dechiffre()函数不管输入什么结果都是一样的,也就是说这是个干扰项,那密码还能在哪呢?下面一串16进制编码。

截屏2020-12-21下午6.54.30.png

\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
    第一步:将16进制转为10进制数字
    b="\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(bytes(b).decode('ascii'))
#输出:55,56,54,79,115,69,114,116,107,49,50
第二步:ascii码数字转字符串
b="55,56,54,79,115,69,114,116,107,49,50"
b=b.split(",")
passwd=""
for bb in b:
  passwd += chr(int(bb))
print(passwd)
#输出:786OsErtk12
得到flag:cyberpeace{786OsErtk12}

截屏2020-12-21下午6.57.54.png

随意输入一个值

截屏2020-12-21下午6.58.45.png

查看源码:

截屏2020-12-21下午6.59.44.png

补充:
fromCharCode函数:通过asci来获取字符串。
string fromCharCode:根据指定Unicode编码中的序号来返回一个字符串。
chr():返回-数值表达式值为编码的字符,就是传入-一个数值返回这个数值相应的asci码字符。
发现一个解码函数。分析函数可以发现,我们在页面输入的pass enc其实是在架空的状态,只出现了两次,其他的相关的操作都是pass在进行,我们先将上面很可疑的pass转化为字符串,我们转化之后得知,这就是==后来弹窗里的字符,然而好像没什么卵用
我们将16进制转为10进制数字
b="\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(bytes(b).decode('ascii’))
#输出:55,56,54,79,115,69,114,116,107,49,50
于是我们将ascii码数字转字符串
b="55,56,54,79,115,69,114,116,107,49,50"
b=b.split(",")
passwd=""
for bb in b:
  passwd += chr(int(bb))
print(passwd)
#输出:786OsErtk12
得到flag:Cyberpeace{786OsErtk12}

截屏2020-12-21下午7.11.18.png

最后修改:2021 年 09 月 13 日 09 : 28 PM
如果觉得这篇文章不错,不妨赏我碎银几两。