pwnable.kr第二遍---input

>>>input

1.命令
whoami---input2
groups---input2
ls -l:发现其他用户对input2可执行文件没有执行权限;只对文件owner和input2组用户有该权限;然后发现input2用户也位于input2-group中


2.字符与数字之间的转换
各进制之间的转换
chr ord bin oct int hex


字符和ascii:chr ord
转成十进制:int('0xf',16) int('0101010111',2) int('17',8)
转成十六进制:hex(int_value) hex(int('010101',2)) hex(int('12',8))
转成二进制:bin(int_value) bin(int('ff',16))
转成八进制:oct(0xf) oct(11) oct(0b110)




3.这里不能直接从标准输入中输入??原因?


4.思路
a.argv[65]='\x00' argv[66]='\x20\x0a\x0d'


b.从标准输入流读取4个字节到buf "\x00\x0a\x00\xff"
从标准错误流读取四个字节到buf "\x00\x0a\x02\xff"


c.令环境变量env: "\xde\xad\xbe\xef"="\xca\xfe\xba\xbe"


d.打开一个文件名为"\x0a"的文件
读取4个字节"\x00\x00\x00\x00"


e.socket连接 server端
地址为any 端口号argv[67]
绑定监听 连接
server recv四个字节"\xde\xad\xbe\xef"




5.fread函数中第三个参数的含义
fread(buf,4,1,fp)!=1
fread(void *ptr, size_t size, size_t nmemb, FILE *stream)
第一个是用来存放数据的
第二个每一个element的长度
第三个是element的个数


6.argc agrv[] 
cp.exe doc1.txt doc2.txt
这行中有三个字符串分别为 cp.exe doc1.txt doc2.txt
则argc为3,即argc是命令行中参数的个数。
char *argv[]为一个指向字符串的数组。
argv[0]="cp.exe"
argv[1]="doc1.txt"
argv[2]="doc2.txt"


7.execve("",argv,NULL)
在父进程中fork一个子进程,在子进程中调用exec函数启动新的程序。
一共有六个调用方法,execve为内核级系统调用
#include<unistd.h>
int execve(const char *filename, char *const argv[ ], char *const envp[ ]);
filename:文件路径
argv[]:利用数组指针传递参数给可执行文件,需要以NULL结束
envp[]:传递给执行文件的新环境变量数组,需要以NULL结束?


8.有的题目是远程域服务器建立连接
remote_connect/socket/remote等
此题是在server上运行/inpu2/input2
思考其中区别


9.管道通信
0读1写
dup2重定向
close()
子0父1错误-1
这里由于execve()还需要与其他部分进行通信
所以需要在父进程中执行




11.由于是在pwnable.kr服务器上执行
所以addr为127.0.0.1
端口号与argv['C']保持一致就可以了


12.是C代码,不是python


13.子进程写完之后,写通道是否需要关闭


14.char *argv[101]
char *envp[2]
不能用"A"*99


15.envp形式"a=b"而不是"a"="b"


16.软连接??
不做连接的话,没有读取flag的权限
ln -s
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值