第六周
目录
WEB
[极客大挑战 2019]BuyFlag
查看源码
发现了pay.php
查看一下
给我们条件
发现 is_numeric() 和 ==弱比较
hackbar
post
然后我们查看源代码
发现不能购买
所以我们进行抓包
发现了cookie:user=0
这可能是进行判断 我们尝试把他改为1
成功了 然后他返回数字的长度太长了 我们只有money的数字长度很长 所以进行改为科学计数法
1e9
得到flag
[RoarCTF 2019]Easy Calc
查看源代码
发现里面有一个calc.php的文件
进行代码审计
有一个黑名单
然后get num
我们在刚刚开始的时候 可以发现 我们只能输入数字 没办法输入字符
所以waf应该对num 进行过滤 我们要让waf 找不到num
1.绕过waf
?num !=? num 中间有一个空格
这样waf就找不到num 但是? num在处理的时候会过滤空格
加上空格
没加
2.绕过黑名单查看文件
利用scandir()列出目录和文件,var_dump()用于输出
scandir()函数返回指定目录中的文件和目录的数组。
scandir(/)相当于ls /
var_dump()相当于echo
因为过滤了/
所以我们构造 chr(47)
ASCII码对应表chr(9)、chr(10)、chr(13)、chr(34)、chr(39)、chr(46)_大虾.唐的博客-CSDN博客
? num=var_dump(scandir(chr(47)))
发现
f1agg
3.绕过黑名单 读取文件
利用file_get_contents()读取并输出文件内容
file_get_contents(/xxx.php),读取/xxx.php的代码
所以我们构造
? num=file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))
我们为什么f1agg也要转换 因为代码中还有一个黑名单 没有展现 是黑名单项目 所以过滤了这个文件
Crypto
rsarsa
套代码
import gmpy2
e = 65537
p = 9648423029010515676590551740010426534945737639235739800643989352039852507298491399561035009163427050370107570733633350911691280297777160200625281665378483
q = 11874843837980297032092405848653656852760910154543380907650040190704283358909208578251063047732443992230647903887510065547947313543299303261986053486569407
n = p * q
# 密文
C = 83208298995174604174773590298203639360540024871256126892889661345742403314929861939100492666605647316646576486526217457006376842280869728581726746401583705899941768214138742259689334840735633553053887641847651173776251820293087212885670180367406807406765923638973161375817392737747832762751690104423869019034
d = gmpy2.invert(e, (p - 1) * (q - 1))
# print(d)
# 求明文
M = pow(C, d, n) # 快速求幂取模运算
print(M)
Windows系统密码
发现ctf关键词 然后有两个;;所以是两串 然后系统密码 想到md5
开始解密
第一个不行 尝试第二个
得到flag
Misc
另外一个世界
下载文件放入010
在文件最下面有 二进制 我们把他转为字符串
得到flag
FLAG
下载文件 猜测 工具使用过去都没有 就猜测是不是LSB隐写
果然出现pk 是一个压缩包 我们save bin 保存为压缩包后缀
我们打开压缩包文件 然后搜索ctf
得到flag