攻防世界-Web-新手区
一、view_source
题目描述:
X老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了。
解决思路:
打开F12,查看网页源代码
拿到flag
cyberpeace{486c0bb86e85a7a04bf3675de3d9357c}
二、get_post
题目描述:
X老师告诉小宁同学HTTP通常使用两种请求方法,你知道是哪两种吗?
解决过程:
-
打开后发现:请用GET方式提交一个名为a,值为1的变量
-
在路径后添加 ?a=1,发现又有新的问题:
请再以POST方式随便提交一个名为b,值为2的变量
-
用Burp Suite进行抓包重新发送
-
得到flag
cyberpeace{b4b8028bbe315eb7ee4a804b72329254}
三、rebots
题目描述:
X老师上课讲了Robots协议,小宁同学却上课打了瞌睡,赶紧来教教小宁Robots协议是什么吧。
解题过程:
-
了解robots协议:
robots:搜索引擎经过一种程序robot(又称spider),自动访问互联网上的网页并获取网页信息。
您能够在您的网站中建立一个纯文本文件robots.txt,在这个文件中声明该网站中不想被robot访问的部分,
这样,该网站的部分或所有内容就能够不被搜索引擎收录了,或者指定搜索引擎只收录指定的内容。该文件默认在网站根目录下。
所以直接访问该地址下的robots.txt文件看到flag文件后,访问该文件便可。
-
-
访问flag_ls_h3re.php
-
得到flag
cyberpeace{cfd7a84acc3b0314e85b47a2af6987fd}
四、backup
题目描述:
X老师忘记删除备份文件,他派小宁同学去把备份文件找出来,一起来帮小宁同学吧!
解题过程:
-
通过界面的提示,要找到index.php的备份文件
-
百度php备份文件
-
访问index.php~没找到,访问index.php.bak下载了一个文件
-
使用文本编译器打开该文件
-
找到flag
Cyberpeace{855A1C4B3401294CB6604CCC98BDE334}
五、cookie
题目描述:
X老师告诉小宁他在cookie里放了些东西,小宁疑惑地想:‘这是夹心饼干的意思吗?’
解题过程:
-
查看本地cookie,按F22
-
查看到cookie中给了个提示cookie.php,访问cookie.php
-
给了提示,查看请求头,按F12查看请求头
-
-
找到flag
cyberpeace{a85b6d6bd8477b670e6c92ee4f15a12e}
六、disabled_button
题目描述:
X老师今天上课讲了前端知识,然后给了大家一个不能按的按钮,小宁惊奇地发现这个按钮按不下去,到底怎么才能按下去呢?
解题过程:
-
使按钮能按下去,按F12,找到按钮的网页源代码
-
删除后再点击按钮
-
得到flag
cyberpeace{787d3cfb5e97261e32ba91524b81cc40}
七、weak_auth
题目描述:
小宁写了一个登陆验证页面,随手就设了一个密码。
解题过程:
-
使用1,1登录,提示要用用户名为admin的账户登录
-
使用Burp Suite拦截登录请求,使用intrder进行爆破
3.上网搜索常见的弱口令字典,进行爆破
4.使用账户名:admin,密码:123456,获得flagcyberpeace{2ec781d3320b638faace14f57410ee4a}
八、simple_php
题目描述:
小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。
解题过程:
-
得到一些代码
<?php show_source(__FILE__); include("config.php"); $a=@$_GET['a']; $b=@$_GET['b']; if($a==0 and $a){ # 如果a的值==0 并且为空,输出flag1 echo $flag1; } if(is_numeric($b)){ # 如果b的值是数字,退出 exit(); } if($b>1234){ # 如果b的值大于1234,输出flag1 echo $flag2; } ?>
-
了解php的 == ,构建a =0a,b=1235a,转换后a=0,b=1235符合条件
-
得到flag
Cyberpeace{647E37C7627CC3E4019EC69324F66C7C}
九、xff_referer
题目描述:
X老师告诉小宁其实xff和referer是可以伪造的。
解题过程:
-
了解xff和referer
xff:X-Forwarded-For。是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段。
refer:HTTP来源地址。 是HTTP表头的一个字段,用来表示从哪儿链接到当前的网页,采用的格式是URL。 简单的讲,referer就是告诉服务器当前访问者是从哪个url地址跳转到自己的
-
规定了ip地址必须为:123.123.123.123,使用Burp Suite伪造请求,添加
X-Forwarded-For: 123.123.123.123
-
添加
Referer:https://www.google.com
-
获取flag
cyberpeace{9a130273e54c9830b1b148706c0dedec}
十、webshell
题目描述:
小宁百度了php一句话,觉着很有意思,并且把它放在index.php里。
解题过程:
-
了解webshell
webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种代码执行环境,主要用于网站管理、服务器管理、权限管理等操作。
使用方法简单,只需上传一个代码文件,通过网址访问,便可进行很多日常操作,极大地方便了使用者对网站和服务器的管理。
正因如此,也有小部分人将代码修改后当作后门程序使用,以达到控制网站服务器的目的。
webshell是一种通过上传脚本就可以管理网站和服务器的环境,
“一句话木马”的原理
最基础的一句话如下:
<?php @eval($_POST[‘value’]);?>参数和符号解释:
eval函数将括号内的代码通过php语言执行括号内就是通过POST方式传递一个名为’value’的表单(value也可以换成其他的名字)加上@后忽略了服务器的报错。过程:
- 黑客将包含“一句话”的脚本到服务器,服务器执行;
- 黑客便可以利用中国菜刀、蚁剑、冰蝎等工具进行连接(菜刀的原理可以见下面的博客);
- 一句话执行的代码会返回目录的句柄,从而拿到网站服务器的webshell;达到浏览、控制的目的。
-
使用kali的weevely,连接失败
┌──(kali㉿kali)-[~] └─$ weevely http://111.200.241.244:60850/ shell [+] weevely 4.0.1 [+] Target: 111.200.241.244:60850 [+] Session: /home/kali/.weevely/sessions/111.200.241.244/_2.session [+] Browse the filesystem or execute commands starts the connection [+] to the target. Type :help for more information. weevely> help Backdoor communication failed, check URL availability and password
-
只好用中国菜刀试一下
-
得到flag
cyberpeace{b7612a5ad012c8b3dc3d5feb9fb8ca62}
十一、command_execution
题目描述:
小宁写了个ping功能,但没有写waf,X老师告诉她这是非常危险的,你知道为什么吗。
解题过程:
-
了解shell
# 先执行 command1,如果为真,再执行 command2 command1 && command2 # 只执行 command2 command1 | command2 # 先执行 command2 后执行 command1 command1 & command2 # 先执行 command1,如果为假,再执行 command2 command1 || command2
-
先试一试 ls,展示目录
-
查看位置
-
进入主目录看一下
-
打开flag.txt
-
得到flag
cyberpeace{e4430c545c196a9bfc962d6cdf63c8fd}
十二、simple_js
题目描述:
小宁发现了一个网页,但却一直输不对密码。(Flag格式为 Cyberpeace{xxxxxxxxx} )
解题过程:
-
按F12查看网页源代码,发现无论输入什么,都是用的假密码
function dechiffre(pass_enc){ var pass = "70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65"; var tab = pass_enc.split(','); var tab2 = pass.split(','); var i,j,k,l=0,m,n,o,p = "";i = 0;j = tab.length; k = j + (l) + (n=0); n = tab2.length; for(i = (o=0); i < (k = j = n); i++ ){ o = tab[i-l]; p += String.fromCharCode((o = tab2[i])); if(i == 5)break; } for(i = (o=0); i < (k = j = n); i++ ){ o = tab[i-l]; if(i > 5 && i < k-1) p += String.fromCharCode((o = tab2[i])); } p += String.fromCharCode(tab2[17]); pass = p; return pass; } 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")); h = window.prompt('Enter password'); alert( dechiffre(h) );
-
注意到 一串的\x组成的字符串,百度查看\x在编码中代表的意思
-
使用python将其转成10进制,再通过ASCII找到对应的字符(chr()函数返回当前整数对应的 ASCII 字符)
──(kali㉿kali)-[~] └─$ python Python 3.9.10 (main, Jan 16 2022, 17:12:18) [GCC 11.2.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> 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(s) [55, 56, 54, 79, 115, 69, 114, 116, 107, 49, 50] >>> s = [55, 56, 54, 79, 115, 69, 114, 116, 107, 49, 50] >>> for i in s: ... print(chr(i),end='') ... 786OsErtk12>>>
-
得到flag
Cyberpeace{786OsErtk12}