摘要: 方法1: get_flag的返回地址,这个地址不能乱写,打远程时,如果程序是异常退出了,最后是不给你回显的。所以我们得想办法让程序正常退出。 C语言有个函数是exit,只要执行这个只要我们把get_flag的返回地址写成exit的地址,程序就可以结束并且有回显了。 32 位程序 payload = 阅读全文
posted @ 2022-03-31 10:26 -ro0t 阅读(114) 评论(0) 推荐(0)
摘要: 检查,有nx保护 ida分析 里面没有system函数和/bin/sh字符,基本上就是要自己构造rop链也就是ret2libc。 分析他的加密函数,程序逻辑是输入一个字符串,按照内置加密函数逻辑加密转化为密文。但存在溢出漏洞。 gets函数可以栈溢出,而且14行有个 if ( v0 >= strle 阅读全文
posted @ 2022-03-31 10:23 -ro0t 阅读(374) 评论(0) 推荐(0)
摘要: 例行检查,32位,开启了canary和nx保护 运行一下程序 一眼格式化字符串漏洞 只要把x改为4,它就执行system(/bin/sh)。现在x为3。所以就要利用格式化字符串漏洞的任意地址读写,x_addr%[i]$n 1.找到x的地址 2.确定i的值 利用 "AAAA %08x %08x %8x 阅读全文
posted @ 2022-03-26 10:00 -ro0t 阅读(79) 评论(0) 推荐(0)
摘要: 常规check一下,64位程序,没啥 Shift+F12,果然,找到/bin/sh 函数列表里面有一个vulnerable函数,哈哈,还是对新手很友好的,直接告诉你这个函数。有问题,进去看看 可以看到先是定义了一个buf变量,然后输入该变量后面200长度内容。buf的长度为0x80。 很明显read 阅读全文
posted @ 2022-03-08 00:58 -ro0t 阅读(97) 评论(0) 推荐(0)
摘要: 整数溢出原理 对于 unsigned short int 类型的两个变量 var1、var2,假定取值 var1 = 1,var2 =65537(二进制为0001,0000,0000,0000,0001),在比较这两个值时,会仅考虑后16个字节的内容,故相等。 check一下,32位程序 看看主函数 阅读全文
posted @ 2022-03-08 00:57 -ro0t 阅读(61) 评论(0) 推荐(0)
摘要: Check一下,64位程序。Ida分析,程序主要内容就是输入名字>连续猜10次数字,猜错一次就gg,连续10次即可得到flag。 我们要猜的数字是由rand函数生成的,众所周知,计算机中的随机都是伪随机,如果观察足够多的长度,还是可以找到规律进而预测。rand函数生成数字是基于种子,只要种子选取相同 阅读全文
posted @ 2022-03-08 00:54 -ro0t 阅读(52) 评论(0) 推荐(0)
摘要: Shift+F12,可以看到里面有/bin/sh。查找函数列表,vulnerable中调用了system函数,但可惜里面不是/bin/sh,read函数有栈溢出。好了基本思路有了。 覆盖buf要0x88+0x4(s),r指到system的地址,0x08048320,在跟上/bin/sh的地址,0x0 阅读全文
posted @ 2022-03-08 00:52 -ro0t 阅读(46) 评论(0) 推荐(0)