昨天写了个关于一句话木马的题,今天上午百度了一个上午理解一句话木马,感jio还是有点懵逼,于是想写一下题来理解一下下……不过虽然这道题题目叫过狗一句话,但似乎跟我想象的不大一样emmmmm
----------------------------------------------------------不废话不废话----------------------我是分割线分割线-----------------------------------------
题目中给了一小段php代码:
然后我经历了点开题目链接、查看源代码、扫描目录后也并没有发现其他的hint,于是……老老实实分析这段代码:
这里explode函数把字符串poc按#分隔开并映到poc_1数组中去;
然后poc_2再把他们连接起来,总的来说就是把poc中的#去掉,变成一个新的字符串赋值给poc_2;
可以看出,poc_2是assert,然后我们来看最后一句话,它现在变成了一个函数,即:
assert($_GET['s'])
而assert函数功能跟eval类似,可以把里面的内容当作代码来执行,考虑扫描目录下的文件,构造payload:
?s=print_r(scandir('./'));可以把当前目录下的文件或者目录以数组的形式显示出来;
其中123.php、index.php、test.php都是用御剑扫描出来过并没有发现什么东西的,但是有一个十分可疑的f14g.txt,于是访问:得到flag: