南邮 sql injection 4

本文介绍了一个具体的SQL注入案例,通过分析目标网站的源代码,详细解释了如何利用SQL注入漏洞登录管理员账号并获取flag。文章涵盖了PHP代码解读、SQL基础知识及特定函数的使用方法。

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

题目:

继续注入吧~
题目地址

TIP:反斜杠可以用来转义
仔细查看相关函数的用法

 打开后,ctrl+u得:

<!--
#GOAL: login as admin,then get the flag;
error_reporting(0);
require 'db.inc.php';

function clean($str){  if(get_magic_quotes_gpc()){ //如果 magic_quotes_gpc 为关闭时返回 0,否则返回 1。在 PHP 5.4.O 起将始终返回 FALSE  $str=stripslashes($str);  }  return htmlentities($str, ENT_QUOTES);//htmlentities() 函数把字符转换为 HTML 实体。 }  $username = @clean((string)$_GET['username']); $password = @clean((string)$_GET['password']);  $query='SELECT * FROM users WHERE name=\''.$username.'\' AND pass=\''.$password.'\';'; $result=mysql_query($query);//mysql_query() 函数执行一条 MySQL 查询。 if(!$result || mysql_num_rows($result) < 1){  die('Invalid password!'); }  echo $flag; -->
网上有一篇题解,题解中说的比较详细:


我们的目的是让result返回true,,这里必须要有sql的基础,mysql_query的执行:
SELECT * 

FROM users

WHERE name='admin \' AND pass=' #为假

or 1=1 #为真
我们不知道数据库中有哪个用户,对应哪个密码,猜是不可能的,所以见联想到了用一个 or 语句,加上一个永真的条件,最后用#把后面用不到的语句换成注释,#url编码%23。
--------------------------------------
php阅读
sql基础

get_magic_quotes_gpc()

htmlentities()

mysql_query()

转载于:https://www.cnblogs.com/islsy/p/10672000.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值