攻防世界 web练习区

目录

view_source

robots

backup

disabled_button

weak_auth

simple_php

get_post

xff_referer

webshell

 command_execution

 simple_js



view_source

右键无法查看页面源代码

方法一: ctrl+U

方法二:view_source+url

robots

robots协议也叫robots.txt,是存放在网站根目录下ASCII编码的文本文件,通常告诉网络搜索引擎漫游器,此网站哪些内容不应该被搜索引擎的漫游器获取,哪些可以被获取。一些系统URL大小写敏感,所以robots.txt文件名统一小写。它是搜索引擎中访问网站的时候要查看的第一个文件。

将网站视为酒店房间,robots.txt就是主人在房间门口悬挂的“请勿打扰”或“欢迎打扫”的提示牌。这个文件告诉来访的搜索引擎哪些房间可以进入和参观,哪些房间因为存放贵重物品,或可能涉及住户及访客的隐私而不对搜索引擎开放。但robots.txt不是命令,也不是防火墙,如同守门人无法阻止窃贼等恶意闯入者。

方法:直接访问url/robots.txt

backup

题目提示备份文件

方法一:

常见网站备份文件后缀.git .svn .swp .~ .bak .bash_history

尝试访问:url+index.php+文件后缀

最后发现是     url+index.php.bak

方法二:

用dirsearch扫站点目录

dirsearch.py -u http://111.200.241.244:60770  -e php

burp suite抓包

访问   url/cookie.php

 提示看返回包。

disabled_button

 disabled属性导致按钮不能按。

删掉disabled该属性,按下按钮得到flag。

weak_auth

先随意账号密码

提示账号为admin

账号为admin,密码用burpsuite爆破。

得到密码为123456  登入拿到flag。

simple_php

题目:

<?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为弱比较类型。==只比较值,不比较类型。===除了比较值,也比较类型。

当a=false时a==0

方法一: 

?a=flase&b=7777r

方法二:

?a=p&b=7777r

get_post

根据题目提示用get方式提交a=1

xff_referer

 simple_js

X-Forwarded-For简称XFF。是一个HTTP扩展头部,用来表示HTTP请求端真实IP。

X-Forwarded-For请求头格式:X-Forwarded-For: client, proxy1, proxy2

brup抓包,在http头加一条X-Forwarded-For: 123.123.123.123

再增加一条Referer: https://www.google.com

referer就是告诉服务器当前访问者是从哪个url地址跳转到自己的,跟xff一样,referer也可直接修改

webshell

方法一:

蚁剑连接,找到flag.txt文件

方法二:

 command_execution

该题考察命令执行

find / -name flag.txt     在根目录下查找flag.txt文件。

或者 

1|find / -name *.txt

1|tac /home/flag.txt

 simple_js

尝试禁用js

1、在地址栏输入  about:config ,提示三思后行,点击接受风险并继续。

2、搜索地址栏中输入javascript.enabled

3、把true改成false就行。(做完题不要忘记改回来)

发现与此无关

查看页面源代码,看js部分

<script type="text/javascript">
    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) );

</script>

代码审计,js基础不牢,没太看懂。看了一下师傅们的博客。意思好像输出和我们输入没关系。

有一串16进制的字符\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,就是flag内容。

 转码一下。

得到55,56,54,79,115,69,114,116,107,49,50

对照ASCII码表再转换为字符。

或者用python

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值