Vugen中SurePhrase随机密码位提交的参数关联与赋值实现咨询
Vugen处理SurePhrase动态密码提交实现方案
1. 预定义字符映射
固定密码password1共9位,和Piece1~Piece9括号内的标识一一对应,首先在脚本中定义映射关系:
// 数组下标0对应Piece1,依次类推,存储对应位置的密码字符 const char pwd_chars[9] = {'p','a','s','s','w','o','r','d','1'};
2. 动态拼接请求Body
通过循环遍历所有Piece参数,判断是否为需要提交的动态字段,自动拼接键值对:
Action() { char body_buf[1024] = {0}; // 存储最终拼接的Body内容 char piece_param[16] = {0}; char field_check[16] = {0}; char *piece_val; int has_content = 0; // 标记是否已有有效键值对,避免开头多冗余&符号 int i; // 遍历9个Piece参数 for(i=1; i<=9; i++){ // 生成当前Piece参数名,例如Piece5 sprintf(piece_param, "Piece%d", i); piece_val = lr_eval_string(piece_param); // 生成对比用的fieldX值,例如field5 sprintf(field_check, "field%d", i); // 判断当前Piece值不是fieldX,属于需要提交的动态字段 if(strcmp(piece_val, field_check) != 0){ if(has_content == 1){ // 已有内容先拼接&分隔符 strcat(body_buf, "&"); } // 拼接键值对:[动态字段ID]=[对应密码字符] strcat(body_buf, piece_val); strcat(body_buf, "="); strncat(body_buf, &pwd_chars[i-1], 1); has_content = 1; } } // 拼接末尾固定参数 strcat(body_buf, "&landingpage"); // 将拼接好的Body存为参数供提交请求调用 lr_param_sprintf("DynamicBody", "Body=%s", body_buf); // 原有提交请求直接替换Body为{DynamicBody}即可 web_submit_data("login_submit", "Action=https://你的登录提交地址", "Method=POST", lr_eval_string("{DynamicBody}"), LAST ); return 0; }
注意事项
- 运行前需确认你抓取到的Piece参数数量和密码长度匹配,如果后续密码长度或者Piece参数数量变化,修改数组长度和循环上限即可
- 若动态字段值存在特殊字符,需要额外做URL编码处理,可调用Vugen内置的
web_url_encode函数对值做转义
内容的提问来源于stack exchange,提问作者Hendri
相关产品推荐
相关产品推荐

