专栏首页码农UP2U打造后台登录页面扫描工具

打造后台登录页面扫描工具

后台登录页面扫描工具想必大部分人都比较熟悉,也比较常见。它的开发也并不难,只要对 URL 进行求情,并判断其 HTTP 的返回状态码就可以实现了。我们来实现一个简单的后台登录页面的扫描工具。

界面的布局

这种工具几乎所有语言都可以完成,首选语言应该是 Python 居多,因为 Python 处理 HTTP 的库容易使用,上手更快。不过,我这里使用的是 VC 中的 MFC 来实现的。先来看看它的界面,界面如下:

在界面上,URL 后面的编辑框属于要扫描的 URL 地址,后面的下拉框选择对应的语言,比如 PHP、ASP 等。填好 URL 地址和对应的语言后,点击扫描就开始进行扫描。扫描的进度和结果会出现在下面的列表框中的。

代码编写

整个代码都是通过点击按钮开始的,那么就从点击按钮后触发点击事件来写代码,点击按钮的代码如下:

void CScanAdminPageDlg::OnBnClickedButton1()
{
    m_ScanList.DeleteAllItems();

    // 获取输入的URL内容
    CString strURL;
    GetDlgItemText(IDC_EDIT1, strURL);

    // 创建事件
    m_hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);

    // 创建扫描线程
    HANDLE hThread = NULL;
    hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ScanThread, this, 0, NULL);
    WaitForSingleObject(m_hEvent, INFINITE);

    ResetEvent(m_hEvent);
}

在按钮点击后,通过 CreateThread 来创建一个线程进行扫描。

DWORD WINAPI CScanAdminPageDlg::ScanThread(LPVOID lpParam)
{
    CScanAdminPageDlg *pThis = (CScanAdminPageDlg*)lpParam;

    SetEvent(pThis->m_hEvent);

    // 在线程函数中获取下拉选框的内容
    // 下拉选项是asp和php两项
    CString strWebType;
    pThis->GetDlgItemText(IDC_COMBO1, strWebType);

    // 在线程函数中获取扫描URL地址
    CString strUrl;
    pThis->GetDlgItemText(IDC_EDIT1, strUrl);
    
    // 通过下拉选项来构造字典
    // asp.dic 或 php.dic
    char szFileName[MAX_PATH] = { 0 };
    wsprintf(szFileName, "%s.dic", strWebType);

    // 打开字典文件文件
    // 从中读取可能的后台页面
    FILE *DicFile = NULL;
    fopen_s(&DicFile, szFileName, "r");
    char szDic[MAXBYTE] = { 0 };
    while ( fgets(szDic, MAXBYTE, DicFile) )
    {
        if ( szDic[lstrlen(szDic) - 1] == '\n' )
        {
            szDic[lstrlen(szDic) - 1] = NULL;
        }

        // 扫描URL地址和字典中的页面文件进行拼接
        CString strCheckUrl = strUrl + szDic;

        // 判断页面是否存在
        // 存在则在地址的结尾增加“[OK]”字样
        if ( pThis->CheckUrl(strCheckUrl) )
        {
            strCheckUrl += "[OK]";
            pThis->m_ScanList.InsertItem(0, strCheckUrl);
            continue;
        }

        // 将扫描的地址添加至字典
        pThis->m_ScanList.InsertItem(pThis->m_ScanList.GetItemCount(), strCheckUrl);
    }

    return 0;
}

上面的代码中,关键的部分是 CheckUrl 函数,它用来请求实际的 URL,并检查 HTTP 的请求状态。

BOOL CScanAdminPageDlg::CheckUrl(CString strUrl)
{
    // 建立一个SESSION
    CInternetSession session("ScanAdminPage");
    // 建立一个HTTP连接
    CHttpConnection *pServer = NULL;
    // 获取一个HTTP文件
    CHttpFile *pFile = NULL;

    // 检测输入的URL是否符合格式,并把URL解析
    CString strServerName;  // 服务器地址
    CString strObject;      // URL指向的对象
    INTERNET_PORT nPort;    // 端口号
    DWORD dwServiceType;    // 服务类型

    // URL解析失败则返回
    // 解析扫描的URL
    if ( !AfxParseURL(strUrl, dwServiceType, strServerName, strObject, nPort) )
    {
        return NULL;
    }

    // 服务类型错误
    if ( dwServiceType != INTERNET_SERVICE_HTTP )
    {
        return NULL;
    }

    // 配置连接服务器的地址、端口,并获取该HTTP连接
    pServer = session.GetHttpConnection(strServerName, nPort);
    // 打开该HTTP连接
    pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_GET, strObject, NULL, 1, NULL, NULL, INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_NO_AUTO_REDIRECT);
    
    try
    {
        // 发起请求
        pFile->SendRequest();
    }
    catch (CException* e)
    {
        return NULL;
    }

    DWORD dwRet;
    // 获取该请求的回应状态码
    pFile->QueryInfoStatusCode(dwRet);

    BOOL bRet = FALSE;
    
    // HTTP返回值为200表示成功
    if ( dwRet == 200 )
    {
        bRet = TRUE;
    }

    // 释放指针
    if ( pFile != NULL )
    {
        delete pFile;
    }
    if ( pServer != NULL )
    {
        delete pServer;
    }

    // 关闭会话
    session.Close();

    return bRet;
}

