当前位置:网站首页>[BMZCTF-pwn] 12-csaw-ctf-2016-quals hungman
[BMZCTF-pwn] 12-csaw-ctf-2016-quals hungman
2022-07-06 10:43:00 【Shi Shi Shi Shi Shi Shi Shi Shi Shi Shi Shi Shi Shi Shi Shi Shi】
Guess this question or 2.23 ( I'm not going to do it , None of the above questions has a remote environment , And these seem to have been done )
This is a silly word game. The data structure is like this :
- chunk0 Write the largest name you enter 0xf8( It can be small )
- Program record :4 Byte record ,4 Byte name length ,8 Byte name chunk0 The pointer to
- A random number as long as its name
Enter your name first , Then line it into random numbers , Then wait for characters , If there is the same score , altogether 26 How can it be the same if you lose all , When the maximum record is exceeded, the name can be modified ( There is an overflow )
puts("High score! change name?");
__isoc99_scanf(" %c", &v3);
if ( v3 == 121 )
{
s = malloc(0xF8uLL);
memset(s, 0, 0xF8uLL);
v8 = read(0, s, 0xF8uLL);
*(_DWORD *)(a1 + 4) = v8;
v14 = strchr((const char *)s, 10);
if ( v14 )
*v14 = 0;
memcpy(*(void **)(a1 + 8), s, v8); // Name length is less than F8 when , You can enter F8 Overflow to record
free(s);
It's easy to control the overflow to the pointer
Overflow first, write the pointer as got An address of the table , The following output will output the value , So you get libc Address .
The question is which to write , According to the later function call, you can use snprintf and strchr, After looking at the original one, I used libc_start_main
strchr Just use it here once , Let's start with the leak libc Change it to system, Enter next time /bin/sh
Write libc_start_main Then there is gmon_start and memcpy Write here /bin/sh\0,0,system In fact, it uses system cover memcpy In execution memcpy The inner parameter is exactly /bin/sh( This is a coincidence )
If you use snprintf You can also restore the whole got Watch then turn /bin/sh writes 602100
printf Words , Didn't try to write one_gadget Maybe it's ok
边栏推荐
- Global and Chinese market of thermal mixers 2022-2028: Research Report on technology, participants, trends, market size and share
- Implement sending post request with form data parameter
- What is the difference between TCP and UDP?
- CSDN问答模块标题推荐任务(一) —— 基本框架的搭建
- Google login prompt error code 12501
- 基于Pytorch肺部感染识别案例(采用ResNet网络结构)
- 使用OVF Tool工具从Esxi 6.7中导出虚拟机
- MySQL底层的逻辑架构
- Kubernetes - problems and Solutions
- Mysql28 database design specification
猜你喜欢
CSDN question and answer module Title Recommendation task (I) -- Construction of basic framework
Implement context manager through with
Mysql30 transaction Basics
Bytetrack: multi object tracking by associating every detection box paper reading notes ()
Mysql21 user and permission management
windows无法启动MYSQL服务(位于本地计算机)错误1067进程意外终止
数据库中间件_Mycat总结
Mysql24 index data structure
Win10: how to modify the priority of dual network cards?
IDEA 导入导出 settings 设置文件
随机推荐
Use JUnit unit test & transaction usage
Windchill配置远程Oracle数据库连接
CSDN question and answer module Title Recommendation task (I) -- Construction of basic framework
MySQL30-事务基础知识
Adaptive Bezier curve network for real-time end-to-end text recognition
text 文本数据增强方法 data argumentation
Water and rain condition monitoring reservoir water and rain condition online monitoring
Google login prompt error code 12501
A brief introduction to the microservice technology stack, the introduction and use of Eureka and ribbon
Complete web login process through filter
February 13, 2022-3-middle order traversal of binary tree
[paper reading notes] - cryptographic analysis of short RSA secret exponents
A necessary soft skill for Software Test Engineers: structured thinking
Advantages and disadvantages of evaluation methods
Mysql21 user and permission management
Mysql23 storage engine
在jupyter NoteBook使用Pytorch进行MNIST实现
Unicode decodeerror: 'UTF-8' codec can't decode byte 0xd0 in position 0 successfully resolved
MySQL 20 MySQL data directory
MySQL24-索引的数据结构