南邮 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。
get_magic_quotes_gpc()
--------------------------------------
php阅读
sql基础
htmlentities()
mysql_query()
标签:username,南邮,sql,htmlentities,result,mysql,query,injection,password 来源: https://www.cnblogs.com/islsy/p/10672000.html