题目:

继续注入吧~
题目地址

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

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; -->
网上有一篇题解,题解中说的比较详细:
 南邮 sql injection 4 随笔

我们的目的是让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()
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