Reber's Blog

会一点点编程、会一点点渗透


301 重定向

0x00 目的

由于博客更换了域名,原来百度收录的都成了死链,所以做一下301重定向
我使用的是github搭建的博客,都是html的文件,先把html文件都上传到自己的服务器上,
修改dns使原域名指向服务器,让百度收录的链接都能够访问,然后设置301

服务器环境:Ubuntu 14.04.5、Apache2

0x01 开启rewrite模块

$ sudo a2enmod rewrite

0x02 根目录下新建.htaccess:

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ http://wyb0.com/$1 [L,R=301]  # 这里换上新域名

0x03 修改配置文件

# AllowOverride None 改为AllowOverride All

$ sudo vim /etc/apache2/apache2.conf
<Directory /var/www/>
    Options FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

0x04 重启Apache

$ sudo /etc/init.d/apache2 restart

Ubuntu 下部署 Gitlab

钢之炼金术师FA

0x00 前期准备

# 环境 Ubuntu 14.04
reber@ubuntu:~/Desktop$ sudo apt-get install openssh-server
reber@ubuntu:~/Desktop$ sudo apt-get install openssh-client
reber@ubuntu:~/Desktop$ sudo apt-get install git

0x01 安装

reber@ubuntu:~/Desktop$ wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/trusty/main/g/gitlab-ce/gitlab-ce_8.8.0-ce.0_amd64.deb
reber@ubuntu:~/Desktop$ sudo dpkg -i gitlab-ce_8.8.0-ce.0_amd64.deb

0x02 配置

reber@ubuntu:~/Desktop$ sudo vim /etc/gitlab/gitlab.rb
    external_url 'http://192.168.188.160:80'
    ......
    gitlab_rails['time_zone'] = 'Asia/Shanghai'
    gitlab_rails['gitlab_email_from'] = 'xxxxxx@163.com'
    ......
    gitlab_rails['smtp_enable'] = true
    gitlab_rails['smtp_address'] = "smtp.163.com"
    gitlab_rails['smtp_port'] = 25
    gitlab_rails['smtp_user_name'] = "xxxxxx@163.com"
    gitlab_rails['smtp_password'] = "111111" # 客户端授权密码
    gitlab_rails['smtp_domain'] = "163.com"
    gitlab_rails['smtp_authentication'] = "login"
    gitlab_rails['smtp_enable_starttls_auto'] = true
    ......
    user["git_user_email"] = "xxxxxx@163.com"
# 只要修改配置文件就要reconfigure
reber@ubuntu:~/Desktop$ sudo gitlab-ctl reconfigure 
reber@ubuntu:~/Desktop$ sudo gitlab-ctl status
run: gitlab-workhorse: (pid 15918) 16s; run: log: (pid 15290) 200s
run: logrotate: (pid 15310) 187s; run: log: (pid 15309) 187s
run: nginx: (pid 15297) 193s; run: log: (pid 15296) 193s
run: postgresql: (pid 15169) 258s; run: log: (pid 15168) 258s
run: redis: (pid 15076) 269s; run: log: (pid 15075) 269s
run: sidekiq: (pid 15384) 141s; run: log: (pid 15279) 206s
run: unicorn: (pid 15360) 158s; run: log: (pid 15246) 212s
reber@ubuntu:~/Desktop$ netstat -anlt
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address       Foreign Address      State
tcp        0      0 127.0.0.1:8080      0.0.0.0:*            LISTEN
tcp        0      0 0.0.0.0:80          0.0.0.0:*            LISTEN
tcp        0      0 127.0.1.1:53        0.0.0.0:*            LISTEN
tcp        0      0 0.0.0.0:22          0.0.0.0:*            LISTEN

# 其中8080是unicore的端口
# 80是nginx的端口,nginx反向代理ruby开的web服务unicore

0x03 访问web页面

  • 有时出现502,可以刷新网页或者再次reconfigure

    more...

[转] JS 操作 cookie 方法的封装

原文链接:http://www.wyzu.cn/2015/0123/107167.html

0x00 实现功能

  • 添加cookie
  • 获取所有cookie
  • 根据名字获取单个cookie的值
  • 移除所有cookie
  • 根据名字移除单个cookie

0x01 封装cookie.js源码

/*
 * 名称和值传送时必须是经过RUL编码的
 * cookie绑定在指定的域名下,非本域无法共享cookie,但是可以是在主站共享cookie给子站
 * cookie的名称不分大小写;同时建议将cookie URL编码
 * 建议针对cookie设置expires、domain、 path;每个cookie小于4KB
 **/

