-
-
看雪CTF2019Q1-第4题
-
发表于: 2019-3-18 22:26 3022
-
checksec apwn
1 2 3 4 5 | Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE: PIE enabled |
1 2 3 4 5 | Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE: PIE enabled |
功能
1 2 3 4 5 6 7 | puts ( "1.create singledog" ); puts ( "2.create luckydog" ); puts ( "3.edit singledog" ); puts ( "4.edit luckydog" ); puts ( "5.save singledog" ); puts ( "6.exit" ); puts ( ">>" ); |
1 2 3 4 5 6 7 | puts ( "1.create singledog" ); puts ( "2.create luckydog" ); puts ( "3.edit singledog" ); puts ( "4.edit luckydog" ); puts ( "5.save singledog" ); puts ( "6.exit" ); puts ( ">>" ); |
相关结构
1 2 3 4 5 6 7 8 9 10 11 | struct single { char name[32]; }; struct luckydog { single *partner; char name[24]; }; single g_singles[80]; luckydog g_doubles[80]; |
1 2 3 4 5 6 7 8 9 10 11 | struct single { char name[32]; }; struct luckydog { single *partner; char name[24]; }; single g_singles[80]; luckydog g_doubles[80]; |
edit singledog(只有这个有输出)
1 2 3 4 5 | if ( g_singles[i] ) { read(0, g_singles[i], 0x20uLL); printf ( "new name: %s" , g_singles[i]); } |
1 2 3 4 5 | if ( g_singles[i] ) { read(0, g_singles[i], 0x20uLL); printf ( "new name: %s" , g_singles[i]); } |
edit_luckydog
1 2 3 4 5 6 7 | if ( g_doubles[i] ) { puts ( "Oh,luckydog,What is your new name?" ); read(0, g_doubles[i]->name, 0x18uLL); puts ( "your partner's new name" ); read(0, g_doubles[i]->partner, 0x20uLL); } |
1 2 3 4 5 6 7 | if ( g_doubles[i] ) { puts ( "Oh,luckydog,What is your new name?" ); read(0, g_doubles[i]->name, 0x18uLL); puts ( "your partner's new name" ); read(0, g_doubles[i]->partner, 0x20uLL); } |
save_singledog, 这里single_num为80的时候, 会越界复制
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
他的文章
- KCTF2022春季赛 第三题 石像病毒 9083
- KCTF2022春季赛 第二题 末日邀请 16403
- KCTF2021秋季赛 第二题 迷失丛林 19138
- KCTF2020秋季赛 第十题 终焉之战 9157
- KCTF2020秋季赛 第九题 命悬一线 6660
赞赏
雪币:
留言: