• pwnable.kr第二题:collision


    0x000 打开环境

    ssh连接,

    查找源码文件,

    0x001 源码分析 

    源码文件col.c,

    知识要点:

    char占用1个字节,int占用4个字节 ,这里用户输入char型数据,该程序运行后就会将输入转换成int型;

    ①首先查看执行 25行的/bin/cat flag 命令所需要的条件,是24行的hashcode == check_password( argv[1] ),并且由20可知,用户的第二个输入为char型,且长度为20字节,hashcode为0x21DD09EC,即十进制的568134124;

     ②check_password( argv[1] ),查看4-11行的功能函数,将用户的输入的char数据类型转换为int型,然后把该用户输入的首地址给指针ip,指针再遍历用户输入,将其逐个相加,最后返回结果res,如果该返回的结果res等于hashcode,程序就会输出flag。

    0x02 程序运行

     用户的输入为20个字节的char(一个字节)型数据,程序运行后将其转换为int(4个字节)型,所以要构造5个int型的数据,使之相加为568134124,然后再将这个5个数据转换为char型,刚好就是20个字节,这5个数据随意构造,只要相加为568134124就可以,考虑到溢出等不必要的麻烦,还是将其平均取值,4个113626825,1个113626824,化为char型就是   xc9xcexc5x06    和xc8xcexc5x06,下面就是程序代码了

     -c :执行当前cmd命令,反单引号“·”,括起来的是执行当前shell命令。

    flag就是

    daddy! I just managed to create a hash collision :)

    附:python脚本

    from pwn import *
    import os
    
    pwn_ssh = ssh(host='pwnable.kr',port = 2222,user = 'col',password = 'guest')
    print (pwn_ssh.connected())
    
    sh = pwn_ssh.process(argv = ['collision','xc9xcexc5x06'*4+'xc8xcexc5x06'],executable = './col')
    print(sh.recvall())

     

  • 相关阅读:
    .Net2.0 中 Page 页面的事件触发顺序
    vs 中自带的代码混淆器 Dotfuscator (图)
    SqlHelper 中文注释版(值得收藏)
    (原创)用重载实现 treeview 的无限分类递归调用(图)
    通过前置代码指定嵌套中的 Repeater 事件!
    vs2008 中提高开发效率的一些快捷键
    强内聚,弱耦合
    也谈 SQL 注入攻击。
    ASP.NET 页面中动态加载用户控件
    ASP 调用存储过程,同时返回记录集和输出参数
  • 原文地址:https://www.cnblogs.com/DennyT/p/11512009.html
Copyright © 2020-2023  润新知