自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

怪味巧克力的博客

安全技术爱好者

  • 博客(53)
  • 资源 (1)
  • 收藏
  • 关注

原创 ciscn_2019_c_1

0x01检查文件,64位检查开启的保护情况开启了NX保护0x02IDA静态分析在主函数这里并没有常见的gets栈溢出,尝试再这里面的子函数找找,发现了encrypt函数,进去查看发现这个变量x的自增是由空间大小限制的,猜测这里会出现栈溢出漏洞,写出exp尝试溢出0x03exp:from pwn import *from LibcSearcher import *content = 0context(os='linux', arch='amd64', log_level='

2020-07-18 20:16:17 648

原创 [CISCN2019 华东南赛区]Double Secret

0x01进入页面如下提示我们寻找secret,再加上题目的提示,猜测这里有secret页面,我们尝试访问,结果如下根据它这个话的意思,是让我们传参,然后它会给你加密,我们试一下发现输入的1变成了d,我们尝试增加输入参数的长度,然后就出现了下图的结果报错了,直接源码泄露,然后我们看一下标记处0x02代码如下:File "/app/app.py", line 35, in secret if(secret==None): return 'Tell me you

2020-07-18 14:54:58 1976

原创 pwn1_sctf_2016

0x01拿到文件先检查一下32位程序开启了NX保护IDA静态分析一下分配的s空间为60,限制输入32,乍一看是不会造成栈溢出的,但是下面有一个字符替换,就是输入I会被替换成you。I是一个字符,you是三个字符,那么我们可以输入20个I(满足32的限制),那么这20个I,最终被替换成了60个字符,从而造成溢出0x02exp:from pwn import *filename = 'pwn1_sctf_2016'e = ELF(filename)get_flag = e.symb

2020-07-17 19:41:01 2436 3

原创 [NPUCTF2020]ezlogin

0x01首页如上,是一个登录的页面,而且这个页面是有时间限制的,超过一定时间没登录就需要刷新页面重新登录。我们抓包看看登录的时候一个session只能存在一定的时间,通过抓包的内容来看,这里要用到Xpath的知识点关于Xpath参考https://www.cnblogs.com/backlion/p/8554749.htmlxpath注入主要有两种,一种是普通的注入,另外一种是布尔注入。普通注入对应union注入,使用|来完成和union类似的功能,布尔注入则是布尔盲注。这里使用大佬的脚本爆破

2020-07-16 21:17:13 1300

原创 [BJDCTF 2nd]假猪套天下第一

0x01拿到题目进去,首页如下我们如果以admin账号登录,会弹框提示我们不是admin然后我们随意登录看看什么情况,结果可以登录进去,如下图[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FqDvqpgT-1594868368495)(https://img2020.cnblogs.com/blog/2010397/202007/2010397-20200716105521025-563704932.png)]查看源码没有看到什么有价值的信息,我们重新登录抓包看

2020-07-16 10:59:49 541

原创 rip-buuoj

#前言今天开始学pwn,以练促学,学以致用,加油加油0x01拿到文件,首先检查一下是多少位的,如图可以看到是64位的文件检查是否有保护,如图看到没有任何保护0x02ida分析一下函数的逻辑进入到反汇编如下,代码逻辑就是让我们输入,然后结束,我们主要看一下gets,因为gets有栈溢出漏洞我们发现输入的地址空间大小为15,然后就执行函数返回地址,那么我们直接在15后将系统命令函数地址填入即可,或者直接写函数的名称,然后取函数地址也可以0x03expfrom pwn impo

2020-07-15 20:47:54 1080 3

原创 [De1CTF 2019]SSRF Me

0x01题目给出了源码,我们看一下源码#! /usr/bin/env python#encoding=utf-8from flask import Flaskfrom flask import requestimport socketimport hashlibimport urllibimport sysimport osimport jsonreload(sys)sys.setdefaultencoding('latin1')app = Flask(__name__)s

2020-07-14 17:59:34 229

原创 [极客大挑战 2019]BuyFlag

0x01进入页面如下结合题目buyflag的提示,我们点击payflag看看查看一下源码发现端倪0x02if (isset($_POST['password'])) { $password = $_POST['password']; if (is_numeric($password)) { echo "password can't be number</br>"; }elseif ($password == 404) { echo "Password Right!

2020-07-14 10:09:55 444

原创 [SUCTF 2018]GetShell

0x01进入题目有一个上传页面那看来就是要上传shell,然后来查看flag了。看一下页面给的代码if($contents=file_get_contents($_FILES["file"]["tmp_name"])){ $data=substr($contents,5); foreach ($black_char as $b) { if (stripos($data, $b) !== false){ die("illegal char")

2020-07-12 17:45:22 1604

原创 [GXYCTF2019]Ping Ping Ping

0x01拿到题目进入如下:需要加上变量到这里其实就已经很明确考点是什么了,就是考察的命令执行中的绕过先试试命令发现ls命令可以执行,输出结果为flag.php和index.php0x02发现了两个文件,试着读取一下发现空格被过滤,绕过空格的方法(仅使用于linux系统)$IFS${IFS}$IFS$数字 < <> {cat,flag.php} 经过尝试,发现第三个可以绕过空格,结果如下,这是我们查看index.php的结果|\'|\"|\\|

2020-07-12 10:28:50 558

原创 [极客大挑战 2019]Secret File

0x01进入页面如下看不到什么东西,所以查看源码源码中发现有一个链接到另一个页面,原页面为黑色看不到链接,所以我们转到链接给的页面有一个按钮,点击看看发现点击之后直接跳到了end.php页面,查看源码也没有什么有用的东西,应该是时间过短然后就跳转,所以我们用抓包截断一下,发现结果如下验证了我的想法,存在这个页面,直接进去看看0x02<html> <title>secret</title> <meta charset="UT

2020-07-11 15:27:17 623

原创 [HCTF 2018]admin

前言:最近在BUUCTF刷题,参照师傅们wp后复现一下0x01拿到题目后进去如下界面发现有登录和注册界面,相比是要登录后才能查看想要的信息。查看页面源代码,看看有没有上面提示,界面如下提示你不是admin,到这里基本上主要的方向已经有了,就是要以admin用户登录进去,才能查看到flag0x02一,弱密码首先尝试了一下弱密码爆破,结果成功进入,密码是123,然后成功看到flag二,Unicode欺骗假设我们不知道admin密码,或者是比较复杂的密码,然后我们注册一个用户,登录进去

2020-07-11 12:14:49 619

原创 0ctf_2016 _Web_unserialize

0x01拿到题目第一件事是进行目录扫描,看看都有哪些目录,结果如下:不少,首先有源码,我们直接下载下来,因为有源码去分析比什么都没有更容易分析出漏洞所在。通过这个知道,它一共有这么几个页面,首页登录页面,注册页面,update更改信息页面,这几个页面是我们能够直接接触到的,那想必flag应该在另外几个页面中,稍后我们分析。先来看看网站页面都是什么样子。登录页面:注册页面:更改信息页面需要我们先登录,那我们就先随便注册一个,然后进去看看到这里,基本上几个页面要进行的基本操作我们知道

2020-07-09 12:14:59 3227 2

原创 网鼎杯_2018 _Web_fakebook

0x01进入页面如下,我们发现有两个按钮,login和join一般第一步我们应该是先对网站进行扫描,看看有没有扫描目录和文件,但是我在扫描的时候发现返回的状态码全是200,显然是做了手脚,但是这里我们还可以通过返回的页面长度来判断,因为不存在的页面都重定向到一个页面,发现存在robots.txt和flag.php,查看flag.php什么也看不到,那么查看robots.txt,结果如下提示我们有备份文件,我们下载下来,代码如下:<?phpclass UserInfo{ pu

2020-07-09 00:26:06 275

原创 CISCN 2019-ikun

0x01进去网址,页面如下:刚开始有个登陆和注册的按钮,上图是我已经注册后登陆成功后的页面,我们发现在图的左下角给了一个关键的提示,购买LV6,通过寻找我们发现页面数很多,大概500页,一个一个找不上办法,所以我们用脚本去寻找LV6所在页面,脚本如下:import requestsr = requests.session()url = "http://220.249.52.133:52610/shop?page="for i in range(0,1000): re = r.get(

2020-06-15 14:46:13 803 1

原创 流浪者-CTF

0x01拿到题目后是一个exe程序,首先看一下运行结果,那么一共有两种结果,一种是如果密码为空,则提示重新输入,如果输入错误,则提示加油,如下图:输入错误后程序会退出0x02放进IDA进行静态分析,看下主要代码是如何运行进入以后首先字符串查找 shift+F12,结果如图:那么我们看到了pass!,而且还有两串可疑的字符串,所以我们去看看BOOL sub_401770(){ HANDLE hProcess; // ST5C_4 MessageBoxA(0, "pass!",

2020-06-09 00:09:25 537

原创 wtf.sh-150

前言:最近在刷ctf题,在理解了大佬们的wp后自己做完之后,从头到尾把思路过了一遍,做次记录为以后复习和打比赛做准备,同时也希望能帮到别人。0x01进入网址,发现是一个论坛,有注册,登录和发表的功能,初步猜测应该是可以利用账号进行获取flag,我们先顺着页面向下找一找,看有没有什么提示信息,没有什么发现,然后路径扫描试试,发现有一个post.wtf路径存在路径穿越漏洞,能够获取网站的源码,所以我们试着用这个进行网站源码的获取进入页面向下找找看有没有什么有没有有用的东西,一堆源码,太花时间,所以我

2020-06-06 13:14:22 356 1

原创 bug-xctf

0x01进入页面,发现有登陆界面,有注册,有找回密码。我们先试试,所以这里我们先注册一个用户注册成功,那么我们登陆看看有没有什么值得关注的地方看我箭头标的地方,第一个提示我们的用户是123,然后还有其他的几个功能,这几个其他的功能都可以进,唯独第二个Manage无法进去,提示信息如下所以,我们不是admin用户,那么如何登陆admin用户呢?首先注册肯定不行,因为账号已存在,那么我们怎么搞到admin的密码呢?还有一个功能我们忽略了,那就是找回密码,我们进去看看到这里,思路就是我们进

2020-06-04 19:02:48 393

原创 EasyRE

0x01首先拿到一个exe执行程序,无壳,我们先运行一下,发现只要输入结果后就会退出,那看来是我们输入的不正确就会退出由于是exe程序,所以我首先进行的是debug动态调试,因为有输入就会有与正确密码的对比,所以我先看看它的正确密码有没有进行加密算法加密0x02动态调试:一、搜索字符串我们看到有right,有pause,所以这个上面肯定有对比,然后我们可以在这个上面函数入口处下断,经过调试发现,这里的密码是被算法加密过的,所以无法直接看到。二、跟进函数进去主函数,是上图的这段代码,那么

2020-06-03 23:55:54 673

原创 maze

0x01拿到题目,放到IDA中静态分析,发现main函数中就是关键代码,如图:__int64 __fastcall main(__int64 a1, char **a2, char **a3){ const char *v3; // rsi signed __int64 v4; // rbx signed int v5; // eax char v6; // bp char v7; // al const char *v8; // rdi __int64 v10; //

2020-06-02 08:43:26 312

原创 no-strings-attached

0x01拿到程序,直接IDA放进去看一下,结果如图:我们发现main中有四个函数,我们一个一个进去,经过分析之后,发现authenticate();是关键函数,所以,接下来我们进去看看。void authenticate(){ wchar_t ws[8192]; // [esp+1Ch] [ebp-800Ch] wchar_t *s2; // [esp+801Ch] [ebp-Ch] s2 = (wchar_t *)decrypt(&s, &dword_8048A9

2020-06-01 20:47:21 1340

原创 Cat

0x01首先这道题打开之后是一个页面,能过提交参数,题目提示我们这里输入域名这里我们尝试输入域名,比如baidu.com等,然后页面没有任何反应,那接下来我们试着输入百度的ip试试,通过ping www.baidu.com找到百度的ip结果如下:我们发现这里输入的应该是IP地址,那我们再试试127.0.0.1到这一步,我们可能都想到这里能不能执行命令呢?我们试试127.0.0.1 | ls可见这里无法执行命令0x02在?URL=传参这里,传入的是url编码之后的值,这里我们让它进行

2020-06-01 14:21:49 203

原创 Hello, CTF

0x01拿到题目后查壳,发现什么也没有,32位vc++0x02放到IDA里,F5反编译,得到下图很容易我们就看到了比较的函数,以及出现wrong和success的字符串,所以接下来就是仔细分析一下这段代码char v4; // al int result; // eax int v6; // [esp+0h] [ebp-70h] int v7; // [esp+0h] [ebp-70h] char v8; // [esp+12h] [ebp-5Eh] char v9[20]

2020-05-31 09:12:35 891

原创 shrine

介绍模板其实就是对于传入的数据进行解析,然后生成html文件,然后在返回给浏览器进行展示,而这其中就用到了模板渲染和模板引擎模板注入的根本原因就在于客户端向服务器传输的参数被解析,由于模板中有较多函数,所以,很多情况下模板注入可以导致远程代码执行,模板注入大概分为这几种:客户端模板注入、服务端模板注入、模板引擎注入。在本题中就是flask/jinja模板注入0x01拿到题目后发现给出了一段代码import flaskimport osapp = flask.Flask(__name__)

2020-05-28 17:20:51 573

原创 supersqli

0x01拿到题目后,发现是单引号报错字符型注入order by 2的时候页面正常回显,order by 3的时候页面出错,所以我们知道只有两个字段。接下来union联合查询,发现select被过滤了所以我们需要绕过select的过滤,下面有几种方法0x02堆叠查询+预编译我们发现这里可以执行多sql语句,所以我们可以采用堆叠查询,那我们查询表名,结果如下:查询表名中的列名,结果如下:所以我们找到flag在第一个表中,那么接下来我们要查看flag中的内容,但是这里select被过滤了

2020-05-27 21:28:34 4590 1

原创 getit

本逆向题还是源码分析,通过源码追出flag,下面步入正题0x01源码分析int __cdecl main(int argc, const char **argv, const char **envp){ char v3; // al __int64 v5; // [rsp+0h] [rbp-40h] int i; // [rsp+4h] [rbp-3Ch] FILE *stream; // [rsp+8h] [rbp-38h] char filename[8]; // [rsp+1

2020-05-26 19:48:26 303

原创 python_template_injection

0x01漏洞介绍Python Web 模板引擎1.Jinja22.Tornado.template3.Django.templateornado 中模板渲染函数在有两个:1.render2.render_stringFlask 中模板渲染函数也是有两个1.render_template2.render_template_stringrender_template_string函数在渲染模板的时候使用了%s来动态的替换字符串,在渲染的时候会把**{{}}**包裹的内容当做变量解析替换。

2020-05-26 09:44:17 2865

原创 web_warmup

0x01进去以后一个笑脸,哈哈哈接下来我们查看源码发现注释部分提示我们有个source.php,我们查看一下,结果如图发现源代码<?php highlight_file(__FILE__); class emmm { public static function checkFile(&$page) { $whitelist = ["source"=>"source.php","hint"=&gt

2020-05-25 23:15:41 453

原创 open-source

源码分析#include <stdio.h>#include <string.h>int main(int argc, char *argv[]) { if (argc != 4) { printf("what?\n"); exit(1); } unsigned int first = atoi(argv[1]); if (first != 0xcafe) { printf("you are wrong, sor

2020-05-25 12:22:45 508

原创 Web_php_include

知识点:1.strstr():定义和用法:strstr() 函数搜索字符串在另一字符串中是否存在,如果是,返回该字符串及剩余部分,否则返回 FALSE。该函数是区分大小写的, stristr() 函数不区分大小写。语法strstr(string,search,before_search)参数描述string必需。规定被搜索的字符串。search必需。规定要搜索的字符串。如果该参数是数字,则搜索匹配该数字对应的 ASCII 值的字符。before_searc

2020-05-25 08:28:36 4373 4

原创 Web_php_unserialize

前言:看到好的知识点就喜欢记录下来,一是为了方便自己以后复习,二是也能帮助大家了解知识点知识点:1、__construct():当对象创建(new)时会自动调用。但在 unserialize() 时是不会自动调用的。(构造函数)2、__destruct():当对象被销毁时会自动调用。(析构函数)3、__wakeup():unserialize() 时会自动调用。首先拿到题目看到给出一段PHP源码<?php class Demo { private $file = 'inde

2020-05-25 00:21:30 3415 7

原创 ThinkPHP5 5.0.23 远程代码执行漏洞

准备这里我用的是vulhub的docker搭建的靶场,关于docker 使用我不再阐释,百度即可,本次是练习所做的笔记,为自己以后复习提供方便介绍ThinkPHP是一款运用极广的PHP开发框架。其5.0.23以前的版本中,获取method的方法中没有正确处理方法名,导致攻击者可以调用Request类任意方法并构造利用链,从而导致远程代码执行漏洞。部分源码@@ -415,7 +415,7 @@ public function pathinfo() foreach (C

2020-05-21 00:18:57 3502

原创 sqli-labs通关笔记

文章目录Basic InjectionsLess-1 '字符型注入-联合查询Less-2 布尔注入-联合查询Less-3 字符注入-联合查询Less-4 字符注入-联合查询Less-5 字符注入-报错查询Less-6 字符注入-错误回显Less-7 文件读写Less-8 盲注和文件读写Less-9 盲注Less-10 盲注Less-11 单引号POST注入Less-12 双引号POST注入Less-13 双注入 - 字符型 - 变形Less-14 双注入 - 双引号 - 字符串Less-15 盲注/布尔

2020-05-19 23:25:20 542 1

原创 win32—内存映射文件

1.内存映射文件内存映射文件就是把一个硬盘上的文件映射到物理页上,然后再把物理页直接映射到虚拟内存上。好处:方便简单,读写容易2.内存映射文件之共享3.内存映射文件之写拷贝写拷贝访问 FILE_MAP-COPY​ 共享不是真正意义上的共享,比如说,A进程和B进程共享一个物理内存,但你修改A进程的某个配置文件时,比如kernel.dll,那么它不会影响B进程的正常执行,原因在于:当...

2020-04-30 12:48:29 433

原创 win32—文件系统

1.文件系统​ 文件系统是指操作系统用于管理磁盘上文件的方法和数据结构:换句话说就是在磁盘上如何组织文件的方法。2.卷相关API1)获取卷:得到当前操作系统有几个卷GetLogicalDrives()——》没有参数,返回值就是当前操作系统有几个卷2)获取一个卷的盘符的字符串:GetLogicalDriveStrings3)获取卷的类型:GetDriveType根据返回值去判断什...

2020-04-30 12:45:30 270

原创 win32—虚拟内存与物理内存

1.虚拟内存与物理内存每一个物理内存的大小是4KB,每个进程由4GB的虚拟内存虚拟内存与物理内存的关系:每个进程的4GB虚拟内存分为高2G和低2G,而低2G是进程实际使用的空间,高2G是内核用的(而且低2G中的前64KB用户程序也不能使用),所以一个进程实际的空间大小为2G(不包括前64KB)物理内存:实际可使用的内存大小可供使用的物理内存:​ MmNumberOfPhysical...

2020-04-30 12:42:54 510

原创 win32—消息队列

1.什么是消息​ 当我们点击鼠标,按键盘的时候,操作系统都要把这些动作记录下来,存储到一个结构体中,这个结构体就是消息。2.消息队列:每个线程只有一个消息队列消息对应窗口任何窗口只能属于一个线程,而多个线程可对应一个进程...

2020-04-30 12:40:27 499

原创 win32—事件

1.通知类型:HANDLE CreateEvent( LPSECURITY_ATTRIBUTES ipEventAttributea, //SD BOOL bManaualReaset, //reset type BOOL binitialState, //initial state LPCTSTR ipName //object name ...

2020-04-30 12:38:05 502

原创 win32—互斥体

1.内核级的临界资源如何被访问?所以我们可以把“令牌”放到内核中,那么这个时候就出现了互斥体互斥体可以看做”令牌“,只不过这个”令牌“放在内核中而已。2.互斥体与线程锁的区别1)线程锁只能用于单个进程间的线程控制2)互斥体可以设定等待超时,但线程锁不能3)线程意外终结时,Mutex可以避免无限等待4)Mutex效率没有线程锁高(因为线程锁避免了在内核中创建对象)互斥体是防止程序...

2020-04-30 12:35:58 279

原创 win32—临界区

1.线程安全问题​ 每个线程都有自己的栈,而局部变量是存储在栈中的,这就意味着每个线程都有一份自己的“局部变量”,如果线程仅仅使用“局部变量”那么就不存在线程安全问题​ 那么如果多个线程共用一个全局变量呢?​ 那就会出现变量混乱的情况,如何解决?将全局变量设为临界资源,什么是临界资源,临界资源是一次只允许一个线程访问的资源。对临界资源访问的代码称为临界区windos的解决思路:2.临...

2020-04-30 12:33:40 320

渗透测试面试题2019版.docx

渗透测试面试题整理2019年版,此乃个人整理,里面有很多最新的面试题,通过这个面试题你能够了解到当前公司对于安全方面人才的需求在哪里,从而锻炼自己相应的能力,提高自己面试的成功率

2020-04-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除