详解php命令注入攻击(2)

这段代码对ip地址进行了简单的过滤,如果它匹配到,它会执行下面system那条命令,如果它没有匹配到,它就无法执行下面那条命令(即ping),也就是我们开始时看到的界面:


所以,我们想要让服务器执行ipconfig,首先想到的思路就是让它发生错误,执行失败,使用双管道让它执行ipconfig,接下来我们用ip=127.||ipconfig试一下:


成功

同理,我们使用单管道(ip=127.0.0.1|ipconfig)试一试:


成功

继续,我们使用“%26”(ip=127.0.0.1%26ipconfig)试一试:


详解php命令注入攻击


执行了两个命令,成功!

知识补充

我们可以通过ping命令返回结果中的TTL项查看服务器的操作系统:LINUX——64 WIN2K/NT——128 WINDOWS系列——32 UNIX系列——255(前面为操作系统,后面为TTL值) 通过ping返回结果,看TTL值与哪项最为接近,服务器就是哪个操作系统。

我们ping一下百度的试试


TTL值为52,则它与64之间跨了12个路由,所以它的服务器应该是LINUX。

接下来补充一些常用的管道符:

Windows系统支持的管道符如下:

“|”:直接执行后面的语句。

“||”:如果前面的语句执行失败,则执行后面的语句,前面的语句只能为假才行。

“&”:两条命令都执行,如果前面的语句为假则直接执行后面的语句,前面的语句可真可假。

“&&”:如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句为真则两条命令都执行,前面的语句只能为真。

Linux系统支持的管道符如下:

“;”:执行完前面的语句再执行后面的语句。

“|”:显示后面语句的执行结果。

“||”:当前面的语句执行出错时,执行后面的语句。

“&”:两条命令都执行,如果前面的语句为假则执行执行后面的语句,前面的语句可真可假。

“&&”:如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句为真则两条命令都执行,前面的语句只能为真。

总结一下:这种需要分析代码的问题一定不能大意,需要认真读懂什么意思才能破解它的秘密。这次实验并不是很难,以前在做CTF——Web题有遇到过,那种跟这个差不多,通过分析代码构造url获取flag。

以上所述是小编给大家介绍的php命令注入攻击详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/1f2881f4a124c8fec2e8530851391b1b.html