|
一 :Sql Injection #注入攻击原理
1、什么是sql 注入
定义: SQL 注入 是指 web 应用对用户输入数据的合法性没有判断,前端输入后端的参数是攻击者可控的,并且参数带入数据进行查询,
攻击者可以通过构造不同的语句对数据库进行操作;
本质:将用户输入的数据当做SQL语句执行,这里有两个关键条件
1.1 参数用户可控;
1.2 参数带入数据库查询;
如何判断注入点?
1. id = 1' 在1后面加入单引号,页面出错
2. id = 1 and 1 = 1 正常 id=1 and 1=2 错误 【判断 and 是否被当做搜索语句执行了】
3. id = 1 and 1'=1 正常 id = 1 and '1'=1 错误
备注:通过构造错误的语句根据返回结果判断是否存在注入点
2、注入的基本姿势
2.1. 判断字段数
2.1.1 利用order by
利用原理: 原功能是排序 ;
原语法是: order by 字段名
省略语法【被利用】: order by 2 这个2 表示 按照第2个字段进行排序
如果 没有 第三个字段 ,那么 order by 3 就是错的【页面报错】
2.1.2 利用 union select 1,2,3---- form "要查询的表名" ; 利用这个搜素语句联合查询
原语法: 在查询的时候,如果有两条查询语句,后面的字段数只要和前面的一样就可以了【前后一致】
利用原理: union ,也就是说 只要我先查出前边表表字段数 就可以进行相关的操作链表,需要猜测表名
透析原理: 我在查询新闻表的时候,查询一个字段内容,谁的内容? admin 表的内容 ;
2.2. 判断回显点
连表查询后: 看一下 页面上都显示了哪些; 然后 把 显示的东西 替换 我们猜测的 字段名 ;
比如说: union select 1,2,3,4 form admin 然后页面 显示了 3 那我把3 换成我猜测的 username 就得到了用户名
2.3. 判断查询的相关内容
2.3.1 工具,爆破 得到字段名与 表名 【】
2.3.2 通过数据的版本不同,可以得到利用信息 【其实就是用informaition 那个myadmin 自带的统计数据库】
2.3.3 偏移注入 抛出想要的值 ;
cookie 注入 :【在 url 被防止时 就这么干】
在GET、POST被拦截的情况下,可以尝试使用 cookie 进行传参 在这里的实验 跟 url 里的一样 ;
【需要 去 获取 】
3.Md5 相关解决方法
利用解码网站【撞库攻击 得到密码】 彩虹表
|
|