HACK80 首页  立即注册  登录
现在注册
已注册用户请  登录
HACK80    技术文档

某司内部CTF个人赛Write Up

  •   EvilGod ·2018-1-9 16:51:58·2941 次点击 ·阅读模式     

    马上注册,加入HACK80!与我们一起交流。

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
                                                                                                                                                                                                                                    MISC送分题
    这题主要考察wireshark的使用,攻击流量和正常流量的区分
    Flag在使用中国菜刀下载文件的文件内容里,如下:

    也可以直接使用wireshark直接搜索,如下:

    JSJS
    JSFUCK编码
    解码

    隐藏在流量中的flag
    这题的关键点是隐藏,提示是I love sangfor!Flag被隐藏在与sangfor相关的域名中。越来
    越多的隐蔽数据通讯选择使用DNS协议传输数据,这样可以bypass绝大多数的防火墙,这道题就是个简单的例子。、
    数据包中找到这个比较奇怪的域名查询,ZmxhZ3tGbGFnX2lzX2luX0ROU19wYWNrZXRzfQ==.sangfor.com.cn

    第一部分明显是base64编码,对其解码即得到flag。
    Catch me if you can
    这题考察日志总体和各个字段的分析能力,对常见漏洞的理解。
    根据题目的意思,在下午4点44之前的web日志中存在漏洞扫描的流量,因此可以确定出攻击者的IP。
    漏洞扫描的流量很好分析,从访问的频率和内容,可以确定攻击者的IP是192.168.12.2

    所以接下来寻找三个漏洞,只查看这个攻击IP,下午4点44以后的日志就行了,实际的日志量并不多。
    第一个漏洞获取了网站管理员密码,最可能的就是SQL注入漏洞,搜索unio或select快就可以找到,存在漏洞的参数为catid,如下:

    使用union select读取user数据表的name、和passwd数据。
    第二个漏洞获取了服务器系统的密码,最可能的漏洞是目录穿越+任意文件下载/包含,搜索..、%2e%2e之类的即可

    对/进行了URL双重编码,读取/etc/shadow文件,攻击时间是26/Sep/2017:16:54:00
    用第三个非常著名的漏洞执行了一条NB的命令
    这个漏洞是shellshock、即bash破壳漏洞。攻击apache通常在User-Agent字段,执行的命令是poweroff

    最后组成flag即可。
    WebLogin Please
    常规SQL注入
    查看源码

    user参数存在SQL注入,可以插入SQL语句改变程序运行逻辑
    只要让这个

    If语句成立即可。所以可以插入union select语句来控制SQL语句,让自己输入的密码等于自己union select出来的密码字符串即可。
    比如,输入密码1,经过md5(md5($_POST[pass]).’salt’);处理后就变成了
    7fc38fa6340c601aa270670e7c0b0f8a
    构造如下的payload:
    user=’ union select ‘7fc38fa6340c601aa270670e7c0b0f8a’ from users where ‘a’=’a&pass=1
    实际执行的SQL语句是:
    select pw from users where user=” union select ‘7fc38fa6340c601aa270670e7c0b0f8a’ from users where ‘a’=’a’
    这样就可以使if语句成立,打印出flag
    所以密码是任意的,用户名注入的SQL语句与之匹配即可。
    sha1()真的安全吗?
    查看源代码,发现几个判定条件:


    你真的能找到我吗?
    查看源代码:

    访问后:http://192.168.17.3:8083/Y29uZmln.php

    只能试试文件包含:


    Up Up Up
    这题主要考察基本的渗透能力。
    渗透网站的第一步就是信息搜集,访问目标网站并没有直接的信息,如下:

    寻找是否存在敏感文件,可以发现robots.txt文件

    可以发现两个敏感的目录: admin 和 ThisIsASecretDirectory
    访问admin,

    提示什么都没有,实际也是什么都没有,不要掉坑里了~
    访问ThisIsASecretDirectory

    提示找对了,可以进行第二步。发现文件上传,进行漏洞的测试和利用。
    此处的上传漏洞,有三个限制:
    文件小于10k、
    类型是jpg或png (Content-Type)
    后缀名不能是php (黑名单)
    可以绕过,上传webshell。
    具体源码如下:

    利用如下:

    注意后缀名和content-type即可。
    拿到webshell,flag文件在根目录:

    PwnFlag 2008

    通过checkpasswd函数后可以打印出程序中内置的flag的地址

    看passwd函数中的内容,输入密码数组下标和值来对密码进行赋值,之后对比密码数组是否为2008

    所以输入上图中的数据可以密码匹配成功打印出flag路径
    由于密码数组已经提前都被设置成为0了,因此只设置第0个和第3个元素即可,由于没有对密码数组的下标做严格的判断,可以通过下标越界来给非密码数组的数据进行赋值,栈帧中的返回地址的索引为11,参数的索引为13,将返回地址赋值为printfile的地址,将参数赋值为flagpath的地址,从而可以打印flag文件中的信息,可以输入以下信息:
    0 2
    11 134514237
    13 134514864
    3 8
    ReverseI am in sangfor
    首先需要输入一个key字符串

    当输入的字符串为I am in sangfor的时候可以通过第一层校验,之后要求输入flag的值,flag的值与第一层校验输入的字符串(也就是I am in sangfor)经过计算后的值进行比较

    因此可以在比较的地址下断点,来获取计算好的数值,需要注意的是本程序采用了反调试机制

    可以使用带strongOD的OllyDbg来调试,或者在上述位置修改给al的值为0,即可获取正确的答案
    Pop ret go go go

    Main函数,这里使用push ret进行函数调用的技巧,实际上是调用了sub_80484FD的函数,此处进行调试可以轻松进入到该函数中
    之后要求输入flag的值

    Flag的值实际是通过dword_804a030数组和sub_80484FD、main函数代码内容的xor值再进行亦或得出的,软件断点会修改代码中的内容,因此此处是反软件断点调试机制的,需要使用硬件断点或者内存断点来下断,在数据比较的地方下断点即可获取真实的flag值
                                                                           

    2941 次点击  
    收藏  转播  分享
    添加一条新回复
    您需要登录后才可以回帖 登录 | 立即注册

    本节点积分规则
    QQ
    小黑屋   ·   手机版   ·   215 人在线 最高记录 5500   ·   TOP
    我们很年轻,但我们有信念、有梦想!

      我们坚信只有今天付出了,才有机会看到明天的太阳!现在!加入我们,给你一个气氛优秀的技术圈子。  
    GMT+8, 2018-7-22 12:51, Processed in 0.045492 second(s), 18 queries .