sql注入(一) – 作者:anybody

存在sql注入的原因:

1.用户可以自定义输入指令

2.用户输入的指令可以与数据进行交互

用户登录网页时数据库查询语句:

select * from admin where username=“用户输入的用户名”and password=“用户输入的密码”

当用户可以输入‘or 1=1 –空格  空格可以用+替代

执行的SQL语句:

select * from admin where username=’ ’or1=1‘ — and password=“用户输入的密码”

其中or前面的单引号为了闭合前面的单引号  or 1=1 永远为真,–空格 表示注释掉后面的内容,不再执行;这时就会返回admin这个表的全部内容。 万能密码。

CMS逻辑:

index.php首页展示内容,具有文章列表(链接具有文章id),url中article.php?id=文章id读取id文章。

SQL注入验证:

单引号‘

and 1=1

and 1=2

如果报错,就表示可能存在sql注入的漏洞,因为输入的sql语句,语法有错误;就会报错。

sqlmap

sqlmap是检查和利用sql注入漏洞的一款工具,使用python2.x语言编写。

利用burpsuite或者fiddler抓取请求数据包,命名为1.txt

使用命令sqlmap -r 1.txt -p username –dbs   -r表示选择文件 -p表示指定注入参数

mysql5.x以上的版本,默认定义了information_schema数据库,用来存储数据库元信息,其中有三个表分别是:

1.schesmata数据库名 schema_name字段用来存储数据库名

2.tables表名 table_schema和table分别用来存储数据库名和表名。

3.coluns列名或字段名 table_schema(数据库名)、table_name(表名)、column_name(字段名)

1616680974_605c980eeee997dc45384.png!small

1616681065_605c9869bfddc6e01bc65.png!small

1616681032_605c9848801d422c225cf.png!small

sql语句的增删改查:

增:insert into 表名称 (列1,列2,…)values(值1,值2,…)

删:deltel from 表名称 where 列名称=值

改:update 表名称 set 列名称=新值 where 列名称=某值

查:select 列名称 from 表名称 where 字段1=’条件1‘and 字段2=’条件2‘

show databases  查看当前数据库

use 数据库名称    进入当前数据库

show tables  查看当前数据库的表

mysql常用的函数

1.user() ;查看当前mysql登录用户名

2.database();查看当前使用mysql数据库名

3.version();查看当前mysql版本

limit   m,n  表示取从第m行开始  取n行   表的行数下标从0开始   例:limit 2,1 从下标为2的那行开始(包含该行)数一行。

mysql中的注释符:

#

–空格

/**/

内联注释:/*!sql语句*/   只有mysql可以识别,用来过waf   可以被执行

来源:freebuf.com 2021-03-25 23:13:24 by: anybody

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论