OFW6.30で対策されてしまったPatapon2 exploitですが、対策されたのは名前の後にコードを続けてバッファーオーバーフローを引き起こすexploitです。
今回全く別のParapon2 US Demoセーブデータを作ってみたところ、OFW6.35でクラッシュして電源が落ちました。
偶然$a0のアドレスの後ろに入れた"aaaa"をLoad Wordで拾ってきて$a1:0x61616161となっただけで単なるクラッシュなんですが、メモリーダンプを逆アセンブルして眺めているとjalr $t9なんていう命令があったりと、運が良ければ何か面白いものが出てくるんじゃないかなぁと思っています。
一人でやってても埒があかないので、みんなで練習がてらやってみませんか?
なお、もし万が一、いや億が一にもexploit見つけちゃった場合には絶対にセーブデータ公開しないでくださいね。
名前の後に"aaaa"などを入れるのは既に対策済ですので何をやっても復活しません。名前以外のところで探してください。
- コード: 全て選択
Exception - Address load/inst fetch
Thread ID - 0x04617A21
Th Name - user_main
Module ID - 0x0462033B
Mod Name - Labo
EPC - 0x08977844
Cause - 0x90000010
BadVAddr - 0x8E328EF0
Status - 0x60088613
zr:0x00000000 at:0xDEADBEEF v0:0x8E328EF0 v1:0x85858584
a0:0x08D09158 a1:0x61616161 a2:0x00000002 a3:0x08CA1210
t0:0x00000001 t1:0xDEADBEEF t2:0xDEADBEEF t3:0xDEADBEEF
t4:0xDEADBEEF t5:0xDEADBEEF t6:0xDEADBEEF t7:0xDEADBEEF
s0:0x08C9FDC0 s1:0x08D09158 s2:0x09E63840 s3:0x08C9A360
s4:0x08C9FC80 s5:0x00000080 s6:0x08C9AABC s7:0x00000002
t8:0xDEADBEEF t9:0x0884B160 k0:0x09FFFB00 k1:0x00000000
gp:0x08B43B50 sp:0x09FFF520 fp:0x09FFFA90 ra:0x088682FC
0x08977844: 0x03E00008 '....' - jr $ra
- コード: 全て選択
disasm 0x08977820 40
0x08977820: 0x00000000 '....' - nop
0x08977824: 0x24020010 '...$' - li $v0, 16
0x08977828: 0x14A20002 '....' - bne $a1, $v0, 0x08977834
0x0897782C: 0x00000000 '....' - nop
0x08977830: 0x8C85001C '....' - lw $a1, 28($a0)
0x08977834: 0x3C0208AD '...<' - lui $v0, 0x8AD
0x08977838: 0x00051880 '....' - sll $v1, $a1, 2
0x0897783C: 0x2442096C 'l.B$' - addiu $v0, $v0, 2412
0x08977840: 0x00431021 '!.C.' - addu $v0, $v0, $v1
0x08977844: 0x03E00008 '....' - jr $ra
0x08977848: 0x8C420000 '..B.' - lw $v0, 0($v0)
0x0897784C: 0x8CA30004 '....' - lw $v1, 4($a1)
0x08977850: 0x00031880 '....' - sll $v1, $v1, 2
0x08977854: 0x00831821 '!...' - addu $v1, $a0, $v1
0x08977858: 0x03E00008 '....' - jr $ra
0x0897785C: 0xAC650000 '..e.' - sw $a1, 0($v1)
0x08977860: 0x30A2FFFF '...0' - andi $v0, $a1, 0xFFFF
0x08977864: 0x00021080 '....' - sll $v0, $v0, 2
0x08977868: 0x00821021 '!...' - addu $v0, $a0, $v0
0x0897786C: 0x8C440000 '..D.' - lw $a0, 0($v0)
0x08977870: 0x0A25DE81 '..%.' - j 0x08977A04
0x08977874: 0x30C5FFFF '...0' - andi $a1, $a2, 0xFFFF
0x08977878: 0x7CA27C00 '.|.|' - ext $v0, $a1, 16, 16
0x0897787C: 0x00021080 '....' - sll $v0, $v0, 2
0x08977880: 0x00821021 '!...' - addu $v0, $a0, $v0
0x08977884: 0x8C440000 '..D.' - lw $a0, 0($v0)
0x08977888: 0x0A25DE81 '..%.' - j 0x08977A04
0x0897788C: 0x30A5FFFF '...0' - andi $a1, $a1, 0xFFFF
0x08977890: 0x27BDFFE0 '...'' - addiu $sp, $sp, -32
0x08977894: 0xAFBF000C '....' - sw $ra, 12($sp)
0x08977898: 0xAFB00008 '....' - sw $s0, 8($sp)
0x0897789C: 0x00808021 '!...' - move $s0, $a0
0x089778A0: 0x24040008 '...$' - li $a0, 8
0x089778A4: 0x27A5001C '...'' - addiu $a1, $sp, 28
0x089778A8: 0x0E2A22A2 '."*.' - jal 0x08A88A88
0x089778AC: 0xAFA0001C '....' - sw $zr, 28($sp)
0x089778B0: 0x8FA3001C '....' - lw $v1, 28($sp)
0x089778B4: 0x24020003 '...$' - li $v0, 3
0x089778B8: 0x1062000A '..b.' - beq $v1, $v0, 0x089778E4
0x089778BC: 0x00000000 '....' - nop
- コード: 全て選択
host0:/> disasm 0x088682fc 10
0x088682FC: 0x00402821 '!(@.' - move $a1, $v0
0x08868300: 0x0E208285 '.. .' - jal 0x08820A14
0x08868304: 0x27A40050 'P..'' - addiu $a0, $sp, 80
0x08868308: 0x3C0508A9 '...<' - lui $a1, 0x8A9
0x0886830C: 0x27A40050 'P..'' - addiu $a0, $sp, 80
0x08868310: 0x0E2081FC '.. .' - jal 0x088207F0
0x08868314: 0x24A5F93C '<..$' - addiu $a1, $a1, -1732
0x08868318: 0xAFB2004C 'L...' - sw $s2, 76($sp)
0x0886831C: 0x27A4004C 'L..'' - addiu $a0, $sp, 76
0x08868320: 0x27A50050 'P..'' - addiu $a1, $sp, 80