南邮CG-CTF基础题Write up

题目链接:https://cgctf.nuptsast.com/challenges#Web

签到题

     查看网页源码找到flag

MD5   

     在PHP中md5()和sha1()函数都存在一个漏洞,当像函数中传入数组时会无法处理返回同一值,即不同的数组通过md5(),sha1()处理后结果是一样的。同时PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PHP将会认为他们相同,都是0。传一个a[]=240610708过去即可。常见payload如下:

QNKCDZO 240610708 s878926199a s155964671a s214587387a s214587387a

sha1(str) sha1('aaroZmOk') sha1('aaK1STfY')

sha1('aaO8zKZF')  sha1('aa3OFF9m')

签到题2

     用burpsuite修改包,发送完整指令拿到flag。或者F12修改maxlenght。

这题不是WEB

     下载网页中GIF,notepad打开,搜索nctf即可找到flag。

层层递进

     查看网页源码,发现一个so.html的链接,后面属性值的长宽均为零比较诡异,点进去再看源码依然有一个so.html,根据题名层层递进,最后找到一个404.html,源码中隐藏flag。

AAENCODE

     win下chrome浏览器打开乱码无法显示(其他浏览器没试过),linux下用curl命令获取网页内容,指令格式为curl url –silent。得到的JS颜文字加密密文,放到浏览浏览器的控制台即console中跑一次(按回车)即可得到flag。

单身二十年

     Burpsuite发包截包即可得到flag

Php decode

     下载明文密文,在明文中截取和密文同样长度的字段,与密文异或运算后得到flag。一开始以为是要把密文补零再和明文异或结果flag只出来一半,很坑。

文件包含

     简单的文件包含,当发现url中有?file=字样时可以修改后面为?file=php://filter/convert.base64-encode/resource=xxx.php来查看对应文件源码,此题好像是直接看index.php源码即可拿到flag。这个语句拿到的源码一般是base64加密的,可以找个在线网站解,也可以在python中用base64库解,base64.b64decode()。

单生一百年

     同单生二十年,仍然可用Burpsuite截包得到flag

Download~!

    下载链接url=+文件名称base64编码,将download.php编码后下载得到flag

COOKIE

    请求头中有Cookie:login=0,改为1即可得到flag。

MYSQL

    根据提示查看robots.txt,提示向sql.php提交一个id, id=1024显示再次尝试,其它id均为msg,则可以用1024.1绕过php检测,在mysql中查询时1024.1因为精度问题按1024查询,显示flag

GBK INJECTION

    单引号会被/注掉,可以用%df吃掉/封闭id,再使用Union select逐步爆库名表名字段名及字段。大概注入姿势如下:?id=-1%df%27%20union%20select%201,database()%23,其中%27是单引号url编码,%20是空格,%23是#用来注释后面多余的语句。前面的查询是id和title两列,后面也应该是两个,所以凑了个1,试了一下它会显示两列中的第二列,所以把database()放到后面,库名就出来了是sae-chinalover。接着爆表名  -1%df%27%20union%20select%201,group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=0x7361652d6368696e616c6f766572%23

这块烦一点,group_concat是把查询结果整合成一块,为了凑两列。information_schema这个表存着所有数据库的相关信息,例如tables这个表里有所有表的信息,table_schema字段存着所属数据库,table_name存着对应表的名字。因为单引号会被转义,所以使用16进制来表示,python下编码为'sae-chinalover'.encode('hex')再加上0x即可。表名如下ctf,ctf2,ctf3,ctf4,news。然后就爆字段吧。用information_schema.columns这个表。

id=-1%df%27%20union%20select%201,group_concat(column_name)%20from%20information_schema.columns%20where%20table_name=0x63746634%23(这个是爆ctf4这个表的,多试一下flag在这个表里)

出两个字段id,flag,再爆flag即可。

id=-1%df%27%20union%20select%201,group_concat(flag)%20from%20ctf4%23

然后就出flag了。


/X00

    ereg()在匹配字串是检测到%00会停止,而strpos()会继续,故构造nctf=1%00%23biubiubiu即可得到flag

BYPASS AGAIN

    传入值不想等的数组即可,a[]=1&b[]=2,之前提过的md5()sha1()漏洞

变量覆盖

    register_global=ON时POST传入数据值会覆盖掉php中变量值,源码中对post数据进行了extract()处理,extract()函数会将数组中的值赋给对应索引,故传入pass=1&thepassword_123=1即可。post可以用firefox的hackbar插件实现,也可以用python的requests库。

