打开靶场,看到一个输入框,标题已经提示是command execution。
1. 首先输入111|ls
发现文件index.php
2. 打开文件index.php,构造payload:111|cat index.php,右击查看网页源代码,发现采用system执行外部命令,且没有任何过滤。
3. 但是通过ls并没有查看到其他文件,于是考虑到使用参数-a显示隐藏文件。构造payload:111|ls -a。显示页面为:
4. 查看隐藏目录。构造payload:111|ls ../,发现两个文件
因为是做题,猜测存在一个flag文件,因此继续向前构造。(感兴趣的话也可以看看文件里都是啥,尤其对于一些名字是系统文件名的文件)
构造payload:111|ls ../../,依然不存在flag文件,继续尝试payload:111|ls ../../../,发现目标文件。
6. 查看文件内容,发现flag。Payload:111|cat ../../../flag
附录:
查看源代码的过程中,看到使用system()函数执行外部命令,好奇其和exec()函数的区别,于是查了一下,由于知识面太窄,在查看区别的过程中,又产生了一系列疑问,以下是按照顺序查找的知识点,附上链接,供自己复习和同样有需要的人查看。
网安学习入门者,如有问题,欢迎指教。
来源地址:https://blog.csdn.net/m0_60911102/article/details/126644800