CG-CTF

https://cgctf.nuptsast.com/challenges#Web

  续上~

  第二十二题:SQL注入1

  点击Source:

  分析:

  mysql_select_db()函数:设置MySQL数据库;

  trim()函数:移除两侧的预定义字符;

  mysql_query()函数:执行一条MySQL查询;

  mysql_fetch_array函数:从结果集取得一行作为关联数组;

  执行的sql语句:

select user from ctf where (user='".$user."') and (pw='".$pass."')

  整段代码唯一一个过滤机制是trim()函数,对两端的空格等预定义字符进行了过滤,且只校验了user == admin即可获取flag,那么直接在user参数里构造,注释掉后面的pass即可;

  构造admin“)#,注意闭合语句即可;

  取得flag(干杯~);

  第二十三题:pass check

  代码分析:

  这里用到了isset()函数检测变量是否被赋值,用strcmp()函数比较$pass和$pass1两个变量;

  但是strcmp()函数在被比较的两个参数相等的情况下返回0,而在PHP5.3版本之前存在一个漏洞,就是如果参数的数据类型是strcmp()函数无法识别的也会返回0,所以在这里我们让pass变为数组即可获得flag,由于题目地址出错就不做验证了;

  第二十四题:起名字真难

  代码分析:

  设定了一个函数function noother_says_correct($number):

  ord()函数:返回ASCII码;

  然后设置了一个for循环,将$number的每一位进行判定,若其ASCII码在49(1的ASCII码)和57(9的ASCII码)之间,则返回false,若不在这两者之间,将$number与字符串'54975581388'进行比较并返回比较结果;

  然后将?key的值放入函数,若返回true,则取得flag;

  思路:也就是说?key的值必须和'54975581388'相同,又不能在1-9之间;尝试使用不同的进制数,二进制必有1,所以肯定不行,八进制除了0也都在1-9之间,看看'54975581388'的十六进制是啥:0xccccccccc!完美避开了1-9;

  取得flag(干杯~);

  第二十五题:密码重置

  先尝试随便输个新密码和验证码看看;

  返回error;

  用burp抓包;

  观察的时候发现有个user1的参数,形似base64加密后的样子,尝试解码;

  结合题干(重置管理员账号admin的密码),对admin进行base64加密并修改参数;

  取得flag(干杯~);

  第二十七题:SQL Injection

  查看源代码:

  代码分析:

  用htmlentities()函数将字符转换为html转义字符,并将双引号、单引号都进行转换;

  mysql_query()函数执行MySQL查询,此处查询语句为:

SELECT*FROM user WHERE name = '$username' AND pass = '$password'

  思路:在用了转义函数之后,我们不能用单引号进行简单的闭合,题干中有个TIP,反斜杠可以用来转义,而在MySQL查询语句中,转义的单引号不会参与语句的闭合,那么如果我们用反斜线将name参数原本用来闭合的单引号转义掉,那么pass参数的第一个单引号就会成为name参数的闭合单引号,而我们就可以在pass参数上执行语句了;

  构造name=\&pass=or 1=1#(当然放在URL中时我们需要用URL编码);

  取得flag(干杯~);

  第二十八题:综合题

  可以看出应该是一段JS代码,放到控制台运行一下;

  得到一个PHP文件名,尝试访问;

  TIP在脑袋里,应该会有信息在HTTP头部,查看burp;

  提示history of bash,而Linux系统的.bash_history文件里是系统输入的命令记录,尝试访问.bash_history文件;

  命令历史显示用了zip压缩命令,压缩后的文件名为flagbak.zip,尝试访问;

  提示下载,下载解压后里面是flag.txt文件,打开;

  取得flag(干杯~);

  第三十题:SQL注入2

  查看Source;

  代码分析:

  if判断处对$pass和$query[pw]的值进行了比较,需要二者相等;而$pass的值是我们输入的密码的md5的值,$query[pw]的值按理来说是我们输入的user的值在ctf表中对应的pw列的值;

  思路:运用union,当前者查询不存在的时候会返回后者的值,那么我们只用构造一个取得和我们输入的密码的MD5值相等的值即可成功;

  尝试构造user=’union select md5(111)#,pass=111

  取得flag(干杯~);

  未完待续~