PHP是世界上最好的语言

    Php会对post的数据自动url解码,网页要求不能传入hackerDJ,但ulr解码后为hackerDJ才能得到flag,故对hackerDJ进行两次url编码上传后得到flag(ps:python中的urllib.quote()以及php中的urlencode()不能对字母进行url编码,可以手工把字母转为ASCII码然后加上%号,第二次再把%变为%25即可)

伪装者

    要求本地账户登陆才行,故添加X-Forwarded-For为127.0.0.1,获取flag失败,估计题出问题了。

Header

    Flag在响应头里

文件上传

    要求绕过检测上传php文件,%00截断用不了,仔细观察回馈数据,发现basename为/uploads/后面的内容加上filename=后面的内容,filename为/uploads/后面的内容加上filename=后面‘.’前面的内容,’.’后面的内容被识别为文件类型,所以filename=后面必须填x.jpg。在/uploads/后面写1.php%00截断,发现不行,于是把%00替换为空格标记该位置,在16进制中找到对应的位置,把20(空格的16进制)改为00截断,提交成功。

SQL1

    查看源码,发现可以注释掉SQL中user后面的内容,直接搜寻admin的内容即可登陆成功,在用户名处注入如下admin’)#即可拿到falg。

Passcheck

    Strcmp漏洞为传入不同类型的数据比较会报错但同时返回相等的信息,故post pass[]=1即可。在python中执行 requests.post(‘url’,data={‘pass[]’:1}).text即可得到flag。

起名字真难

    根据代码知要交一段等于‘54975581388‘的字符串,且每位不能为数字,故post其16进制即可,?key= 0xccccccccc得到flag

密码重置

    页面链接url=后为‘ctfuser’的base64编码,改为admin,burpsuite截包再把用户名框里的ctfuser改成admin得到flag。

密码重置2

    根据提示查看源码可以找到管理员邮箱,提交管理员邮箱和任意密码后显示fail,根据第二个提示非正常退出vi后会产生’.’+filename+’.swp’的文件,故查看.submit.php.swp文件,可看出当token长为10且为0时可得到flag,故输入管理员邮箱+十个0即可得到flag。

file_get_content

    很经典的一类题,传一个文件名上去,要求文件中有某些数据。文件名传‘php://input'这个文件里存着post的数据,同时再Post要求的数据即可拿到flag。即post meizijiu。

SQL2

    $query =

@mysql_fetch_array(mysql_query("select pw from ctf where

user='$user'")); 上为注入点,查询结果将与输入密码md5加密后的结果进行比对,假设输入密码为1,则需要让查询结果为1的md5值,用户名处输入‘ UNION SELECT “c4ca4238a0b923820dcc509a6f75849b” #,先用空格加单引号使前面的查询结果为空并封闭单引号,union select +md5(1)查询结果为1的md5加密结果。再用#号注释掉最后的’号即可拿到flag。

SQLinjection

    源码对输入进行了处理,htmlentities($str,

ENT_QUOTES);,单双引号将被处理为html文本,即单引号变为',注入点在单引号内,则没办法添加单引号闭合,提示用/可以注释单引号,则可以用/消灭掉一个单引号,query原本为WHERE

name=’$username’ AND pass=’$password’。Admin处填“/”则变为WHERE name=(’/’ AND

pass=’)$password’。再将$password写为” or 1#”

则整个查询语句变为SELECT

* FROM users WHERE name=(‘/’ AND pass=’) or 1。可知查询结果为整个表,则$result不为空且查询结果大于1,获得flag。

综合题

    根据aaencode不难看出为js加密,去掉汉字,放到console中跑一下得到一个php文件名称,访问之在消息头得到tip,提示history of bash,查询得知在用户的~目录下有一个.bash_history的文件,其中存放着500条左右的命令行命令,查看后发现一条压缩命令,压缩了一个叫flagbak.zip的文件,下载后解压得到flag。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容

  • Php:脚本语言,网站建设,服务器端运行 PHP定义:一种服务器端的HTML脚本/编程语言,是一种简单的、面向对象...
    廖马儿阅读 2,112评论 2 38
  • 朋友圈一个照片,闲来无事想必变是这样。
    丫是老段阅读 175评论 0 2
  • 司马懿,这个埋没于三国纷争前中期的善谋之人,辅佐了魏国三代的托孤辅政之重臣,在后三国时代成为了掌控魏国朝政的权臣。...
    九点零九单身日记阅读 250评论 0 0
  • 懦弱的人容易受伤害 善良敛起来,是冷漠。 人世的善良,有点像蜗牛的反应。若是你伸手触了它的软体,它就会迅速缩在壳子...
    学徒晓成阅读 1,254评论 0 2
  • 非宁静无以致远。 与图无关。
    美线阅读 382评论 1 2