我们现在来说说
第一个方法,
如何屏蔽验证码。很简单,我们只要跟开发说一句,“帮我把验证码那段代码注释掉,可以吗”。最简单,最暴力,最直接的方法,大家学会了么,学不会怪自己。
第二个方法,设置万能验证码。什么叫万能验证码?就是让开发在代码里重新写一个验证方法,每次前端输入验证码“1234”就验证通过,懂了吗?或者再来个更黄更暴力的,前端页面不管输入什么,都验证通过!!!一点都不黄,好,先别高兴,上面两个方式排除验证码,
工作量都在开发方,程序猿或许会不高兴,这时候我们怎么办?
我们来看
第三个方法,比较难,也考验我们测试圆的实力。破解验证码,这个方法适用破解一些有简单规律的验证码,我们举一个例子,大家从中或许能得到一些启发。
经过源码分析,我们发现每次客户端请求过来的验证码都可以取到,格式固定,是四个数字的组合,52|52|52|51|46|47|49|55|,根本就不是四个字啊~~好吧,对应界面的验证码是:6039
我们发现规律是第2,5,7,9位的值减去46对应的即是验证码。
有了这个规律,就可以通过关联提前取得服务器的验证码,然后通过简单的计算,得到结果。详细代码如下:
#include “web_api.h”
Action()
{
// char* str = “52|52|52|51|46|47|49|55|”;
char result[64];
int num1;
int num2;
int num3;
int num4;
int temp1;
int temp2;
int temp3;
int temp4;
web_set_user(“XXXXDomain\\szXXXX”,
lr_decrypt(“46246a2633f042c67758b9ddc2b863038aa063c03d7e”),
“
XXXX.XXXX.com.cn:8080”);
web_reg_save_param(“check”, “LB=Image=”, “RB=\\”, LAST);
web_url(“Register”,
“URL=
http://XXXX.XXXX.com.cn:8080/xx/main/Register”,
“Resource=0”,
“RecContentType=text/html”,
“Referer=”,
“Snapshot=t1.inf”,
“Mode=HTML”,
LAST);
lr_think_time( 6 );
sscanf(lr_eval_string(“{check}”), “%d|%d|%d|%d|%d|%d|%d|%d”, &temp1, &num1, &temp2, &temp3, &num2, &temp4, &num3, &num4);
num1 -= 46;
num2 -= 46;
num3 -= 46;
num4 -= 46;
sprintf(result, “%d%d%d%d”, num1, num2, num3, num4);
lr_log_message(“getvalue : %s”, result);
web_submit_form(“Register;jsessionid=6726009A7D21963602B166D91C883413”,
“Snapshot=t2.inf”,
ITEMDATA,
“Name=Register.reason”, “Value= “, ENDITEM,
“Name=set_attach”, “Value=result”, ENDITEM,
LAST);
return 0;
}