PWNTools的各种函数的使用[官网翻译]
PWNTools的各种函数的使用[官网翻译]ROP函数的使用pwnlib.rop.rop - 面向返回的编程
ROP工具可以用来构建非常简单的堆栈。让我们创建一个假二进制,其中包含一些可能有用的符号。
123>>> context.clear(arch='i386')>>> binary = ELF.from_assembly('add esp, 0x10; ret')>>> binary.symbols = {'read': 0xdeadbeef, 'write': 0xdecafbad, 'exit': 0xfeedface}
创建一个查找二进制符号的ROP对象非常简单
1>>> rop = ROP(binary)
使用ROP对象,可以手动添加堆栈帧。
123>>> rop.raw(0)>>> rop.raw(unpack('abcd' ...
PWNtools模板
PWNtools模板pwntools工具的使用
引入pwntools库123# 虽然不太符合pylint代码规范# 但官方也推荐这样引用from pwn import *
基本的输入输出和交互绑定要处理的程序1234567# 远程# remote(ip/hostname, port)p = remote("127.0.0.1", 8888)# 本地# 注意process中参数一定要有./p = process("./pwn")
设置上下文环境1234567891011121314151617181920# 设置上下文环境主要用于一些需要上下文的漏洞利用# 比如:shellcode的生成# 设置操作系统context.os = "linux"# 设置32位的体系架构 context.arch = "i386"# 设置64位的体系架构context.arch = "amd64"# 打印交互中的输入和输出context.log_level = "debug"# 也可以直 ...
pwncli的用法
pwncli的用法前言pwncli是一款简单、易用的pwn题调试与攻击工具,能提高你在CTF比赛中调试pwn题脚本的速度与效率。
pwncli可以帮助你快速编写pwn题攻击脚本,并实现本地调试和远程攻击的便捷切换。pwncli支持三种使用模式:
命令行使用模式
脚本内使用模式
库导入使用模式
以上三种模式分别简称为:命令行模式、脚本模式和库模式。其中,命令行模式与其他命令行工具(如linux下的ls、tar等命令)使用方式相同,可用于本地交互调试;脚本模式可将自己编写的python攻击脚本包装为命令行工具,然后调用子命令执行所需功能;库模式则只会调用一些便捷的工具函数,方便快速解题。
pwncli设计为主命令-子命令模式(与git类似),目前已拥有的(子)命令有:
1234567891011pwncli config list set debug misc gadget setgdb patchelf qemu remote
其中,pwncli为主命令,config/debug/misc/ ...
make命令教程
Make 命令教程代码变成可执行文件,叫做编译(compile);先编译这个,还是先编译那个(即编译的安排),叫做构建(build)。
Make是最常用的构建工具,诞生于1977年,主要用于C语言的项目。但是实际上 ,任何只要某个文件有变化,就要重新构建的项目,都可以用Make构建。
一、Make的概念Make这个词,英语的意思是”制作”。Make命令直接用了这个意思,就是要做出某个文件。比如,要做出文件a.txt,就可以执行下面的命令。
1$ make a.txt
但是,如果你真的输入这条命令,它并不会起作用。因为Make命令本身并不知道,如何做出a.txt,需要有人告诉它,如何调用其他命令完成这个目标。
比如,假设文件 a.txt 依赖于 b.txt 和 c.txt ,是后面两个文件连接(cat命令)的产物。那么,make 需要知道下面的规则。
12a.txt: b.txt c.txt cat b.txt c.txt > a.txt
也就是说,make a.txt 这条命令的背后,实际上分成两步:第一步,确认 b.txt 和 c.txt 必须已经存在,第二步使用 ...
Linux神器strace的使用方法
Linux神器strace的使用方法前言在Linux系统中,strace命令是一个集诊断、调试、统计与一体的工具,可用来追踪调试程序,能够与其他命令搭配使用。
场景1、在操作系统运维中会出现程序或系统命令运行失败,通过报错和日志无法定位问题根因。
2、如何在没有内核或程序代码的情况下查看系统调用的过程。
说明1、strace是有用的诊断,说明和调试工具,Linux系统管理员可以在不需要源代码的情况下即可跟踪系统的调用。
2、strace显示有关进程的系统调用的信息,这可以帮助确定一个程序使用的哪个函数,当然在系统出现问题时可以使用 strace定位系统调用过程中失败的原因,这是定位系统问题的很好的方法。
strace的常用参数及示例
-c
统计每一系统调用的所执行的时间,次数和出错的次数等。
示例:打印执行uptime时系统系统调用的时间、次数、出错次数和syscall
1# strace -c uptime
-d
显示有关标准错误的strace本身的一些调试输出。
-f
跟踪子进程,这些子进程是由于fork(2)系统调用而由当前跟踪的进程创建的。
-i在系统调用时打印指令指 ...
linux提权
LINUX提权前言上一次打AWD被锁权限了,估计是被打烂了然后对方提的权,这启发了我,我也来提提权限
以下内容都是来自下面的文章https://mp.weixin.qq.com/s?__biz=MzAwMzYxNzc1OA==&mid=2247484463&idx=1&sn=f1fd9b1db84657ecda05b186a8f7785f&chksm=9b39229eac4eab884bb8e8130423d895afc7b1ff336d6146a425b7087aa0faf9e0c806e09706&mpshare=1&scene=23&srcid=0410kOxtw1DLpOurcUy9co8Q&sharer_sharetime=1681100889288&sharer_shareid=5d46a70d7c2e5fe23fd7f12f781a2ad4#rd
suid提权1https://github.com/rebootuser/LinEnum #检测环境
12345ls -al xxx #查看权限r ...
Linux中标准输出和标准错误的重导向
Linux中标准输出和标准错误的重导向nohup如果一个命令需要长时间在服务器上运行,那么很多时候会用到nohup命令,这时即便远程登录ssh中断了与服务器的联系,那么在服务器上运行的命令也不会因此而被迫停止。
通常情况下,nohup与&连用,**&的意思是将该命令放在后台执行**。如下:
1nohup example.sh &
将exmaple.sh通过&放在服务器后台运行,nohup确保了即便当前ssh远程连接中断,example.sh仍然能够不受影响,继续在远程服务器中运行。
最近有两个配对测序文件,需要比对到参考基因组上,通过bwa可以完成,同时由于该文件比较大,运行时间长,为了避免网络连接不稳定造成ssh中断,使用nohup
1nohup bwa mem ref.fa read1.fq.gz read2.fq.gz > read12.sam &
将两个测序文件合并并生成sam文件。写好命令,一个回车键按下去,“啪”一声,那就一个爽。然后不用管它,十余个小时之后,果然生成了一个很大的文件read12.sam文件。但是,当用该sa ...
Linux下查看二进制文件
Linux下查看二进制文件我们在日常开发中有时候会遇到查看二进制文件的场景,直接打开的话往往会让我们直呼外星人。此时我们就需要各种二进制查看工具了,帮助我们更好的查看二进制文件。
hexdump 查看二进制文件hexdump 是 linux 下一个用于查看二进制文件的命令,它可以将二进制文件转换成十六进制的格式并打印出来,结果如下:
此外 hexdump 提供了各种选项实现数据格式的转换:
hexdump -C Main7.class显示文件的 ASCII格式
-C 命令可以显示对应字节的ASCII格式,并追加到最后面。
1234567891011121314root@74f21669baa4:/ctf/work/competition/2022xiangyuncup/unexp # hexdump -C dump 00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |.ELF............| ...
Linux sed命令详解
Linux sed命令详解前言linux sed 命令是利用脚本来处理文本文件。
sed命令可以依照脚本的指令来处理编辑文本文件。
Sed主要用来自动编辑一个或者多个文件,简化对文件的反复操作,编写转换程序等等。
语法1sed [-hnV][-e<script>][-f<script文件>][文本文件]
参数说明:
-e或--expression= 以选项中指定的script来处理输入的文本文件。
-f或--file= 以选项中指定的script文件来处理输入的文本文件。
-h或--help 显示帮助。
-n或--quiet或--silent 仅显示script处理后的结果。
-V或--version 显示版本信息。
动作说明:
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何东东;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :打印,亦即将某个选择的 ...
GDB的常见用法
GDB的常见用法1. 编译文件1gcc -g test.c -o test
编译时默认不会把debug选项加进去,需要在编译时手动添加-g来加入debug。
运行GDB,用file来指定文件。
2.常见用法
b(breakpoint)
在函数下断点。
b 行数
在文件的第几行下断点。
r (run)
run程序,在即将执行断点之前停下。
n(next)
不进入函数的单步执行。
回车
执行上一步的命令。
s(step)
进函数的单步。
k(kill)
kill当前进程。
info b
查看当前断点。
d 符号
除去符号处断点。
c
直接执行到下一个断点。
bt
查看函数调用栈。
watch point
监视某一个变量,运行到变量变化的地方停下。
info r
查看所有寄存器的值。
info variables
打印所有符号。
p(print) point
查看变量值。
/x
以十六进制输出。
layout src
以图形化模式的c语言gdb。以ctrl+x,a退出。
layout split
显示源代码和汇编指令窗口
la ...