程序测试

在虚拟机中启动 DVWA 靶场,然后填入靶场的地址,选择的语言是 PHP,因为 DVWA 是 PHP 编写的,然后点击扫描。可以看到,其登录页面是 login.php。

完整内容参考《C++黑客编程揭秘与防范》(第三版)一书。

本文分享自微信公众号 - 码农UP2U(gh_3c91b47a82e0),作者:码农UP2U

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-05-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 信息泄漏篇

    Robots协议是网站国际互联网界通行的道德规范,其目的是保护网站数据和敏感信息、确保用户个人信息和隐私不被侵犯,如果robots.txt文件编辑的太过详细,反...

    Ms08067安全实验室
  • Vulnhub渗透测试:DC-3

    ​ 由于最近一段时间都在准备大二上学期推迟的期末考试,所以导致安全方面的学习的文章没有持续更新,对于内网渗透来说,我还是比较喜欢搞的,一是知识点概括比较全...

    ly0n
  • Vulnhub渗透测试:DC-2

    ​ 由于最近一段时间都在准备大二上学期推迟的期末考试,所以导致安全方面的学习的文章没有持续更新,对于内网渗透来说,我还是比较喜欢搞的,一是知识点概括比较全...

    ly0n
  • 基于机器学习的Web管理后台识别方法探索

    长期以来,Web管理后台一直是攻击者觊觎的目标。部分信息安全意识薄弱的业务在未作任何安全加固(设置IP白名单、强口令、二次认证、验证码、请求频率审计等)的情况下...

    腾讯安全应急响应中心
  • 邮箱安全服务专题 | 发现那些对钓鱼邮件安全意识淡薄的员工

    上一期我们介绍了针对邮箱应用层和协议层面的安全检测,目前针对邮箱系统自身风险的服务内容已经向大家介绍完了。然而保障了邮箱自身的系统安全还是远远不够的,每一篇邮件...

    安恒信息
  • GlasgowSmile-v2通关笔记

    正如上图看到的扫描结果并没有得到有用的东西,这个工具不行,显然要更换工具继续干。常用的WEB目录扫描工具有:Dirsearch、DirBuster 、御剑等。

    刘銮奕
  • 登陆页面渗透测试常见的几种思路与总结

    我们在进行渗透测试的时候,常常会遇到许多网站站点,而有的网站仅仅是基于一个登陆接口进行处理的。尤其是在内网环境的渗透测试中,客户常常丢给你一个登陆网站页面,没有...

    HACK学习
  • 【渗透技巧】浅谈常规渗透瓶颈,实例发散思维突破

    aerfa
  • 小白博客 SQL注入实战

    本文仅供学习交流,目的是为了构建更加安全的网络环境! 注入地址 某VIP会员专用系统http://www.tcmpv.com/index.php/...

    奶糖味的代言
  • 人工智能-刷脸登录实现

    在QRCodeUtil类头添加 @Component 注解,使用时可通过 @Autowired 来自动装配。

    cwl_java
  • 扫普通链接二维码打开微信小程序

    前段时间我们项目有个需求,用户通过扫描我们后台生成的一个二维码,就会跳转到我自己的微信小程序,我就参考了微信小程的文档中的【通过扫普通链接二维码打开微信小程序】...

    用户4945346
  • 一文带你网络安全 入门到入* [网络安全]

    笔记来源B站视频(知识区>野生技术协会) 黑客攻防 从入门到入yu【網絡安全】:https://www.bilibili.com/video/BV1E4411...

    天钧
  • 微信扫码登录的几秒钟里,到底发生了什么

    这天中午,小A吃完午饭,摊在自己的躺椅上,想趁吃饱喝足的午后时间静静享受独自的静谧。

    帅地
  • Vulnhub之DC-2过关记录

    1.下载DC-1靶机 2.将DC-2.ova导入到VMware中(具体流程:略) 3.用ip addr查看本机IP

    刘銮奕
  • 微信小程序开发详解《一》开发准备,开发工具使用简介,工程目录结构

    一:开发准备 1、 注册微信开发者账号 登录:https://mp.weixin.qq.com/ 进行注册. 目前仅支持企业和组织等非个人注册微信小程序账号,...

    极乐君
  • TScanCode助您打造健康代码!

    WeTest腾讯质量开放平台隆重推出腾讯互娱研发部自研C++静态代码扫描工具TScanCode。助力游戏开发者高效精准的打造健康游戏代码。

    WeTest质量开放平台团队
  • 从目录信息泄露到渗透内网

    信息安全公益宣传,信息安全知识启蒙。 教程列表见微信公众号底部菜单 1、目录信息泄露 目录信息泄露是指当当前目录无index.html/index.asp/in...

    企鹅号小编
  • 利用QRLJacking工具获取Whatsapp帐号权限

    这篇文章将会教你如何用 QRLJacking 去获取别人 Whatsapp 帐号的权限,这种攻击是交互式,需要受害者去扫描你搭建好的钓鱼网站里面的恶意二维码,或...

    FB客服
  • 记一次有意思的文件上传

    由于站点对上传文件未作过滤或过滤机制不严(文件后缀或类型),导致恶意用户可以上传脚本文件,通过上传文件可达到控制网站权限的目的。

    Ms08067安全实验室

扫码关注云+社区

领取腾讯云代金券