ui设计灵感网站wordpress微信登录设置密码
2026/3/2 23:24:16 网站建设 项目流程
ui设计灵感网站,wordpress微信登录设置密码,020模版网站制作,一键装修效果图软件第一关先来判断是否可以在url上直接打开地址栏#xff0c;post传入的内容是否直接会拼接到数据库语句中?id1%20%27and%2012%20--%20ads%20是空格的url的代码具体操作流程如下1,判断是否是注入类型若输入 ?id1 页面正常#xff0c;输入 ?id1 页面报错#xff0c;就证明了单…第一关先来判断是否可以在url上直接打开地址栏post传入的内容是否直接会拼接到数据库语句中?id1%20%27and%2012%20--%20ads%20是空格的url的代码具体操作流程如下1,判断是否是注入类型若输入?id1页面正常输入?id1页面报错就证明了单引号闭合的字符型注入存在。?id1%20%27and%2012%20--%20ads?id1%20%27and%2011%20--%20ads百分号27是单引号看两个显示结果会不会变2,判断字段ORDER BY关键字的核心作用MySQL 语法用于对查询结果集进行排序语法格式为ORDER BY 字段名/字段索引。这里的关键特性ORDER BY支持用数字「字段索引」代替字段名数字N表示 “对查询结果的第 N 个字段进行排序”。步骤 2判断字段数order by用order by N猜解查询的字段数量输入?id1 order by 1----是注释符让后面的 SQL 失效页面正常。输入?id1 order by 2--页面正常。输入?id1 order by 3--页面正常。输入?id1 order by 4--页面报错说明字段数是3。3确定回显位置-1 union select 1,2,3--输入?id-1 union select 1,2,3--页面显示2和3确定这两个位置为回显位。数据库原理拆解UNION SELECT联合查询的核心规则MySQL 语法用于将两个或多个SELECT语句的查询结果集合并为一个结果集返回。必须满足核心前提条件多个SELECT语句查询的「字段数量必须相同」且对应字段的数据类型兼容否则报错。例如SELECT 1,2,3 UNION SELECT 4,5,6;合法均为 3 个字段SELECT 1,2 UNION SELECT 3,4,5;非法字段数不一致。为什么要用id-1原始 SQL 中id1会查询到有效数据存在id1的用户此时UNION SELECT的结果集会被原始查询结果覆盖页面只显示原始数据无法看到联合查询的内容。传入id-1拼接后的 SQL 为SELECT * FROM users WHERE id-1 UNION SELECT 1,2,3--;由于数据库中不存在id-1的用户原始查询结果集为空。根据 MySQL 联合查询的规则当第一个SELECT结果集为空时会直接显示第二个SELECT联合查询的结果集这是我们能看到1,2,3的关键。回显位置的含义页面最终显示2和3说明原始 SQL 查询结果集中第 2 个和第 3 个字段的内容会被渲染到页面上第 1 个字段可能不显示或被隐藏。后续我们只需要将2和3替换为实际的查询语句如查数据库名、账号密码就能让查询结果在页面上显示出来这是联合查询注入的核心价值。4查询数据库信息核心注入操作操作回顾通过替换回显位的2,3依次查询数据库名、表名、字段名、账号密码。数据库原理拆解分步骤解析1. 查询当前数据库名?id-1 union select 1,database(),3--database()MySQL 内置系统函数作用是返回当前正在使用的数据库名称即原始 SQL 所属的数据库。拼接后的 SQL 为SELECT * FROM users WHERE id-1 UNION SELECT 1,database(),3--;原理联合查询的第 2 个字段被替换为database()数据库执行该函数后返回当前数据库名通常是security并通过页面的回显位展示出来。2. 查询数据库中的表名group_concat(table_name)information_schema.tables核心语法SELECT group_concat(table_name) FROM information_schema.tables WHERE table_schemadatabase();各部分原理拆解information_schema.tables系统数据库information_schema中的tables表存储了 MySQL 中所有数据库的表元数据包括数据库名table_schema、表名table_name、表类型等。WHERE table_schemadatabase()过滤条件只查询当前数据库database()返回的结果中的表避免查询到其他数据库如mysql、information_schema的表。group_concat(column_name)MySQL 内置聚合函数作用是将多行查询结果拼接为一行字符串返回用逗号分隔。若不用group_concat()直接SELECT table_name联合查询只会返回单行结果默认只取第一行无法看到所有表名用group_concat()可以将所有表名emails,referers,uagents,users拼接为一行一次性在回显位展示完整这是注入中高效查询多行数据的核心技巧。拼接后的 SQL 执行后会从information_schema.tables中提取当前数据库的所有表名拼接后通过回显位展示。3. 查询users表的字段名group_concat(column_name)information_schema.columns核心语法SELECT group_concat(column_name) FROM information_schema.columns WHERE table_schemadatabase() AND table_nameusers;各部分原理拆解information_schema.columns系统数据库information_schema中的columns表存储了 MySQL 中所有表的字段元数据包括数据库名table_schema、表名table_name、字段名column_name、字段类型等。过滤条件table_schemadatabase() AND table_nameusers精准定位「当前数据库」中的「users表」只查询该表的字段信息。同样使用group_concat(column_name)将所有字段名id,username,password拼接为一行通过回显位完整展示。4. 查询users表的账号密码group_concat(username,:,password)核心语法SELECT group_concat(username,:,password) FROM users;各部分原理拆解users表是 SQLi-Labs 中存储管理员账号密码的核心业务表从步骤 2 中查询得到。username,:,passwordMySQL 中支持用逗号,拼接字符串这里将username用户名、分隔符:、password密码拼接为一个字符串如admin:admin方便阅读。group_concat()将users表中所有行的账号密码拼接为一行一次性展示所有数据避免多次查询高效获取全部核心信息。拼接后的 SQL 执行后数据库会从security数据库的users表中提取所有账号密码通过回显位展示完成核心注入目标。总结整个注入流程的核心是篡改后台原始 SQL利用 MySQL 语法特性注释符、ORDER BY、UNION SELECT、系统表 / 函数实现非法查询。关键节点闭合单引号突破字符型注入限制→ 猜字段数满足联合查询前提→ 找回显位获取查询结果出口→ 查元数据通过information_schema获取核心信息。所有操作的底层支撑都是 MySQL 的基础语法和系统表 / 函数的特性这也是 SQL 注入的核心所以为发现这个界面加载粗我要第二关和上面只有闭合方式的区别闭合方式为双引号第三关和上面只有闭合方式的区别闭合为单引号和括号第四关和上面只有闭合方式的区别闭合为单引号和括号SQLi-Labs 5-7 关原理讲解注入类型与核心技巧这三关分别对应报错注入、盲注布尔型、盲注时间型第五关核心特征页面只返回 “正确 / 错误” 提示无数据回显但会输出 SQL 语法错误信息如 “you have an error in your SQL syntax”。SELECT * FROM users WHERE id$id LIMIT 0,1;利用MySQL 报错函数如extractvalue()、updatexml()让数据库在执行恶意 SQL 时抛出错误并将查询结果嵌入错误信息中返回实现 “无回显下获取数据”。常用报错函数extractvalue()语法extractvalue(1, concat(0x7e, 查询语句, 0x7e))作用从 XML 文档中提取值当第二个参数包含特殊字符如~时会抛出错误并显示参数内容。示例查数据库名plaintext?id1 and extractvalue(1,concat(0x7e,database(),0x7e))--页面会返回错误XPATH syntax error: ~security~其中security就是数据库名。updatexml()原理与extractvalue()类似语法updatexml(1, concat(0x7e, 查询语句), 1)。核心逻辑通过构造包含报错函数的 SQL强制数据库输出错误信息间接获取查询结果无需页面回显数据。第六关核心特征页面仅返回 “存在数据” 或 “不存在数据”如 “you are in”/“you are not in”无任何错误提示或数据回显。原始 SQLsqlSELECT * FROM users WHERE id$id LIMIT 0,1;字符型注入双引号闭合原理利用SQL 逻辑判断的布尔结果true/false通过 “逐字符猜解” 的方式获取数据。核心技巧逐字符判断利用substr()、ascii()函数substr(目标字符串, 位置, 1)截取字符串指定位置的字符ascii(字符)将字符转换为 ASCII 码值。示例猜数据库名第 1 个字符plaintext?id1 and ascii(substr(database(),1,1))100--若页面显示 “you are in”说明数据库名第 1 个字符的 ASCII 码大于 100逐步缩小范围最终确定字符如security的第 1 个字符s的 ASCII 码是 115。核心逻辑通过构造逻辑判断语句根据页面的 “存在 / 不存在” 提示逐个字符推导目标数据效率低但适用于无回显、无报错的场景。第七关核心特征页面无任何回显、无错误提示无论 SQL 是否正确页面均显示相同内容。原始 SQLsqlSELECT * FROM users WHERE id((($id))) LIMIT 0,1;字符型注入单引号 括号闭合需用)))闭合原理利用MySQL 的延时函数sleep(N)通过 “是否延时” 判断 SQL 逻辑的布尔结果进而逐字符猜解数据。核心技巧延时判断结合if()函数语法if(条件, sleep(3), 1)作用若条件为真数据库延时 3 秒执行若为假立即执行。示例猜数据库名第 1 个字符plaintext?id1))) and if(ascii(substr(database(),1,1))115, sleep(3), 1)--若页面加载时间超过 3 秒说明条件为真数据库名第 1 个字符是s若立即加载说明条件为假需调整字符的 ASCII 码值。第八关第 8 关布尔盲注单引号闭合无任何回显增强版核心特征页面仅返回两种状态You are in...........条件为真、无该提示 / 空白页面条件为假无错误回显、无数据回显。与第 6 关核心逻辑一致仅闭合方式不同属于纯布尔盲注场景。原始 SQLsqlSELECT * FROM users WHERE id$id LIMIT 0,1;字符型注入单引号闭合无报错输出是第 6 关的单引号版本原理与第 6 关布尔盲注核心原理完全一致利用SQL逻辑判断的布尔结果通过substr()截取字符、ascii()转换 ASCII 码逐字符猜解数据。核心差异第 6 关是双引号闭合第 8 关是单引号闭合注入语句前缀需对应调整。?id1 and ascii(substr(database(),1,1))115--第九关第十关第十一关注入点从URL 的 GET 参数转移到页面的 POST 表单参数用户名uname、密码passwd。页面有登录成功 / 失败提示Your Login name or Password is wrong支持报错注入或布尔盲注。原始 SQLsqlSELECT * FROM users WHERE username$uname AND password$passwd LIMIT 0,1;字符型注入单引号闭合POST 参数传递无数据回显但有登录状态反馈原理POST 注入与 GET 注入的核心区别GET 注入参数通过 URL 传递可直接在地址栏构造语句。POST 注入参数通过 HTTP 请求体传递需借助工具如 Burp Suite或浏览器开发者工具构造表单数据。注入核心逻辑与 GET 型字符注入一致先闭合单引号再构造注入语句最后用注释符注释多余内容。示例用报错注入查数据库名在uname字段输入plaintextadmin and extractvalue(1,concat(0x7e,database(),0x7e))--密码字段可任意输入如123提交后页面会返回报错信息包含当前数据库名。核心逻辑注入原理与 GET 型注入一致仅参数传递方式不同需掌握 POST 表单数据的构造方法。第十二关注入点为 POST 表单参数uname、passwd与第 11 关场景一致。闭合方式为双引号 括号id($id)是闭合类型的进阶场景。原始 SQLsqlSELECT * FROM users WHERE username($uname) AND password($passwd) LIMIT 0,1;字符型注入双引号 括号闭合POST 参数传递原理闭合核心技巧需要先闭合双引号再闭合括号才能让后续注入语句生效。闭合格式闭合双引号)闭合括号即admin)。示例用报错注入查数据库名在uname字段输入plaintextadmin) and extractvalue(1,concat(0x7e,database(),0x7e))--提交后页面返回报错信息提取其中的数据库名即可。第十三关核心特征原始 SQLsqlSELECT * FROM users WHERE username($uname) AND password($passwd) LIMIT 0,1;字符型注入单引号 括号闭合POST 参数传递无登录状态反馈仅支持报错注入原理注入点为 POST 表单参数闭合方式为单引号 括号。页面无登录成功反馈仅在 SQL 语法错误时返回报错信息无其他状态差异属于POST 型报错盲注。闭合核心技巧先闭合单引号再闭合括号即admin)。注入核心逻辑由于无登录状态反馈无法使用布尔盲注只能依赖报错注入获取数据。plaintextadmin) and extractvalue(1,concat(0x7e,database(),0x7e))--提交后页面会抛出 XPATH 语法错误包含当前数据库名实现无状态反馈下的数据获取。核心逻辑复合闭合方式 POST 注入 报错盲注的结合强化 “根据页面反馈选择注入方式” 的能力。第十四关注入点为 POST 表单参数闭合方式为纯双引号与第 6 关、第 10 关的双引号闭合一致。页面有登录成功 / 失败提示支持报错注入或布尔盲注是 POST 型双引号注入的基础场景。原始 SQLsqlSELECT * FROM users WHERE username$uname AND password$passwd LIMIT 0,1;字符型注入双引号闭合POST 参数传递有登录状态反馈原理闭合核心技巧直接用双引号闭合原始字符串即admin。示例用报错注入查数据库名在uname字段输入plaintextadmin and extractvalue(1,concat(0x7e,database(),0x7e))--密码字段任意输入提交后页面返回报错信息提取数据库名即可。核心逻辑POST 注入的基础双引号版本与 GET 型双引号注入原理一致进一步巩固 POST 表单的注入技巧。第十五关第十七·关·原理场景差异UPDATE 注入与 SELECT 注入的核心区别SELECT 注入目的是 “查询数据”语句构造围绕SELECT/UNION SELECT/ 报错函数。UPDATE 注入目的是 “通过报错获取数据”无需更新真实密码语句构造围绕 “破坏 UPDATE 语法嵌入报错函数”利用 UPDATE 执行时的语法错误返回查询结果。核心前提用户名需存在如admin、dumb否则 UPDATE 语句不会执行注入无效。核心技巧闭合方式单引号闭合密码字段的原始字符串嵌入报错函数最后用--注释多余内容。报错函数依旧使用extractvalue()/updatexml()与第 5 关报错注入原理一致。示例猜数据库名用户名填dumb存在的账号新密码字段输入plaintext123 and extractvalue(1,concat(0x7e,database(),0x7e))--拼接后的 UPDATE 语句sqlUPDATE users SET password123 and extractvalue(1,concat(0x7e,database(),0x7e))-- WHERE usernamedumb;判断逻辑执行 UPDATE 语句时报错函数触发 XPATH 语法错误页面返回错误信息其中包含当前数据库名security且不会真正修改dumb的密码后续内容被注释。核心逻辑基于 UPDATE 语句的报错注入核心是 “利用存在的用户名触发 UPDATE 执行通过报错函数间接获取数据不破坏目标账号的原始数据”是业务场景中常见的注入类型。第十九关核心特征注入点是HTTP 请求头的 Referer 字段请求来源页面标识与第 18 关场景高度相似。同样需要登录成功触发 INSERT 语句页面回显 Referer 信息并支持报错反馈。原始 SQL登录日志记录sqlINSERT INTO security.referers (referer, ip_address, username) VALUES ($referer, $ip, $uname);字符型注入单引号闭合$referer对应 Referer 头原理场景前提同第 18 关需先登录成功如dumb/dumb触发 INSERT 语句。注入逻辑与第 18 关完全一致仅注入点从 User-Agent 改为 Referer 头。核心操作Burp 抓包抓取登录成功的请求包找到Referer字段。修改 Referer 字段为注入语句plaintext and extractvalue(1,concat(0x7e,version(),0x7e))--发送请求后页面返回报错信息包含 MySQL 版本号。核心逻辑与 User-Agent 头注入原理一致进一步强化 “HTTP 头任意字段均可作为注入点” 的认知关键是识别业务逻辑中被代入 SQL 的头信息。第20关注入点是HTTP 请求的 Cookie 字段存储登录状态的uname参数。登录成功后页面会回显 Cookie 中的用户名信息支持报错 / 联合查询注入。原始 SQLCookie 验证sqlSELECT * FROM users WHERE username$uname LIMIT 0,1;字符型注入单引号闭合$uname对应 Cookie 中的uname参数原理场景前提登录成功后浏览器会保存unamedumb的 Cookie页面通过读取该 Cookie 显示用户名。注入逻辑Cookie 中的uname参数被作为字符串代入 SELECT 语句通过单引号闭合后可构造报错 / 联合查询语句。核心操作Burp 抓包登录成功后抓取页面请求包找到Cookie: unamedumb字段。修改 Cookie 为注入语句以联合查询为例plaintextunamedumb union select 1,2,database()--发送请求后页面回显位会显示当前数据库名security。核心逻辑注入点转移到 Cookie 字段原理与 GET 参数注入一致关键是 “识别 Cookie 参数的 SQL 代入逻辑通过抓包修改 Cookie 值”。第二十一关核心特征注入点是 Cookie 的uname参数但Cookie 值被 Base64 编码后传输。闭合方式为单引号 括号增加了解码与闭合的双重难度。原始 SQLsqlSELECT * FROM users WHERE username($uname) LIMIT 0,1;字符型注入单引号 括号闭合$uname是 Base64 解码后的 Cookie 值原理编码逻辑正常情况下Cookie 中的unamedumb会被编码为unameZHVtYgdumb的 Base64 编码后端接收后先解码再代入 SQL。注入逻辑需先构造闭合后的注入语句再对语句进行 Base64 编码才能被后端正确解码并执行。核心操作Burp 抓包构造注入语句先闭合单引号 括号再写联合查询plaintextdumb) union select 1,2,database()--对该语句进行 Base64 编码结果为ZHVtYicpIHVuaW9uIHNlbGVjdCAxLDIsZGF0YWJhc2UoKS0tKw。修改 Cookie 为unameZHVtYicpIHVuaW9uIHNlbGVjdCAxLDIsZGF0YWJhc2UoKS0tKw。发送请求后页面回显位显示当前数据库名。核心逻辑Cookie 注入 Base64 编码 复合闭合的结合核心是 “先构造注入语句再编码传输”需掌握常见编码的处理方式。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询