开启 gdb 调试
gcc -g
gdb 调试,给 scanf 传入不可见字符
r
是 run
例如,我们想给程序传入 40 个 A: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
和 0xdeadbeaf (4 个字节)
- 采用 Python2:
注 1:Python 采用*
来重复字符串,例如'A' * 40
表示 40 个 A 。'AB' * 40
表示 40 个 AB
注 2: 0xdeadbeaf 的低位在前,高位在后。
(gdb) r <<< `python -c "print 'A' * 40 + b'\xef\xbe\xad\xde'"`
- 采用 Python3:
(gdb) r <<< `python3 -c "import sys;sys.stdout.buffer.write(b'A' * 40 + b'\xef\xbe\xad\xde')"`
- 采用 Perl
注:Perl 采用x
表示重复字符串多次,例如"A" x 40
表示 40 个 A。
(gdb) r <<< `perl -e 'print "A" x 40, "\xef\xbe\xad\xde"`
相关博文: