-
-
[原创]2017 湖湘杯pwn200 格式化字符串
-
发表于:
2018-2-12 23:49
14016
-
[原创]2017 湖湘杯pwn200 格式化字符串
这篇在FreeBuf发过了,不过那边快两个周没联系我发稿费……就把之前写的几篇pwn入门文章都发到看雪好了~希望为论坛做一点点贡献。
c28K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6W2N6r3g2J5L8X3q4D9M7$3q4C8N6i4u0S2i4K6u0r3j5%4c8X3i4K6g2X3M7s2N6F1i4K6u0r3N6s2u0W2k6g2)9J5c8X3#2S2M7%4c8W2M7W2)9J5c8W2!0q4y4W2!0n7z5g2)9&6y4W2!0q4y4W2!0n7z5g2)9&6z5q4!0q4y4W2)9&6c8q4!0m8c8U0t1H3x3e0N6Q4x3V1k6H3N6$3^5J5x3o6l9`.


形如
找到格式化字符串漏洞

tips1
查看本机ASLR

so地址变动,确定本机开启了aslr
关闭ASLR
echo 0 > /proc/sys/kernel/randomize_va_space
确认关闭

看到printf(&buf)之后
read(buf)
atoi(buf)
所以我们的思路就是,利用格式化字符串漏洞的任意地址读,先leak出puts函数的地址puts_addr
到利用格式化字符串漏洞的任意地址写,去将atoi函数在got.plt表中的地址改为system函数的地址,然后通过read去控制buf,传入"/bin/sh",构造出system("bin/sh"),获取shell。
关于覆盖got表,不知道为什么的话,参考下面的文章。
050K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2B7K9h3q4F1M7$3S2#2i4K6u0W2j5$3!0E0i4K6u0r3M7q4)9J5c8U0m8S2j5K6j5K6j5K6x3%4y4o6c8V1k6l9`.`.
1daK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4u0A6j5$3E0Y4M7X3q4&6i4K6u0W2L8h3g2Q4x3V1k6#2M7$3g2Q4x3X3c8Y4k6r3u0Q4x3X3c8@1L8#2)9J5k6s2y4@1N6h3c8&6i4K6u0V1k6$3!0@1i4K6u0V1j5h3&6V1i4K6u0V1M7r3I4@1
任意地址读:0bcK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6U0N6r3k6Q4x3X3c8%4K9h3E0A6i4K6u0W2k6$3W2@1K9s2g2T1i4K6u0W2K9h3!0Q4x3V1k6U0N6r3k6Q4x3X3c8%4K9h3E0A6i4K6u0r3M7s2N6F1i4K6u0r3k6X3#2@1M7%4c8J5i4K6u0r3k6X3#2@1M7%4c8J5i4K6g2X3k6i4S2H3L8r3!0A6N6q4)9J5k6h3S2@1L8h3H3`.
调试找到puts的地址在栈中的位置。

在gdb中调试(这里我使用了gef插件),可以看出地址在7个参数(仔细分析一下AAAA%7$x
,把AAAA换掉就是地址,把%x换成%s就可以打印出内容)
libc.symbols['system'] - libc.symbols['puts'] + u32(puts_addr)
输出为
abcabc
val = 3
这就告诉我们,%n可以把其前面输出的字符个数,写入&val指向的地址。
如果还不理解的话可以参考:
41cK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6U0N6r3k6Q4x3X3c8%4K9h3E0A6i4K6u0W2k6$3W2@1K9s2g2T1i4K6u0W2K9h3!0Q4x3V1k6U0N6r3k6Q4x3X3c8%4K9h3E0A6i4K6u0r3M7s2N6F1i4K6u0r3k6X3#2@1M7%4c8J5i4K6u0r3k6X3#2@1M7%4c8J5i4K6g2X3k6i4S2H3L8r3!0A6N6q4)9J5k6h3S2@1L8h3H3`.
48bK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3y4F1j5X3I4G2k6%4y4Q4x3X3g2U0L8$3#2Q4x3V1k6a6P5o6W2m8z5o6u0Q4x3V1k6H3i4K6u0r3y4e0b7J5z5e0l9&6z5g2)9J5k6h3S2@1L8h3H3`.
[培训]科锐逆向工程师培训第53期2025年7月8日开班!
最后于 2019-1-28 13:13
被admin编辑
,原因: