0x03-逆向-BoF基础的基础

目录 今日目标 深入 BoF BoF 的前世今生 BoF 的种类 BoF 的应对策略 为什么程序会有栈? 为什么 EBP 和 EIP 会在 BoF 中被覆盖? 栈帧(Stack Frame)以及方法调用 NOP 总结 参考链接 今日目标 今天细看了一下 narnia2(不知道这是什么的小伙伴看我前篇),是个栈溢出的练习。所以,Buffer Overflow,BoF,是今天的主题。这篇文章的标题是基础的基础,我们会把基于栈的溢出深入再深入地探讨一下。网上由很多关于栈溢出地基础例子和文章,想必大家也看过很多了。 带着下面几个问题,我们开始这篇 BoF 基础的基础。无论大家能不能回答这几个问题,看下去,总有一些新的收获。 BoF 的前世今生大家了解多少?BoF 有多少种类型? 都说栈溢出,首先,为什么你的程序会有栈? 漏洞叫做栈溢出,EBP,EIP,或者 BP,IP 是寄存器,一个在内存,一个在 CPU,为什么那些文章总说 EBP 和 EIP 会被覆盖,难道栈溢出还能溢出到 CPU ? 那些文章都提到 nop (\x90),nop 到底是什么?为什么要用 nop? 深入 BoF 我们先了解一下 BoF 的一小段历史,BoF 的种类,以及计算机科学家在与…

0x01-XSS基础实战-XSSGame 6集全

目录 这是什么? 今日目标 Level 1 Level 2 innerHTML innerHTML的安全问题 Event Level 3 location.hash Level 4 Level 5 Level 6 Protocol-relative URLs DataURLs 总结 参考链接 这是什么? XSS 系列开篇。WebApp 渗透测试是一个大话题,之前的 SQL 系列之后还会继续深入。本篇的 XSS 系列也一样,在后续的工作学习中,不断记录。 我不再讲 XSS 的基本原理,网上有太多的教程。 最权威的学习资料,列举在下面: OWASP XSS Attacks Rapid7 Cross Site Scripting Portswigger Cross Site Scripting OWASP,Rapid7,Protswigger(Burp Suite)三大家。 另外,W3School 是必备的学习资料。 如果对于 XSS 的基本概念不太熟悉,建议先阅读这三篇文章,再继续下面的内容。 今日目标…

0x02-逆向-执行环境变量

目录 今日目标 可以学到什么? 什么是 Shellcode? Shellcode 是怎么编写出来的? Shellcode 测试 “\x” 转义序列 “\x” 的作用 “\x” 转义的 16 进制作为字符串的处理 Bash 设置环境变量 “ $() 如何利用这个漏洞? 参考链接 今日目标 继续 narnia 系列。今天的目标是 narnia1。 首先,这个挑战本身很简单,但是可以细想一下背后的原理,还是有一些地方值得挖掘和理解。 这是 narnia1 的源码。 #include <stdio.h> int main(){ int (*ret)(); if(getenv("EGG")==NULL){ printf("Give me something to execute at the env-variable EGG\n"); exit(1); } printf("Trying to execute EGG!\n"); ret…

0x05-OWASPJuiceShop-Injection-EphemeralAccountant

目录 今日目标 可以学到什么? 好用的 SQL 在线模拟器 SQLite ALIAS 表达式 表名映射 列名映射 SQLite 如何构造临时数据? MySQL 如何构造临时数据? PostgreSQL 如何构造临时数据? 如何利用这个漏洞? 参考链接 今日目标 Ephemeral Accountant. 要求是,登陆一个不存在的用户账户,这个账户名称是 acc0unt4nt@juice-sh.op,职务是 accouting。通过注册的方式无法完成挑战,只能通过 SQL 注入的方式,在运行时登陆到这个用户的账户,也就是说,这个用户的数据并不在数据库中,是临时生成的。 先看一下这个挑战可以让我们学到哪些东西。 可以学到什么? 首先,做 SQL 注入到高级的时候会十分的复杂,单纯依靠头脑和纸笔,无法完成这样的任务。自己搭建一个 SQL 后台又太麻烦。因此,下面就会给大家推荐两个很好的在线 SQL 模拟器。支持 SQLite,MariaDB,PostgreSQL 等,测试 SQLite 和 MySQL 都没有问题,同时可以自定义数据表,十分灵活,为测试提供了很大的便利。 另外,最最大的收获将会是学习到如何构造临时(实际不存在的)数据。 好用的 SQL 在线模拟器 推荐两个,一个是 https://paiza.io/en/languages/mysql,后端是 MySQL。 另一个是 https://sqliteonline.com/,有更多的数据库支持。 因为 JuiceShop 后台使用的 SQLite,在讲完…

