存在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(字段名)
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
请登录后发表评论
注册