第一次校赛sql复现

本文记录了一次校赛中遇到的SQL注入问题的复现过程。作者在学长的提示下找到注入点,但由于对PDO的不了解和PHP基础的不足,经历了诸多困难。通过复现,作者理解了无列名注入和sprintf漏洞,并意识到信息收集和本地环境的重要性。最终成功复现并总结了提高自身技能的方向。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

上周参加了第一次校赛,就做了web和一个Misc签到,其他的都不会。感觉web除了sql注入,其他的题都挺签到的,大概是学长怕打击到我们吧。。。sql注入那个题在学长的N次提示下终于找到了注入点,然后尴尬的事情发生了,我注入的payload记不清了。。。这还不是最尬的,最尬的是我Python盲注脚本不熟,当时又稍微有一点紧张,然后选择burpsuite+手工对照ascii表注入。。。嗯,懂的都懂,尬死了。还好学长没往里面加类似“xxx_want_a_girlfriend”之类的,这要是换成极客大挑战finalSQL那道题的数据库我直接去世

思路

这个题刚开始放出的时候试了n种方法都没成功,后来学长放了hint,“web题的思路不是应该先信息收集一波吗?”,直接扫,git源码泄露,拿到源码如下。也长个经验,以后拿到题目先扫目录(×)

<?php
require_once "conn.php";
$db = new PDO($dsn, $user, $pass);

if (isset($_POST['username']) && isset($_POST['password'])) {
   
    $username = addslashes($_POST['username']);
    $password = addslashes($_POST['password']);
    $sql = sprintf("select * from users where username='$username' and password='%s'", $password);
} else {
   
    die("plz input you
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值