(function(global){
    function getCookiesObj() {
        //获得cookie对象
        var cookies = {};
        if (document.cookie) {
            var objs = document.cookie.split('; ');
            for (var i in objs) {
                var index = objs[i].indexOf('='),
                    name = objs[i].substr(0,index),
                    value = objs[i].substr(index+1,objs[i].length);
                cookies[name] = value;
            }
        }
        return cookies;
    }

    function set(sName,sValue,Opts) {
        //设置cookie
        // Opts expires,path,domain,secure
        if (sName && sValue) {
            var cookie = encodeURIComponent(sName)+'='+encodeURIComponent(sValue);
            
            if (Opts) {
                if (Opts.expires) {
                    var date = new Date();
                    date.setTime(date.getTime()+Opts.expires*24*3600*1000)
                    cookie += '; expires=' + date.toGMTString();
                }
                if (Opts.path) {
                    cookie += '; path=' + Opts.path;
                }
                if (Opts.domain) {
                    cookie += '; domain=' + Opts.domain;
                }
                if (Opts.secure) {
                    cookie += '; secure';
                }
            }
            document.cookie = cookie;
            return cookie;
        } else {
            return '';
        }
    }

    function getCookie(name) {
        //得到某个cookie
        return decodeURIComponent(getCookiesObj()[name]) || null;
    }

    function getCookies() {
        //得到所有cookie
        return getCookiesObj();
    }

    function remove(name) {
        //移除某个cookie
        if (getCookiesObj()[name]) {
            var date = new Date();
            date.setDate(date.getDate()-1);
            document.cookie = name + '=; expires='+date.toGMTString();
        }
    }

    function clear() {
        // 移除所有cookie
        var cookies = getCookiesObj();
        var date = new Date();
        date.setDate(date.getDate()-1);
        for (var key in cookies) {
            document.cookie = key + '=; expires='+date.toGMTString();
        }
    }

    function noConflict(name) {
        //解决冲突
        if (name && typeof name === 'string') {
            if (name && window['cookie']) {
                window[name] = window['cookie'];
                delete window['cookie'];
                return window[name];
            }
        } else {
            return window['cookie'];
            delete window['cookie'];
        }
    }

    global['cookie'] = {
        'set': set,
        'getCookies': getCookies,
        'getCookie': getCookie,
        'remove': remove,
        'clear': clear,
        'noConflict': noConflict
    };
})(window);

0x02 利用的a.html源码

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>cookie example</title>
    </head>
    <body>
        <script type="text/javascript" src="./cookie.js" ></script>
        <script type="text/javascript">
            console.log('----------cookie对象-------------');
            console.log(cookie);
            console.log('----------对象-------------');
            console.log(cookie.getCookies());
            console.log('----------设置cookie-------------');
            console.log(cookie.set('name', 'wlh'));
            console.log('----------设置cookie 123-------------');
            console.log(cookie.set('name', 'wlh123'));
            console.log('----------设置cookie age-------------');
            console.log(cookie.set('age', 20));
            // alert(document.cookie);
            console.log('----------获取cookie-------------');
            console.log(cookie.getCookie('name'));
            console.log('----------获取所有-------------');
            console.log(cookie.getCookies());
            console.log('----------清除age-------------');
            console.log(cookie.remove('age'));
            console.log('----------获取所有-------------');
            console.log(cookie.getCookies());
            console.log('----------清除所有-------------');
            console.log(cookie.clear());
            console.log('----------获取所有-------------');
            console.log(cookie.getCookies());
            console.log('----------解决冲突-------------');
            var $Cookie = cookie.noConflict(true /*a new name of cookie*/);
            console.log($Cookie);
            console.log('----------使用新的命名-------------');
            console.log($Cookie.getCookies());
        </script>
    </body>
</html>

0x03 结果

调用封装文件操作cookie

more...

Python 实现 CDN 的判断

银魂

0x00 什么是CDN

CDN的全称是Content Delivery Network,即内容分发网络。主要功能是在不同地点缓存内容,
运营商会在全国各地的节点上缓存你的网站网页,通过负载均衡技术,将用户的请求定向到最合适的
缓存服务器上去获取内容,比如说你是上海用户,你访问www.aa.com就会被重定向到上海的节点,
你是北京用户,你也访问www.aa.com,但是你会被重定向到上海的节点。

0x01 判断方法

  • 可以查询CNAME记录,每个cdn厂商都有特有的特征串
  • 查看http返回头的头部信息

0x02 代码

首先安装dnspython这个第三方模块:pip install dnspython

more...

AJAX 与 PHP

0x00 AJAX与PHP

ajax.html代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <script>
    function showHint(str) {
        var xmlhttp;
        if (str.length==0) { 
            document.getElementById("txtHint").innerHTML="";
            return;
        }
        if (window.XMLHttpRequest) {
            // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
            xmlhttp=new XMLHttpRequest(); //创建对象
        } else {
            // IE6, IE5 浏览器执行代码
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange=function() {
            if (xmlhttp.readyState==4 && xmlhttp.status==200) {
                document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
            }
        }
        xmlhttp.open("GET","./ajax.php?q="+str,true);
        xmlhttp.send();
    }
    </script>
</head>
<body>
    <h3>在输入框中尝试输入字母 a:</h3>
    <form action=""> 
    输入姓名: <input type="text" id="txt1" onkeyup="showHint(this.value)" />
    </form>
    <p>提示信息: <span id="txtHint"></span></p> 
</body>
</html>
上面的代码会完成以下的东西:

1. 在输入字母时会调用showHint()
2. showHint()创建对象
3. 定义onreadystatechange事件
4. xmlhttp.open()访问当前目录下的ajax.php来请求资源

ajax.php代码如下:

more...

Nessus 的安装和卸载

0x00 下载 Nessus 的 deb 安装包

去【这里】,选择家庭版,然后下载对应的安装包 70 40

0x01 本地安装 Nessus

60

0x02 执行后续安装步骤:

  1. 启动nessus 45

  2. web访问nessus服务 80

  3. 设置账户和密码 30 50

  4. 申请code,可以在【这里】申请 30

    more...

AJAX 的 XHR 请求与响应

0x00 什么是AJAX

AJAX全称是Asynchronous JavaScript and XML,即异步的JavaScript和XML
AJAX不是新的编程语言,而是一种使用现有标准的新方法。
AJAX可在不重新加载整个页面的情况下与服务器交换数据从而更新部分网页

more...

脏牛漏洞

0x00 测试环境

我是在本地虚拟机测试的,个人理解这个漏洞的话可以起到的作用是:一个普通用户可以覆盖一个root用户的只读文件,若理解有误则希望大家提意见

more...

Previous Page 7 of 18 Next Page