0x11-HackTheBox-Beep

目录 历史命令 目标 能学到什么? 什么是 LFI(Local File Inclusion)? LFI 的原理 如何利用 LFI 漏洞? ShellShock Elastix FreePBX 远程代码执行漏洞 如何利用目标机器的漏洞? References 历史命令 masscan nmap searchsploit nc Burp Suite python sudo -l sudo nmap –interactive -> !sh 目标 目标 Beep 在 10.10.10.7。 能学到什么? 什么是 LFI(Local File Inclusion)? LFI (Local File Inclusion)是代码中的一种漏洞表现形式。不是语言本身的问题,而是程序员在开发的过程中,对于语言的特性理解不够,给攻击者留下了可趁之机。 可以说是“臭名昭著”的两个 PHP 方法,include 和 require,使用不当的情况下,就会造成 LFI 的存在。…

0x04-OWASPJuiceShop-Injection-XmasSpecial

目录 今日目标 可以学到什么? SQL 盲注 什么是 SQL 盲注? 如何询问数据库? 基于返回内容 基于返回时间 如何利用这个漏洞? 参考链接 今日目标 Christmas Special. 正式进入 4 星俱乐部 😀 可以学到什么? SQL 盲注 本篇的主题,是 SQL 盲注。先了解一下 SQL 盲注是什么,再学习如何进行模糊测试,最后获取到想要的数据。 什么是 SQL 盲注? 这个系列的前几篇,如果大家还记得的话,在我们构造 SQL 表达式去试探服务端的时候,服务端会直接将 SQL 数据库的错误返回给我们。我们可以清楚地看到后端使用的是什么数据库,我们构造的 SQL 语句哪里有问题,是语法有误?还是 UNION 的时候列数不对。 SQL 盲注,相反的就是服务端的错误处理是统一的页面,诸如最简单的,只给我们返回一个 500 Internal Server Error,无从知道后端数据库的任何信息。这样的情况下,做 SQL 注入仍然是可行的,只是困难一些。我们必须要构造一些 true or false 的问题去问数据库,根据数据库的返回结果,进一步判断下一步操作。 只要目标是可以被注入的,那么只要加以一定的耐心,仔细观察返回结果,以及一点点的运气,就可以完成盲注。 如何询问数据库? 基于返回内容…

0x01-ReverseEngineering-narnia0

目录 这是什么? 可以学到什么? 数据类型长度 管道 格式化输出 Endianess Setuid GDB基础 内存 如何利用这个漏洞? 参考链接 这是什么? 进入逆向的世界。以一个 war game 作为开场,后续不断深入。 这个 war game 是 narnia。链接此处。 Level 0 -> Level 9,难度不断增加。 踏出第一步,Level 0. 根据官网的提示,SSH 连接到服务器。 所有源文件都在 /narnia 目录,并有编译好的二进制。直接运行即可。所需要解锁的密码在 /etc/narnia_pass/ 文件夹。比如这是 Level 0,用户是 narnia0,那么下一级别 narnia1 用户的密码就在 /etc/narnia_pass/narnia1 里。看完本篇,大家就知道整体流程了。 文章越写越长,一段小小的代码,原本不知道会有这么多东西可以挖掘。但是只有挖的够深,才能学到更多。 可以学到什么? 开篇比较简单,但是也有值得学习的地方。几个点拿出来一起学习讨论。 数据类型长度 再后面的小节中会看到源码中对于变量 val 的定义: long val=0x41414141 了解一下各个 data type…

