菜鸡刚学web,在这里写两道11月月赛web题的writeup
ezMD5
题目:http://182.92.241.162:10001/
看看,是python写的
既然不是php写的,那就不能用php的0e开头数字接后的字符串弱相等这一php中的特性了
搜索一下,看看网上有没有md5相同的字符串或文件
发现有:
那就好办了,直接写个脚本,作为a、b传到目标网址
1 | import requests as req |
得到flag
第二种方法
用到base64.b64decode的特性
随便一输:
看到用base64.b64decode()
处理了
传入的参数中,多余的字符会被忽略,即除了0-9,a-z,A-Z,=
所以写脚本:
1 | import requests as req |
zs的难题
题目关了
简单的源码:
但是,正如提示所说的,删除了很多命令
cd 到每一层看一看
第一层:
上一层:
再上一层:
再上一层
终于,看到了flag
那我们的目标就是要在标准输出流中打印出flag里面的内容
外置的命令,包括cat,都是存放在bin文件夹下的,所以cd 进去看看:
这三个命令能用,其中ls用来展示文件夹的结构,sh 可以执行shell 脚本,也可以执行标准输入流传给它的命令,rm是用来删除文件或文件夹的
- payload:
zs=cd ..;cd ..;cd ..;echo 'while read line;do echo $line;done < flag' > hello;sh hello
查了半天资料,想了好多脑洞大开的方法,最终发现能通过 sh file_name
直接运行一个shell脚本,所以我决定看看能不能写个脚本然后运行
echo
是builtin 的命令,删不掉,试试看
没问题,echo
能用
echo
把内容打印到标准输出端中,可以通过来重定向,即通过 ```echo message > file_name``` 之后,```message```就被写入指定的文件中
1
2
3
4
5
6
7
打印文件到标准输出流的shell脚本这样写:
```shell
while read line
do echo $line
done < file_name
查一查怎么写成一行:
1 | while read line;do echo $line;done < file_name |
那么,可以整了:
http://47.93.220.75:8888/?zs=cd ..;cd ..;cd ..;echo 'while read line;do echo $line;done < flag' > hello;sh hello