sql总结

靶场练习

第一关

1.查看源码发现name=test的test在html里面

2.所以直接在name那里添加<script>alert(123)</script>,通关

第二关

1.查看源码test和第一关一样的位置

2.直接尝试第一关方法

3.第一个test进行了html实体转义,但是第二个没有,我们只需要闭合掉双引号即可

"> <script>alert()</script> <"

第三关

1.随便输个test观察

2.先用上一关的测试一下

'> <script>alert()</script> <'

3.查看源码

4.使用onfocus事件绕过

' onfocus=javascript:alert() '

5.再点击输入框

第四关

1.先观察

2.这里是双引号闭合,<input>标签,所以我们还能继续利用onfocus事件,只不过换成双引号

" onfocus=javascript:alert() "

第五关

1.先尝试之前的能过不

2.这里on被替换成了o_n,先看一下这关的源码

3.过滤了js的标签还有onfocus事件,虽然str_replace不区分大小写,但是有小写字母转化函数,所以就不能用大小写法来绕过过滤了,只能新找一个方法进行xss注入

可以使用a href标签法,添加一个标签得闭合前面的标签

"> <a href=javascript:alert()>xxx</a> <"

4.之后点击xxx,触发a标签href属性即可

第六关

1.观察

2.先输入关键字测试看看

3.再试试大小写可以不

OnFocus <sCriPt> <a hReF=javascript:alert()>

4.发现大小写可以通过,则直接利用大小写

"> <sCript>alert()</sCript> <"

第七关

1.直接开测

"> <sCript>alert()</sCript> <"

可以看到sCript都被删了

2.可以用双拼写来完成

"> <scrscriptipt>alert()</scrscriptipt> <"

PHP参数污染SQL注入

  1. 漏洞原理

参数名区分机制:PHP允许同名参(如 id 与 i.d )共存,但接收时会将点号( . )自动转换为下划线( _ ),导致WAF可能仅检测其中一个参数,而另一个恶意参数直接进入SQL查询。

绕过关键:利用PHP对参数名的自动转换特性(如 id%20 转为 id_ ),将恶意代码通过未被过滤的参数传递。

注入技巧:使用注释符( -- )替代空格绕过关键字过滤。通过报错注入或联合查询逐步获取数据库信息(库名→表名→字段名)。

  1. 复现与调试

攻击链构建:

构造双参数(如 id=1&i.d=union select 1,2,3 ),使 i.d 绕过过滤, id 被拼接进SQL语句。

利用 _REQUEST 与 _SERVER 接收参数的差异(如 I.D 未被转换而 I_D 被转换),定位未过滤的数据入口。

调试验证:通过断点追踪参数传递路径,确认恶意参数是否进入SQL查询。

宽字节注入

  1. 产生条件

数据库使用GBK等宽字节编码,而PHP层使用UTF-8处理时,转义符( \`,编码为 %5C`)可能被宽字符"吃掉"。

典型场景:输入 %df%27 时, %df%5C 组合成汉字"運",单引号( %27 )未被转义,破坏SQL语句闭合。

  1. 利用与防御

利用方式:构造特定编码(如 %df%27 )使转义符失效,恢复单引号的注入能力。

现状:此类漏洞在2016年后较少见,因现代框架已规范编码统一(如全面采用UTF-8)。

ThinkPHP框架SQL注入漏洞

  1. 5.0.15版本漏洞

触发点: update 或 insert 操作中,参数为数组且包含 inc / dec 键(如 username0=inc&username1=update )。

漏洞成因:框架未对数组键值严格过滤,恶意代码通过 inc 操作拼接进SQL语句(如 username=username+1 )。

修复方式:官方补丁强制校验字段名与值的匹配关系,避免非法拼接。

  1. 5.1.6版本漏洞

触发点: update 方法中通过 pump 参数控制 default 表达式,使SQL片段拼接进查询。

漏洞链:

用户传入 pump 参数 → 进入 default 表达式处理 → 拼接可控字符串至UPDATE语句。

修复方式:删除 default 表达式的危险拼接逻辑。

  1. 代码追踪与调试方法

关键路径:通过调试工具定位 build 方法(SQL构造核心),追踪数据流从Request到Query的执行路径。

补丁分析:对比Git提交记录(5.0.15→5.0.16),分析 build 模块的修改点。

注意点:部分漏洞(如 exp 注入)因框架层自动过滤(如Request类添加空格)未被修复,需结合业务场景评估风险。

相关推荐
深圳市快瞳科技有限公司2 小时前
宠物门禁端侧AI落地解析:画质检测、活体甄别与离线推理
网络
一条泥憨鱼4 小时前
【从0开始学习计算机网络】| ARP 协议:地址解析,ARP 欺骗,链路层寻址
网络·后端·学习·计算机网络
m0_715674434 小时前
数据分类分级的范式转换:从规则匹配到场景化高准确率一键部署
大数据·网络·人工智能·网络安全
dog2506 小时前
带宽,时延,抖动的不可能三角
网络·tcp/ip
砚凝霜6 小时前
【软考信息安全】第十六章 网络安全风险评估过程与技术方法
网络·安全·web安全
Eloudy7 小时前
MLNX_OFED 的 install.pl 安装流程分析
网络·rdma·roce
对讲机数码科普9 小时前
从电路原理到协议栈:模拟对讲机与数字对讲机的技术内核拆解
运维·网络·架构·软件工程
我送炭你添花9 小时前
ASA原理与电子维修实战:前言 一路修来,一路学习
运维·网络·学习
张小姐的猫9 小时前
【Linux】网络编程 —— 多路转接:epoll
linux·运维·网络
睡一觉就好了。10 小时前
linux网络编程基础
网络