0x03-OWASPJuiceShop-Injection-DatabaseSchema

目录 小调整 今日目标 可以学到什么? 什么是 UNION ? 如何使用带有空格的请求头? 如何使用 UNION 模糊测试数据表有多少列? SQLite 及 SQL 的 schema 如何利用这个漏洞? SQLite 验证 参考链接 小调整 Heroku 的部署方式有一些问题。第一,需要科学上网,那么需要 Burp Suite 抓包的时候就比较麻烦。第二,XXE的练习在 Heroku 上做不了。 那么就部署到本机吧。kali 是在虚拟机上,有必要的时候只需要回到上一个快照就可以了。 kali 是自带 10.20.1 版本 node 的,不需要另外安装。 但是在按照 From Source安装的时候碰到一些问题,启动的时候总是抛出这样的错误 最后是通过 Packaged Distributions 安装。这是下载编译好的包的地址。 注意,下载对应的 node 版本的包文件。 解压之后按照流程 npm start 即可。浏览器访问 localhost:3000。 今日目标 Database Schema. 可以学到什么?…

0x02-OWASPJuiceShop-Injection-LoginBender

目录 今日目标 这是什么漏洞? 这个漏洞是怎么造成的? 怎么判断漏洞是否存在? 如何利用这个漏洞? 如何应对? 过滤 校验 编码 参考链接 今日目标 这是什么漏洞? 我的目标是要登录到 Bender 这个用户的账户。 Bender 是一个普通用户,要完成这个挑战,必须要猜测该用户的 email 账号,并且这是一个注入的漏洞,而不要去尝试获取该用户的密码 hash,或者尝试爆破该用户的密码,这是一个注入的练习。 跟第一篇文章一样,这还是一个绕过登陆验证的注入漏洞。 这个漏洞是怎么造成的? 开发者在开发登陆流程的时候 没有使用 ORM 进行数据库请求,而是直接拼接了请求语句; 没有对用户输入做过滤,校验,和编码; 关于第一点,可以参考这一系列文章的第一篇。 关于第二点,在后面的如何应对一节中做说明。 怎么判断漏洞是否存在? 记得在第一篇文章中,说明了判断此类漏洞的方法。通过在输入框中输入单引号,或者双引号,然后查看服务端返回结果,如果返回结果有异样,那么可以判断注入漏洞存在。 如何利用这个漏洞? 在第一篇文章中,我们可以绕过登陆验证,注入之后构造的数据库请求如: SELECT user_name from Users where email = '' or 1 = 1 — AND password = … 由此,我们可以登陆任何用户的账户。 上一篇文章在成功绕过登陆验证之后,admin 账户的邮箱是这样的 那么…

0x01-OWASPJuiceShop-GettingStarted

目录 这是什么? 部署 Juice Shop 帮助文档 第一个挑战 这里有什么漏洞? 漏洞是怎么造成的? 怎么这样的注入漏洞是否存在? 利用漏洞 预防措施 References 这是什么? OWASP Juice Shop 是一个练习网页应用测试的工具。 这是 Github 链接。 本篇是 OWASP Top 10 系列的起始篇。 对于不清楚 OWASP 是什么的同学,看这里。 简单说 OWASP 是一套网页应用的测试列表,你可以按照它的指示一项一项地对网页应用进行测试, 它会告诉你该漏洞的原理,测试方式以及应对策略,十分详细,是行业标杆。 部署 Juice Shop 可以在 Juice Shop 的 Github 页面看到,Juice Shop 可以被一键部署到 Heroku(是免费的),你只需要注册一个账号即可。同时也可以下载到本地,部署到虚拟机。 Heroku很方便,注册个账号,点一下 Github 上的部署,就搞定了。 部署完成之后,在个人帐号的 Settings 一栏,往下拉可以看到自己的应用的 Heroku 域名。 直接访问即可。 其他部署方式见文档。…