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 键(如 username[0]=inc&username[1]=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 小时前
什么是等保(网络安全等级保护)
网络·安全·web安全
龚礼鹏2 小时前
图像显示框架十一——BufferQueue的工作流程(基于Android 15源码分析)
java·网络·数据库
weixin_395448912 小时前
mult_yolov5_post_copy.h_cursor_0129
linux·网络·人工智能
IP搭子来一个2 小时前
隧道IP代理是什么?原理与应用全解析
网络·网络协议·tcp/ip
定偶2 小时前
USB协议
c语言·网络·数据库
莹莹学编程—成长记3 小时前
TCP/IP五层模型+网络传输基本流程
网络·c++
gantiexia3 小时前
计算机网络核心知识详解:从 OSI 模型到 TCP/IP 协议
网络·网络协议·计算机网络
CS创新实验室3 小时前
《计算机网络》深入学:软件定义网络SDN
网络·计算机网络·php
谢怜823 小时前
计算机网络第五章传输层
网络·计算机网络