来自lan.st论坛会员MaTiAz的消息,PSP早期游戏《爆冲赛车》的游戏存档存在数据溢出错误,MaTiAz利用这个漏洞编写了一个特殊的存档数据,并成功运行了存档中的部分代码。作者将此过程录制成一个视频,演示中使用PSP3000主机,视频的最后PSP主机显示蓝白交替的画面。
http://player.youku.com/player.php/sid/XNjM5NjQxNzY=/v.swf
以下为作者发布的原始文字:
So, happy new year. I think presenting a new usermode exploit on the PSP is a good way to start 2009 GripShift has a buffer overflow vulnerability when loading savegames. The savegame contains the profile name which can be easily used to overwrite $ra. The savegame file is pretty big (25kB) so you have lots of space to put your code there. I wrote a simple blob of code to paint the framebuffer completely white (to just indicate that arbitrary code is running ). The return address is located at offset 0xA9 in the file. In this poc it points to 0x08E4CD50 (which is only a few bytes after the return address), and the code starts at 0xCC in the file. It was tested on 4.01M33-2 with US version of GripShift (ULUS10040), and psplink.prx, usbhostfs.prx and deemerh.prx loaded (also without psplink and usbhostfs). The decrypted savegame (sorry, couldn't [be bothered to] get Shine's savegame tool working so it's in plaintext form) is in the SDDATA.BIN form which Hellcat's Savegame-Deemer produces (thanks to him, if the program didn't exist I wouldn't have bothered with this. ). Just copy the ULUS10040SAVE00 directory to /PSP/SAVEPLAIN/ and run the game. EDIT: yeah, don't forget to have Savegame-Deemer working, duh. Credits go to those who deserve them. |
目前各方面还未对此视频及发现发表评论。顺便说一下,“.ST”这个域名来自非洲某个岛国。