在最近的一次测试中,随缘摸到了一个sso系统,留给前台的功能只有登陆。
没有验证码,但是登陆点强制要求每个用户更改强密码,而且除了管理员和测试账号其他大部分都是工号形式,所以不考虑撞库。直接fuzz一把梭
测试过程中发现username对于下面payload会存在两种不同回显
当时我并不理解这种payload是什么库的数据格式。但是看到存在"!"字符时,页面的回显是不同的,而"!"在绝大多数语言中都是取反的表达形式,自然会产生不同的布尔值,那么无疑就是个xxx注入点了
何为LDAP
通过payload的类型,看到是经典的ldap注入语句。一种老协议和数据存储形式了
LDAP协议
LDAP(Lightweight Directory Access Protocol):即轻量级目录访问协议。是一种运行于TCP/IP之上的在线目录访问协议,主要用于目录中资源的搜索和查询。使用最广泛的LDAP服务如微软的ADAM(Active Directory Application Mode)和OpenLDAP
LDAP存储
MySQL数据库,数据都是按记录一条条记录存在表中。而LDAP数据库,是树结构的,数据存储在叶子节点上。
LDAP目录中的信息是按照树形结构组织的:
dn:一条记录的位置
dc:一条记录所属的区域
ou:一条记录所属的组织
cn/uid:一条记录的名字/ID
这种树结构非常有利于数据的查询。首先要说明是哪一棵树(dc),然后是从树根到目标所经过的所有分叉(ou),最后就是目标的名字(cn/uid),借用一张图来表明结构如下:
条目&对象类&属性
条目(entry):是目录中存储的基本信息单元,上图每一个方框代表一个entry。一个entry有若干个属性和若干个值,有些entry还能包含子entry
对象类(obejectclass):对象类封装了可选/必选属性,同时对象类也是支持继承的。一个ent