题目来源:https://ctflearn.com/index.php?action=find_problem_details&problem_id=150
原题:
Calculat3 M3
Here! http://web.ctflearn.com/web7/ I forget how we were doing those calculations, but something tells me it was pretty insecure.
点开题目给出的链接,可以看到一个网页版的计算器,计算得到的结果会出现在页面的左上角:
查看这个页面的源码,看到这个页面调用了一个JS脚本:
点击源码中的链接查看JS脚本:
可以看到脚本中定义了三个函数,前两个是对一个变量赋值,最后一个是将这个变量的值放到eval()中执行。
eval()函数接受一个字符串作为变量, 它会将这个字符串当做JS命令来执行。所以我们可以通过改变eval()的变量来实现代码注入。
打开Burp Suite的代理,在网页中计算1+1,利用Burp Suite来截获页面的请求:
可以看到操作的参数在expression中,发送这个请求后网页会返回结果2。所以eval()应该接收了1+%2B+1+为变量并运行得到了结果。所以我们尝试编辑expression来实现代码注入。
尝试输入了:10 ; system(\"/bin/echo uh-oh\");
;return 1;
但是网页没有返回任何东西。这可能是为了保护网站服务器而屏蔽了一些危险的字符。尝试最基础的命令ls。输入代码 ;ls。服务器返回了当前目录下的文件:
可以看到其中一个文件名就是flag值。
网友评论