信息安全|SECCON CTF 2017 Powerful_Shell

打开一开始一堆变量赋值,而且很长
信息安全|SECCON CTF 2017 Powerful_Shell
文章图片

我们拖到最后,有个create执行脚本的东西,而且还是前面的变量
信息安全|SECCON CTF 2017 Powerful_Shell
文章图片

那我们用Write-Host输出这个变量
信息安全|SECCON CTF 2017 Powerful_Shell
文章图片

得到的是另一串powershell脚本
信息安全|SECCON CTF 2017 Powerful_Shell
文章图片

扣下来,其中下面这部分只是验证Host,我们并不需要,直接删掉
信息安全|SECCON CTF 2017 Powerful_Shell
文章图片

运行一下是弹钢琴的操作
信息安全|SECCON CTF 2017 Powerful_Shell
文章图片

那我们添加代码,输出被处理后的值
信息安全|SECCON CTF 2017 Powerful_Shell
文章图片

就图片上的字母,自己试就行
信息安全|SECCON CTF 2017 Powerful_Shell
文章图片

最终得出对应如下
h 440
j 493
k 523
f 349
按着secret的顺序输即可(输入顺序:hhjhhjhjkjhjhf)
信息安全|SECCON CTF 2017 Powerful_Shell
文章图片

又出来一串,一看就是十进制ascii
信息安全|SECCON CTF 2017 Powerful_Shell
文章图片

简单还原一下即可
信息安全|SECCON CTF 2017 Powerful_Shell
文章图片

结果又来一串
信息安全|SECCON CTF 2017 Powerful_Shell
文章图片

后来将\n去掉,发现还是powershell,可以执行,要我们输入密码
信息安全|SECCON CTF 2017 Powerful_Shell
文章图片

后来将这个代码以; 分割,输出前面的东西
信息安全|SECCON CTF 2017 Powerful_Shell
文章图片

发现这几个东西代表0-9
信息安全|SECCON CTF 2017 Powerful_Shell
文章图片

后来发现后面用了管道符,iex将字符串当powershell执行,你输出最后的那个${; }就知道
信息安全|SECCON CTF 2017 Powerful_Shell
文章图片

那我将管道符及后面的删除,输出如下
【信息安全|SECCON CTF 2017 Powerful_Shell】信息安全|SECCON CTF 2017 Powerful_Shell
文章图片

我们将那些数字扣下来,用sublime批量编辑,很快搞掂,写一下脚本就好了
信息安全|SECCON CTF 2017 Powerful_Shell
文章图片

其实还有更方便的,再将后面的管道符和iex删掉,再执行就好了
信息安全|SECCON CTF 2017 Powerful_Shell
文章图片

    推荐阅读