Nc
通过nc,我们可以链接到对方的服务器
再用过Linux的命令可以查找到我们想要的信息
Ret2txt
先查壳
没开任何保护,拿IDA看看
很明显的栈溢出,看到/bin/sh地址
解释,通过汇编语言我们知道调用函数使用call命名,call执行时,会将此时eip的值用push ebp或者rbp进行入栈,最后ret命令做一个返回,会返回到之前主程序运行的地方,那么栈的溢出,就是通过栈溢出后将函数返回的地址改成我们想要的函数
写exp
最后成功拿到flag
Ret2libc_easy
前面的操作和Ret2txt一样,nc,查壳
这里我们直接看IDA
我们的思路还是找/bin/sh
用shift+F12找一下看看有没
但是奇怪的是我们发现
System函数执行的不是/bin/sh
那解决问题,我们想着能否把whoami替换掉呢?
利用此命令,我们可以把栈上存储的数据存入寄存器中
然后执行system函数
那么直接写脚本
这里要理解,ret直接返回到了pop rdi ret 命令这里
然后再ret执行的sysytem函数
整数溢出
计算机中存在有符号和无符号数的存在,当一个数本来是无符号数而被传如有符号数,计算机会将符号也看成数,从而当成地址例如-1 会被识别为无符号的数据 所以-作为标识符会被认为是数据1 0001
看IDA
Read函数便是这样
同时我们看到bin/sh的地址
最后读的是无符号数,那如果我们,发送负数过去,造成整数溢出
脚本