寒假学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+属性名

相关推荐
damoluomu1 天前
挑 PHP CMS 之前,先学会看它的协议
php
漂着的圆木1 天前
Agent 功能参与度:Copilot 怎么算
sql·数据分析·agent·githubcopilot·度量
XUEYUAN52121 天前
ASN 自治系统号风控:平台如何通过 IP 所属自治域批量识别代理流量
python·网络协议·http·网络安全·socks5
其实防守也摸鱼1 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
TechEdu2026061 天前
[人工智能]人工智能时代的零日漏洞与零日攻击
人工智能·网络安全·ai·信息安全
旺仔不是程序员1 天前
LIMIT 1:PostgreSQL 只取一行的高效查询姿势
数据库·后端·sql
程序员若风2 天前
CSRF攻击原理介绍和利用-腾讯云开发者社区
前端·网络·安全·web安全·网络安全·csrf攻击·腾讯云开发者社区
子非鱼a2 天前
【WEB】Online ToolWEB
php
菩提小狗2 天前
每日安全情报报告 · 2026-09-21
网络安全·漏洞·cve·安全情报·每日安全