• SCTF 2015 pwn试题分析


    Re1

    是一个简单的字符串加密。程序使用了多个线程,然后进行同步。等加密线程加密好了之后才会启动验证线程。这个题比较坑的是IDA F5出来的结果不对,不知道是不是混淆机制。

    刚开始看的是F5后的伪代码,一脸懵逼。后来看了下汇编才明白是怎么回事。

    解密直接打表就可以,也可以写逆算法。

    pwn1

    checksec看了一下保护机制,有canary+nx保护。漏洞是一个简单的栈溢出,但是没有办法劫持程序的流程。

    因为flag已经被读到了内存中了,所以就想到去leak出来。后来知道有一种ssp leak的玩法,就是故意触发canary保护,

    而这个保护机制会输出argv[]中的程序名,由于栈中argv[]是系统调用主函数的参数,栈帧肯定在当前的高地址处,所以在栈中一定可以覆盖的到。

    于是就可以去覆盖了。exp的构造是exp=junk+flag的指针。

    pwn2

    这道题开始时懵逼了一下,因为格式化字串漏洞之前接触的都是格式化串储存在栈里的。而这道题的格式化串是储存在bss段里的。格式化字串漏洞是要想向任意地址写,而格式化串不在栈里地址就没法指定了,这样就很尴尬了。

    后来想到可以先向栈里写入一个要写入的地址,相当于构造一个跳板。但是这样做的前提是栈里得有一个指向栈中的指针,调试起来一看,还真的有这样的指针。

    于是就可以构造了。

    因为读完之后马上就会调用fflush(),所以这里我就直接写入got表了。而system函数题中已经提供了,连参数都已经push好了。直接把地址盖过去就可以了。

    两个格式字符串是

    "%134525283x%4$n"

    "%134520973x%12$n"

  • 相关阅读:
    把旧系统迁移到.Net Core 2.0 日记 (18) --JWT 认证(Json Web Token)
    把旧系统迁移到.Net Core 2.0 日记 (17) --多租户和SoftDelete
    swagger访问api, TypeError: Failed to fetch
    nop 4.1 Widget 探究- 视图组件
    Nop 4.1版本已经迁移到.net core2.1版本
    link标签和css引入方式
    script标签
    MIME 类型
    bae64编码
    chrome调试技巧和插件介绍
  • 原文地址:https://www.cnblogs.com/Ox9A82/p/5483916.html
Copyright © 2020-2023  润新知