Urahara's Blog

Co-founder of FormSec, security researcher, bug hunter, pentester. Opinions are my own.

Web For Pentester - Code injection & Commands injection Part Tips

02 Nov 2016 » pentest

Code injection Part

Example 1

这里使用双引号页面会抛出异常,异常信息中显示程序使用了eval()函数,也就是说这里可能存在代码执行漏洞

name=”.phpinfo();//

Example 2

这里可以看出程序对相关数据进行了排序,那么存在两种情况,有可能是使用order by数据库语句进行排序,也有可能是通过php的usort()函数进行排序,通过特殊字符报错报错显示程序使用了usort()函数,usort()很多情况下会搭配create_function()动态生成一个函数,如果web应用程序缺乏有效的过滤和验证,这可能会导致代码执行。

order=name);}phpinfo();//

Example 3

同样我们让程序进行报错,从报错信息中得知程序使用了preg_replace()函数,看见这个一定想到了被他所指定的preg_replace_eval()函数(在php5.5以后被弃用),那么这里通过/e修饰符来进行指定

new=phpinfo()&pattern=/lamer/e&base=Hello lamer

Example 4

通过报错信息可以看出这里使用了assert()函数,那么可以猜测进行语句拼接“‘.’”

me=hacker’.phpinfo().’

Commands injection Part

Example 1

最普通的命令执行漏洞,未做任何过滤,直接拼接系统命令就可以

ip=127.0.0.1|id

ip=127.0.0.1%26%26id

Example 2

ip=127.0.0.1%0Aid

Example 3

通过网络请求可以看着这里会有个302跳转,那么就直接使用nc、telnet、curl等进行单次请求

curl http://192.168.149.134/commandexec/example3.php?ip=127.0.0.1|id