前提简要:
虚拟机版本:Ubuntu24.04
pwn环境搭配如下(后面若有其他这个链接没有配置上的工具,都会在相应题目部分给出更新/分享/提示)
Pwn环境搭建
都是基于个人理解,不一定完全正确!!!
题目:
先启动靶机
方法一:
常规测试
直接在虚拟机nc与靶机进行连接
这道题连接后可能会没有显示东西出来,输入ls查看里面有啥文件(ls:列出当前地址/当前目录下的文件与子目录)
这里我们看到有flag文件
输入cat flag即可找到flag,返回题目输入答案并提交即可(cat:查看文件内容)
方法二:
脚本(exp)——题目常规做法
先把文件拖入虚拟机,用checksec命令查看该文件信息
我们用AI进行分析
● Arch: amd64 - 64 - little:表示该文件的架构是 64 位小端序的 AMD64 架构 。
● RELRO: Partial RELRO:RELRO(Relocation Read - Only)是一种针对共享库重定位表的保护机制。Partial RELRO 意味着部分重定位表在程序加载后变为只读,能防范一些通过修改全局偏移表(GOT)进行的攻击,但防护程度不如 Full RELRO 。
● Stack: No canary found:Stack Canary 是一种栈保护机制,向栈中插入随机值(canary 值),函数返回时检查其是否被修改来判断栈是否遭受缓冲区溢出攻击。这里表示该文件未启用 Stack Canary 保护 。
● NX: NX enabled:NX(No - eXecute)即不可执行,使栈、堆等内存区域不可执行,阻止攻击者在这些区域植入并执行恶意代码,这里已启用 。
● PIE: PIE enabled:PIE(Position - Independent Executable)即地址无关可执行文件,让程序每次加载地址随机化,增加攻击者利用固定地址进行攻击的难度,这里已启用 。
● Stripped: No :表示该文件没有被 strip(去除符号表等调试信息),保留了符号表等信息,便于调试和分析。
后我们把文件拖入IDA(64位)进行查看(IDA自行网上搜索下载安装)
拖入后,弹出来的提示一直按确定即可(其他也基本一致,后不赘述)
然后我们就来到这样的位置
先找到左边的main函数,双击进入
先显示出的是汇编代码,我们按F5转换为伪代码C语言,便于我们查看(转换成C语言后,可以按Tab键回到汇编代码)
直接给出system("/bin/sh");
权限就直接给你了,因此我们啥也不用操作,直接与其进行连接即可
先用vim命令创建一个新文件夹(vim后面的文件名自己喜欢起啥就起啥,这里用题目名字来起)
(vim:打开文件,若没有该文件就创建一个新文件并用输入名字作为文件名)
进入文件后,按i/a进入编辑模式,然后输入以下代码
(这里每行开头的"r"可用其他字母代替,比如第二和第三行代码的第一个r,跟在其后面的代码就不能改,但是,得前后保持一致(就是一改都要改),否则会出错)
完毕,按左上角的Esc退出编辑模式,后按:wq,保存并退出文件
(:wq,保存并退出,:q,不保存并退出,若有无法退出的情况,在后面加个!即可。eg:":wq!")
(注:若有错误,可直接:q退出再进入一次即可,不用自己慢慢删)
代码如下
导入pwntools模块:
from pwn import *
和靶机进行连接:
r = remote("ip",端口)
获取靶机交互式终端:
r.interactive()
IP和端口按实际输入
给权限
运行该脚本
然后ls(后面步骤与方法一,一致,不再赘述)