ctfshow-做题笔记-格式化字符串
ctfshow-做题笔记-格式化字符串pwn91日常检查 12345678bbq@ubuntu:~/桌面/pwnCTF/pwn91$ checksec pwn[*] '/home/bbq/桌面/pwnCTF/pwn91/pwn' Arch: i386-32-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE (0x8048000)bbq@ubuntu:~/桌面/pwnCTF/pwn91$ 还是很简单的 就直接赋值就行应该 啊啊啊啊啊啊啊啊啊啊啊啊啊 我是真废啊 123456789101112int __cdecl main(int argc, const char **argv, const char **envp){ init(&argc); logo(); ctfshow(); if ( daniu == 6 ) { ...
格式化字符串
格式化字符串漏洞格式化字符串漏洞函数: 以printf函数为例,它的第一个参数就是格式化字符串:“Color %s,Number %d,Float %4.2f” 然后printf函数会根据这个格式化字符串来解析对应的其它参数。 漏洞原理利用:程序崩溃:最简单的的攻击方法,只需要输入一串%s就可以 %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s 对于每一个 %s,printf() 都会从栈上取一个数字,把该数字视为地址,然后打印出该地址指向的内存内容,由于不可能获取的每一个数字都是地址,所以数字对应的内容可能不存在,或者这个地址是被保护的,那么便会使程序崩溃 在 Linux 中,存取无效的指针会引起进程收到 SIGSEGV 信号,从而使程序非正常终止并产生核心转储 基本的格式化字符串漏洞的格式12//比如正确的写法是:printf("%s",...