退役考研选手在线学pwn_1
主要尝试通过pwn方向将计算机组成原理和数据结构相关的知识串一下,达到快速学习的目的。本人非科班,跨考计算机(悲
本篇的话主要借鉴了探姬师傅的hello-ctf的pwn入门教程0.汇编语言(x86)(个人觉得是很好的入门教程)可能一些解读和学习有很多不当之处,欢迎各位大佬鞭策
汇编语言在开始正式学习二进制安全之前,需要先进行汇编语言的学习,这里我就根据教程的指引来对汇编语言展开相关性学习。
Start!从一个最简单的例子开始:很多同学入门pwn的时候都是从栈溢出来开始的,而想要理解栈溢出的基本原理,通过汇编语言是必要的。这里的话我们通过几个简单的程序来介绍汇编语言和栈,这里我使用的环境是Ubuntu20,程序一般情况下是64位。(如果有特殊情况的话会提前说明)
各位小伙伴自行装好相关的虚拟机和工具,或者不知道什么时候会更一期工具教学捏^^
Hello World我们先给出一个程序源代码
1234567//main.c# include<stdio.h>int main(){ printf("hello world"); re ...
联合注入
union注入流程比较固话的套路依次判型,字段数,回显点,依次爆库名,表名,字段名,数据。
1.判断注入点
我们拿buu上的[极客大挑战 2019]LoveSQL举个例子
通常 Sql 注入漏洞分为 2 种类型:
数字型字符型
我们在登录框中输入1,1。然后登录试试
好,报错了。可以看到是get方式传参。这个时候,后台拼接的sql语句为:select * from <表名> where username='1'&password='1'。语法不存在错误,说明我们的sql语句被执行了。
然后我们在1后面加上'试试
好,报错了,但是和上次不一样。最为经典的单引号判断法: 在参数后面加上单引号,比如:
1http://xxx/abc.php?id=1'
这个时候的sql语句为:select * from <表名> where username=’1’’&password=’1’
很明显是错误的,因为多了一个'但是如果在后面加上一个注释符#的话,sql语句就为:selec ...
sqlmap的简单使用
SqlMap一款自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL的SQL注入漏洞,目前支持的数据库是MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase和SAP MaxDB。采用五种独特的SQL注入技术,分别是:
1、基于布尔的盲注,即可以根据返回页面判断条件真假的注入。2、基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。3、基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。4、联合查询注入,可以使用union的情况下的注入。5、堆查询注入,可以同时执行多条语句的执行时的注入。
探测目标网站是否存在注入sqlmap -u “http://wz/sqli/Less-1/?id=1" #探测该url是否存在漏洞
也是给了好几种注入方法。
查询数据库users
sqlmap -u “http://wz/sqli/Less ...
缓冲区与setvbuf函数
缓冲区
该笔记适用于Ubuntu,在Windows或其他平台上可能会存在不同。
什么是缓冲缓冲区又称为缓存,它是内存空间的一部分,用来缓冲输入或输出的数据。
为什么要引入缓冲区呢?比如我们从磁盘里取信息,我们先把读出的数据放在缓冲区,计算机再直接从缓冲区缓冲区中取数据,等缓冲区的数据取完后再去磁盘中读取,这样就可以减少磁盘的读写次数,再加上计算机对缓冲区的操作远快于对磁盘的操作,故应用缓冲区可大大提高计算机的运行速度。
缓冲区就是一块内存区,它用在输入输出设备和CPU之间,用来缓存数据。它使得低速的输入输出设备和高速的CPU能够协调工作,避免低速的输入输出设备占用CPU,解放出CPU,使其能够高效率工作。
缓冲区的类型缓冲区分为三种类型:全缓冲、行缓冲和不缓冲。
1、全缓冲
在这种情况下,当填满标准I/O缓存后才进行实际的I/O操作。全缓冲的典型代表是对磁盘文件的改写。
2、行输出
在这种情况下,当在输入和输出中遇到换行符时,执行真正的I/O操作。这时,我们输入的字符先存放在缓冲区,等按下回车键换行时才进行实际的I/O操作。典型的代表是键盘输入数据。
3、不缓冲
也就是不进行缓冲,标 ...
pwn入门刷题记录(一)
ctfshow-pwn01直接nc连接后即可获得flag(好吧,我也不知道为什么会如此……)
ctfshow-pwn02
将stack文件下载后拖入pwn机
file命令查看stack是32位的文件
checksec命令执行查看保护机制:栈不可执行(canary)
然后将文件,拖入IDA进行静态分析,按F5进入主函数
setvbuf(貌似是定义输入输出流?好像不用管它)其他函数都很好懂 进入pwnme函数看一下
(1)ESP:栈指针寄存器(extended stack pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的栈顶。(2)EBP:基址指针寄存器(extended base pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的底部。ebp决定他有9个字节,但其实可以输入更多的字节,那就造成了栈溢出,想到ret2text
接下来要计算填充数据
IDA观察可得s有9个字节
接下来我们来找找system的地址
shift+F12看返回地址
找到/bin/sh
双击进入
CTRL+X交叉引用(这里应该会有弹窗,直接选择OK就行 ...
【SQL注入】SQL注入这一篇就够了
SQL注入概念数据库基本概念
相关术语数据数据是指对客观事件进行记录并可以鉴别的符号,是对客观事物的性质、状态以及相互关系等进行记载的物理符号或这些物理符号的组合。它是可识别的、抽象的符号。
具体见百度百科
数据库数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
常见的数据库有:Access、MSSQL、Oracle、 SQLITE、 MySQL等
具体见百度百科
数据库管理系统数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过DBMS访问数据库中的数据,数据库管理员也通过DBMS进行数据库的维护工作。它可以支持多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。大部分DBMS提供数据定义语言DDL(Data Definition Language)和数据操作语言DML(Data Manipulation Languag ...
基于Ubuntu16.04同时部署多道pwn题目
该方法仅适用于ubuntu16.04系统,之后想要适配18 20 22 那些,还要继续学习
一、首先是安装环境 ubuntu16
这个较为简单,如果是租用服务器的话,直接就有配置选择(这里以阿里云为例)
还有就是连接问题 在csdn 搜索xshell登录阿里云服务器即可 (主要是现在要上课没时间了)
如果是在用虚拟机进行搭建,也可以去搜索镜像文件,然后进行下载安装
阿里云镜像开源网站
优点:这个有图文操作界面,在之后的配置时会简单点,
缺点:主机就不能关机了,不能携带,而且占用主机的内存会高,导致主机卡顿或者在一段时间内不能使用
两种方法都要用到的换源 (加快下载速度)
在Linux系统里面,源文件保存在 | /etc/apt/sources.list |
也就是,只要找到国内源,再把这里面的国外源换掉即可
但是为了保证安全,首先要对文件进行保存 使用
sudo cp /etc/apt/sources.list sources_backup.list 建立一个备份文件 sources_backup.list
然后使用命令 > sudo vim /etc/a ...
Linux实用运维脚本
常用命令1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253#查看僵尸进程ps -al | gawk '{print $2,$4}' | grep Z# 匹配电子邮件的地址cat index.html | egrep -o "[A-Za-z0-9._]+@[A-Za-z0-9.]+\.[a-zA-Z]{2,4}" > ans.txt#匹配http URLcat index.html | egrep -o "http://[A-Za-z0-9.]+\.[a-zA-Z]{2,3}" > ans.txt #纯文本形式下载网页lynx -dump www.baidu.com > plain.txt#只打印HTTP头部信息,无须远程下载文件curl --head www.baidu.com#使用POST提交数据curl ...
信息收集工具recon-ng超详细使用教程
前言:最近在找Recon-ng详细一点的教程,可是Google才发现资料都很零散而且不详细,所以我打算具体写一下。
Recon-ng在渗透过程中主要扮演信息收集工作的角色,同时也可以当作渗透工具,不过相关的攻击模块很少,只有自己扩展。
其实Recon-ng最大的优点就是模块化,功能可以自己任意扩展。只要想象力够丰富,这个就可以成为神器,下面为详细教程。
0×01 安装1. 安装recon-ng及依赖文件:12git clone https://bitbucket.org/LaNMaSteR53/recon-ng.git #然后把其中的文件移动到你希望的目录即可,并加入path即可
到其目录下运行recon-ng文件即可
1./recon-ng
第一次启动时你可能会被告知有什么依赖没有安装,根据提示把依赖安装即可
1pip install xlsxwriter #ie
#然后根据提示安装完即可
0×02 模块使用1. 启动部分1recon-ng -h
可以看到上面的具体参数,常用的就‘-w’参数,我们这里新开一个工作区ptest
1Recon-ng -w ptes ...