Web暴力破解及SQL注入

Web暴力破解及SQL注入》作业

课程名称:《Web安全(二)》

作业内容:

  1. 已知owasp服务器内的网站用户名为:gordonb 密码为6位,前三位为‘abc’后三位为数字,对其进行爆破得到正确的密码并验证。
  2. 使用SQLmap对该网站的前3个SQL注入案例进行SQL注入,将用户名和密码展示出一张表,实现拖库操作。

【要求】

  1. 概念越详细越好;
  2. 验证过程必要有截图和文字说明;
  3. 防护措施必须超过5条以上;
  4. 其余部分均可配文字简介叙述;
  5. 作业模板在此基础上可以自由发挥设计;

【SQL注入漏洞概述】

SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。

SQL注入攻击属于数据库安全攻击手段之一,可以通过数据库安全防护技术实现有效防护,数据库安全防护技术包括:数据库漏扫、数据库加密数据库防火墙数据脱敏数据库安全审计系统

SQL注入攻击会导致的数据库安全风险包括:刷库拖库撞库

SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问

 

没什么区别,所以市面的防火墙都不会对SQL注入发出警报,如果管理员没查看ⅡS日志的习惯,可能被入侵很长时间都不会发觉。但是,SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情况,需要构造巧妙的SQL语句,从而成功获取想要的数据.

总体思路

·发现SQL注入位置;

·判断后台数据库类型;

·确定XP_CMDSHELL可执行情况

·发现WEB虚拟目录

·上传ASP木马

·得到管理员权限;

  一般来说,SQL注入一般存在于形如:HTTP://xxx.xxx.xxx/abc.asp?id=XX等带有参数

SQL注入攻击

的ASP动态网页中,有时一个动态网页中可能只有一个参数,有时可能有N个参数,有时是整型参数,有时是字符串型参数,不能一概而论。总之只要是带有参数的动态网页且此网页访问了数据库,那么就有可能存在SQL注入。如果ASP程序员没有安全意识,不进行必要的字符过滤,存在SQL注入的可能性就非常大。

为了全面了解动态网页回答的信息,首选请调整IE的配置。把IE菜单-工具-Internet选项-高级-显示友好HTTP错误信息前面的勾去掉。

为了把问题说明清楚,以下以HTTP://xxx.xxx.xxx/abc.asp?p=YY为例进行分析,YY可能是整型,也有可能是字符串。

⒈整型参数的判断

当输入的参数YY为整型时,通常abc.asp中SQL语句原貌大致如下:

select * from 表名 where 字段=YY,所以可以用以下步骤测试SQL注入是否存在。

①HTTP://xxx.xxx.xxx/abc.asp?p=YY’(附加一单引号),此时abc.ASP中SQL语句变成了

select * from 表名 where 字段=YY’,abc.asp运行异常;

webSQL注入攻击分析统计

②HTTP://xxx.xxx.xxx/abc.asp?p=YY and 1=1,abc.asp运行正常,而且与HTTP://xxx.xxx.xxx/abc.asp?p=YY运行结果相同;

③HTTP://xxx.xxx.xxx/abc.asp?p=YY and 1=2,abc.asp运行异常;

⒉字符串型参数的判断

当输入的参数YY为字符串时,通常abc.asp中SQL语句原貌大致如下:

select * from 表名 where 字段='YY',所以可以用以下步骤测试SQL注入是否存在。

①HTTP://xxx.xxx.xxx/abc.asp?p=YY’(附加一个单引号),此时abc.ASP中的SQL语句变成了

select * from 表名 where 字段=YY’,abc.asp运行异常;

②HTTP://xxx.xxx.xxx/abc.asp?p=YY&nb ... 39;1'='1',abc.asp运行正常,而且与HTTP://xxx.xxx.xxx/abc.asp?p=YY运行结果相同;

③HTTP://xxx.xxx.xxx/abc.asp?p=YY&nb ... 39;1'='2',abc.asp运行异常;

如果以上三步全面满足,abc.asp中一定存在SQL注入漏洞。

⒊特殊情况的处理

有时ASP程序员会在程序员过滤掉单引号等字符,以防止SQL注入。此时可以用以下几种方法试一试。

①大小定混合法:由于VBS并不区分大小写,而程序员在过滤时通常要么全部过滤大写字符串,要么全部过滤小写字符串,而大小写混合往往会被忽视。如用SelecT代替select,SELECT等;

②UNICODE法:在ⅡS中,以UNICODE字符集实现国际化࿰

  • 5
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
实现这样的功能需要使用一些第三方库和工具,比如:requests、BeautifulSoup、sqlmap、lxml、pycurl等。以下是一个简单的Python代码示例,可以实现基本的web漏洞扫描功能: ```python import requests from bs4 import BeautifulSoup import re # 定义一个检查XSS漏洞的函数 def check_xss(url): payload = '<script>alert("XSS");</script>' r = requests.get(url + payload) if payload in r.text: print("[+] XSS Vulnerability Detected: " + url) # 定义一个检查SQL注入漏洞的函数 def check_sql_injection(url): payload = "'" r = requests.get(url + payload) if "error in your SQL syntax" in r.text: print("[+] SQL Injection Vulnerability Detected: " + url) # 定义一个检查XXE漏洞的函数 def check_xxe(url): payload = '<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE foo [<!ELEMENT foo ANY><!ENTITY xxe SYSTEM "file:///etc/passwd">]><foo>&xxe;</foo>' r = requests.post(url, data=payload) if "root:" in r.text: print("[+] XXE Vulnerability Detected: " + url) # 定义一个检查文件包含漏洞的函数 def check_file_inclusion(url): payload = "../../../../../../etc/passwd" r = requests.get(url + payload) if "root:" in r.text: print("[+] File Inclusion Vulnerability Detected: " + url) # 定义一个检查文件上传漏洞的函数 def check_file_upload(url): files = {'file': open('test.php', 'rb')} r = requests.post(url, files=files) if "uploaded successfully" in r.text: print("[+] File Upload Vulnerability Detected: " + url) # 定义一个检查文件下载漏洞的函数 def check_file_download(url): r = requests.get(url) filename = re.findall("filename=(.+)", r.headers['Content-Disposition'])[0] if len(filename) > 0: print("[+] File Download Vulnerability Detected: " + url) # 定义一个检查CSRF漏洞的函数 def check_csrf(url): r = requests.get(url) soup = BeautifulSoup(r.text, 'lxml') csrf_token = soup.find('input', {'name': 'csrf_token'})['value'] payload = {'csrf_token': csrf_token, 'action': 'delete'} r = requests.post(url, data=payload) if "deleted successfully" in r.text: print("[+] CSRF Vulnerability Detected: " + url) # 定义一个扫描URL的函数,调用以上函数进行漏洞检测 def scan_url(url): check_xss(url) check_sql_injection(url) check_xxe(url) check_file_inclusion(url) check_file_upload(url) check_file_download(url) check_csrf(url) # 测试 scan_url("http://example.com/index.php") ``` 以上代码只是一个简单的示例,实际上要实现完整的web漏洞扫描功能需要考虑很多因素,比如:多线程扫描、自动化漏洞利用、漏洞报告生成等。因此,如果您需要进行严格的web漏洞扫描,请使用专业的web安全测试工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值