CG-CTF(5)的更多相关文章

  1. Cg profiles,如何使用CGC编译Cg语言(转)

    抄“GPU Programming And Cg Language Primer 1rd Edition” 中文名“GPU编程与CG语言之阳春白雪下里巴人” 计算机只能理解和执行由0.1序列(电压序列 ...

  2. [DEFCON全球黑客大会] CTF(Capture The Flag)

    copy : https://baike.baidu.com/item/ctf/9548546?fr=aladdin CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的 ...

  3. 解读Unity中的CG编写Shader系列八(镜面反射)

    转自http://www.itnose.net/detail/6117378.html 讨论完漫反射之后,接下来肯定就是镜面反射了 在开始镜面反射shader的coding之前,要扩充一下前面提到的知 ...

  4. 【Unity Shaders】学习笔记——SurfaceShader(二)两个结构体和CG类型

    [Unity Shaders]学习笔记——SurfaceShader(二)两个结构体和CG类型 转载请注明出处:http://www.cnblogs.com/-867259206/p/5596698. ...

  5. CG&Game资源(转)

    cg教程下载: http://cgpeers.com http://cgpersia.com http://bbs.ideasr.com/forum-328-1.html http://bbs.ide ...

  6. (笔记)CTF入门指南

    [考项分类] Web: 网页安全 Crypto: 密码学(凯撒密码等) PWN: 对程序逻辑分析 系统漏洞利用 Misc: 杂项 图片隐写 数据还原 脑洞类 信息安全有关的 Reverse: 逆向工程 ...

  7. 小白的CTF学习之路2——二进制数据基础与运算(上)

    今天的第二更,被我拖到了傍晚,嘿嘿,二进制这方面让本就数学不好的我很头疼,所以研究了一段时间 在学习之前我们先了解几个问题: 32位是几个字节? 01011100对于十进制是多少? 00001111向 ...

  8. CTF竞赛(简介)

    一.解体模式(Jeopardy) 可通过互联网或现场网络参与,解决网络安全技术挑战题目,并以分值和时间排名. 题目主要包括:逆向,漏洞挖掘与利用,web渗透,密码,取证,隐写,安全编程 二.攻防模式( ...

  9. (译)Cg Programming/Unity(Cg编程/Unity)

    最近在学习Unity3d中的shader编程,能找到的中文资料比较少,于是,尝试翻译一下wiki Books上的资料,以方便其他跟我一样的入门学习者.由于是第一次翻译技术资料,经验不足,难免出错,请路 ...

  10. Cg(C for Graphic)语言语义绑定方法(转)

    摘抄“GPU Programming And Cg Language Primer 1rd Edition” 中文名“GPU编程与CG语言之阳春白雪下里巴人” 语义绑定方法 入口函数输入\ 输出数据的 ...

随机推荐

  1. SQL Server中STATISTICS IO物理读和逻辑读的误区

    SQL Server中STATISTICS IO物理读和逻辑读的误区 大家知道,SQL Server中可以利用下面命令查看某个语句读写IO的情况 SET STATISTICS IO ON 那么这个命令 ...

  2. 《Java基础复习》—规范与基础

    参考书目<Java 编程思想>所以大家放心食用 一.注释规范以及API文档 1.注释 1.1三种注释方法 //注释内容 单行注释 /* 注释内容 */ 多行注释 /**注释内容*/ 文档注 ...

  3. C9K Stackwise Virtual(一)

    一.SV技术基本说明 思科Catalyst9K平台的Stackwise Virtual技术是将两个物理的交换机虚拟成一个逻辑的实体(从网络控制层面和管理的角度来看),这两个交换机合二为一之后,将共享相 ...

  4. CSS制作小旗子与小箭头

    CSS制作小旗子与小箭头 效果图如下: 小旗子效果图 小箭头效果图 小旗子效果 以下是具体实现代码: <div class="container"> <div c ...

  5. adb工作常用命令

    adb devices 查看手机名 adb shell链接手机 dumpsys window windows |grep -i current 打开软件,查看软件入口,和包名,白色为包名,红框为包入口 ...

  6. docker-compose容器中redis权限问题

    遇到的问题:aof文件不断变大,导致服务器卡崩溃. 1.在服务器上拉取Bitnami/redis的镜像 2.出现aof权限不够问题,所以直接给aof文件加了权限,导致aof不断变大,最终服务器宕机. ...

  7. java第九天,接口是什么?如何实现接口

    接口 很多人纳闷Java为什么会有接口这个知识点呢?其实很大程度上是为了间接实现多继承.但是因为C++的多继承实在是一个难点,Java为了吸取C++的教训,就推出了接口这个概念.接口是一种公共规范标准 ...

  8. redis修改密码以及验证登录,启动服务常用命令

    1.通过配置文件,直接修改 2.启动然后使用密码验证登录 3.redis常用命令 启动服务:redis-server --service-start重启服务:service redis restart ...

  9. 十九种Elasticsearch字符串搜索方式终极介绍

    前言 刚开始接触Elasticsearch的时候被Elasticsearch的搜索功能搞得晕头转向,每次想在Kibana里面查询某个字段的时候,查出来的结果经常不是自己想要的,然而又不知道问题出在了哪 ...

  10. shell命令-while语句

    loop=1 while [ "$loop" -le 10 ] do echo "loop:$loop" loop=$(($loop+2)) done