网页脚本注入执行任意代码
——突破网页本地脚本验证方法实例
最近为了帮朋友批量查询信息,查询页面上要求输入验证码,查询结果要保存到文件。首先想到的是验证码自动识别,太复杂了。总算让我找到一个非常好的软件——《网页自动操作通用工具》,不但可以通过注入跳过验证码,还能自动批量查询并保存查询结果。现将整个过程写下来分享一下。
基本理论:网页通过浏览器执行js脚本代码,实现对用户输入信息的合法性验证,这里指的是验证码验证。由于代码是在我们的本地浏览器中执行,所以我们完全有办法控制它。一般我们可以通过这种方法突破网页倒计时、提交非法字符、跳过验证码等。
先来看一看这个网页界面图吧
操作非常简单,输入企业全名和验证码,点击查询按钮,就能得到结果了。其中企业全名保存在文件文件中。
这里请出我们的主角《网页自动操作通用工具》,下面给大家说一下每步操作。
一、由于是填写网页操作,我们新建一个自动提交操作,并添加网址,如图
二、我们设置让程序自动输入公司名称,打开提交内容选项卡,添加提交内容。
打开自动获取功能,等待网页打开后,将鼠标移到公司全名输入框,点击右键菜单中的获取元素,程序自动分析获取方法,只需再次点击“添加元素”即可
再看下图,第1小步的内容已经通过自动获取自动填写了,第2我们要自动填写,就是改变这个元素的value属性,第3选择从文本文件批量输入数据 。最后点击确定添加这个输入条目。
三、分析提交代码,注入破解脚本代码,由于我们想办法跳过验证码,所以不再设置验证码输入。
直接进入提交环节设置
如下图,将鼠标移到“查询”按钮处,可以看到相关代码。
<IMG οnclick="doQuery('1')" style="CURSOR: pointer" border=0 src="images/chaxun.jpg">
我们再去查找"doQuery('1')"这个提交方法
我们得到了关键的代码段
var reply =function(data){
if(data=='error'){
document.getElementById("show").style.display="none";
alert("验证码有误,请输入正确的验证码!");
refreshimg();
return false;
}else{
form1.action="ggtz.do?method=getqyjbxxdetail";
form1.submit();
}
这里就是判断验证码的。只需要将这段代码改为
form1.action="ggtz.do?method=getqyjbxxdetail";
form1.submit();
这样我们就不对验证码进行验证,直接提交表单。
为简单起见,我们不修改”doQuery(ec_p)",而是增加一个方法函数”sub()”
function sub()
{
form1.action="ggtz.do?method=getqyjbxxdetail";
form1.submit();
}
在《网页自动操作通用工具》程序中,注入“sub()”的方法如下,这里我们选择“打开网页后填写表单前”注入这个函数。
四、设置提交方法,这里我们直接执行“sub()”来提交,跳过了就不必输入验证码。
五、设置保存查询结果到文件,让程序每次提交后,无条件报警,报警时保存指定元素就行了。这里简单截图说明
下图为设置报警后,需要保存的网页元素
下图设置要保存的文件格式和路径
六、最后我们再来看一下,软件开始执行后,网页显示内容。程序只自动输入企业全名,未输入验证码,未点击查询按钮,通过执行注入脚本得到了查询结果。
——突破网页本地脚本验证方法实例
最近为了帮朋友批量查询信息,查询页面上要求输入验证码,查询结果要保存到文件。首先想到的是验证码自动识别,太复杂了。总算让我找到一个非常好的软件——《网页自动操作通用工具》,不但可以通过注入跳过验证码,还能自动批量查询并保存查询结果。现将整个过程写下来分享一下。
基本理论:网页通过浏览器执行js脚本代码,实现对用户输入信息的合法性验证,这里指的是验证码验证。由于代码是在我们的本地浏览器中执行,所以我们完全有办法控制它。一般我们可以通过这种方法突破网页倒计时、提交非法字符、跳过验证码等。
先来看一看这个网页界面图吧
操作非常简单,输入企业全名和验证码,点击查询按钮,就能得到结果了。其中企业全名保存在文件文件中。
这里请出我们的主角《网页自动操作通用工具》,下面给大家说一下每步操作。
一、由于是填写网页操作,我们新建一个自动提交操作,并添加网址,如图
二、我们设置让程序自动输入公司名称,打开提交内容选项卡,添加提交内容。
打开自动获取功能,等待网页打开后,将鼠标移到公司全名输入框,点击右键菜单中的获取元素,程序自动分析获取方法,只需再次点击“添加元素”即可
再看下图,第1小步的内容已经通过自动获取自动填写了,第2我们要自动填写,就是改变这个元素的value属性,第3选择从文本文件批量输入数据 。最后点击确定添加这个输入条目。
三、分析提交代码,注入破解脚本代码,由于我们想办法跳过验证码,所以不再设置验证码输入。
直接进入提交环节设置
如下图,将鼠标移到“查询”按钮处,可以看到相关代码。
<IMG οnclick="doQuery('1')" style="CURSOR: pointer" border=0 src="images/chaxun.jpg">
我们再去查找"doQuery('1')"这个提交方法
我们得到了关键的代码段
var reply =function(data){
if(data=='error'){
document.getElementById("show").style.display="none";
alert("验证码有误,请输入正确的验证码!");
refreshimg();
return false;
}else{
form1.action="ggtz.do?method=getqyjbxxdetail";
form1.submit();
}
这里就是判断验证码的。只需要将这段代码改为
form1.action="ggtz.do?method=getqyjbxxdetail";
form1.submit();
这样我们就不对验证码进行验证,直接提交表单。
为简单起见,我们不修改”doQuery(ec_p)",而是增加一个方法函数”sub()”
function sub()
{
form1.action="ggtz.do?method=getqyjbxxdetail";
form1.submit();
}
在《网页自动操作通用工具》程序中,注入“sub()”的方法如下,这里我们选择“打开网页后填写表单前”注入这个函数。
四、设置提交方法,这里我们直接执行“sub()”来提交,跳过了就不必输入验证码。
五、设置保存查询结果到文件,让程序每次提交后,无条件报警,报警时保存指定元素就行了。这里简单截图说明
下图为设置报警后,需要保存的网页元素
下图设置要保存的文件格式和路径
六、最后我们再来看一下,软件开始执行后,网页显示内容。程序只自动输入企业全名,未输入验证码,未点击查询按钮,通过执行注入脚本得到了查询结果。