咳咳,主要是记一下最近学二进制然后工作室里面一个一起学pwn,然后遇到的一个比较好玩的题目。 一共呢,是两个文件,这也是最近学习pwn第一次做到两个文件的题目, 如果想要源文件,这边可以加我们的工作室奥,
群号:746314247,个人号:2950915532,或者关注微信公众号:“行军蚁网安”
然后进入正题,先使用checksec分别检查一下两个文件,
看到一个开的多了一点,关于checksec检测的机制就不多介绍了,这里直接丢进IDA,注意两个文件都是64的。
这里呢,有栈溢出,然后32是十进制,也就是0x20,加上64位的ret是8,也就是40,然后在callme文件的函数名称发现了这个题目的关键
看到这里呢,是分别有one two three三个和文件名相思的函数,分别点开看一下,似乎是什么动态的调试,pas掉,这三个数后面是需要利用的,先看一下另一个文件libcallme.so文件,
在每个函数里面的内容都有相应的位置,看到这里就可以准备写exp了,
特别提醒一下,也是在别的大佬那里看到的:
**当参数少于7个时, 参数从左到右放入寄存器: rdi, rsi, rdx, rcx, r8, r9。用栈时右到左,但64,32是相同顺序放在栈里的,很有意思。**
然后就可以直接连接,
这个题目主要的地方就是,是我在学习pwn的路上第一次做这种两个文件的题目,所以嘞,就像相应的记一下