SQL学习(一)

0x01

mysql一些简单的基础知识

可能存在sql注入的一些常见url形式

  • http://www.******.com/***.asp?id=xx (ASP 注入)
  • http://www.******.com/***.php?id=xx (PHP 注入)
  • http://www.******.com/***.jsp?id=xx (JSP 注入)
  • http://www.******.com/***.jspx?id=xx (JSPX 注入)
  • http://www.******.com/***.asp?id=xx&page=99 (有两个参数,注入时要注意参数的确认)
  • http://www.******.com/index/new/id/8 (伪静态)
  • http://www.******.com/index/new/php-8.html (伪静态)

常用的判断是否存在sql注入的方法

  • 符号法:通过在链接的参数后面添加单引号或是双引号,如果页面报错,或者返回不正常,则可能存在注入
  • 1=1和1=2:在链接后面加上“1=1”或者“1=2”,如果两种情况下,页面显示出的结果不同,则可能存在注入

0x02

在新版的MySQL 5 版本数据库中,新增加了information_schema数据库,该库中储存了数据库信息内容,可以直接进行爆库、爆表、爆字段,攻击变得更简单。
schemata表:提供了当前mysql实例中所有数据库的信息。是show databases的结果取之此表。
tables表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息。是show tables from schemaname的结果取之此表。
colunms表:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。是show columns from schemaname.tablename的结果取之此表。

接下来详细的看看几张表里的东西
select * from information_schema.schemata;


不难看出第二个字段schema_name为mysql中存储的数据库的名字

select * from information_schema.tables;


这一张图有点乱,但是我们可以看出来TABLE_SCHEMATABLE_NAME字段里存储的是每一个数据库的名字以及数据库对应的表名,我们可以把这两个字段单独提出来
select table_schema,table_name from information_schema.tables;


不难看出,不同的数据库与其对应的表一一对应

select * from information_schema.columns limit 10 ;


因为这里显示的是每一个数据库里的每一张表对应的每一个字段,全部读出来的话,我自己都等不下去Orz,就只读了前十条
但是可以看出 TABLE_SCHEMATABLE_NAMECOLUMN_NAME 三个字段对应的的分别是数据库名,表名,表中字段名

所以可以通过一下的方式进行数据库中数据内容的整体读取

同时我们可以通过order by n爆出表中的字段,其中n指的是猜测的字段数字1,2……n诸如此类,直到报错,则输入的n-1是该表中的字段数
当然还有很多姿势,后面慢慢会说到

0x03
关于注入类型,简单的分为以下三种

  • 数字型:select * from users where id=$id
  • 字符型:select * from users where id=’$id’
  • 搜索型:select * from users where username like ‘%admin%’

注入方式:

  • 数字型:select * from users where id=$id and 1=1
  • 字符型:select * from users where id=’$id’这里需要闭合引号使用’ and 1=1 ‘
  • 搜索型:select * from users where username like ‘%admin%’这里需要闭合引号以及百分号 %’ and 1=1 ‘%

提交注入方式

  • GET型:直接在url里进行注入测试
  • POST型:firefox可以使用hackbar进行post数据的提交,其他浏览器可以通过burp抓包,然后进行参数提交;有些post型注入也可以通过补全地址变为get型进行注入测试
  • Cookie提交:使用burp抓包后可修改cookie

发表评论

电子邮件地址不会被公开。 必填项已用*标注