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

相关推荐
刘恒1234567894 分钟前
Windows 10 docker 配置(PHP+Nginx+Mysql)(thinkphp5项目)环境
windows·docker·php
JaguarJack1 小时前
PHP 开发中 你可能不知道的非常好用 PhpStorm 插件
后端·php
jenchoi4134 小时前
【2025-11-04】软件供应链安全日报:最新漏洞预警与投毒预警情报汇总
安全·web安全·网络安全
hcja6669 小时前
WordPress wpForo Forum插件漏洞CVE-2025-11740复现
web安全·网络安全
kali-Myon10 小时前
NewStarCTF2025-Week4-Web
sql·安全·web安全·php·ctf·ssti·ssrf
liliangcsdn11 小时前
如何利用约束提示优化LLM在问题转sql的一致性
数据库·sql
安全不再安全11 小时前
免杀技巧 - 早鸟注入详细学习笔记
linux·windows·笔记·学习·测试工具·web安全·网络安全
竹等寒12 小时前
Go红队开发—图形化界面
网络安全·golang·个人开发
武昌库里写JAVA14 小时前
element-ui 2.x 及 vxe-table 2.x 使用 css 定制主题
java·vue.js·spring boot·sql·学习
上下翻飞的屁16 小时前
jdbcTemplate执行sql后数据库字段没有更新问题解决
java·数据库·sql