题目链接:NSSCTF | 在线CTF平台
涉及工具:hackbar
涉及知识点:eval漏洞;system操作系统命令的使用
解题思路:
1.打开靶场:
审计代码:
注:代码实现了一个简单的文件包含漏洞。
①“error_reporting(0);”:设置错误报告级别为 0,即不显示任何错误。这样做可能是为了隐藏可能出现的错误信息,增加攻击者执行恶意代码的隐蔽性。
②“highlight_file(__FILE__);”:将当前文件的源代码高亮显示在浏览器中,用于查看代码内容。这是一种调试技术,通常在开发过程中使用,但在生产环境中不建议这样做,因为它会暴露代码结构和潜在的安全问题。
③“if(isset($_GET['url']))”:检查是否通过get方式传递了名为 ‘url’ 的参数。
④“eval($_GET['url']);”:如果 'url' 参数存在,则使用 ‘eval()’函数执行 ‘url’ 参数中的代码。‘eval()’函数将传入的字符串作为 PHP 代码执行,这就是一个典型的代码执行漏洞。
注:这段代码存在严重的安全漏洞,因为它直接执行了用户传入的 URL 参数中的代码,可能导致远程代码执行漏洞。攻击者可以构造恶意代码并通过 URL 参数传递,从而执行任意代码,可能导致系统受到严重损害。为了修复这个漏洞,应该避免使用 `eval()` 函数,而是采用更安全的方式来执行动态代码,如使用函数或类的方式来实现相同的功能,并对用户输入进行严格的验证和过滤。
2.审计得知:
存在eval漏洞,eval会执行我们用get传入的参数‘url’所包含的内容,此处可利用‘system(“ls /”);’命令来显示包含了哪些文件:
注:
①nssctf平台该题存在问题,有时候命令输入后没有返回结果,可退出页面后重新进入靶场即可解决;
②‘system’命令后需加英文状态的‘;’.
3.可看到目录包含“flllllaaaaaaggggggg”文件,极大可能就是flag,使用命令“system(“cat /flllllaaaaaaggggggg”)”来查看文件:
获得flag.
4.知识点总结:
①hackbar传参的基本使用,该知识点在我另一篇博文中详细介绍后具体使用过,有需要的师傅自行查阅,链接:【[SWPUCTF 2021 新生赛]jicao - 优快云 App】http://t.csdnimg.cn/CAZ0X
②eva()漏洞,攻击者可利用eval会将括号里的内容当作php语句来执行的漏洞进行攻击。
③system函数的使用:
system(“ls /”);----->列出当前目录下的所有文件
System(“cat /*”);---->打开*文件
注:system语句末尾需要打分号!