webhacking.kr challenge 8
接连的几道题都是代码审计的。这道题里,对User-Agent有两个取法,一种是getenv,另一种是$_SERVER,而对两个的不一致的过滤就造成了问题。具体地,getenv得到的里面不限制单引号、括号和注释符号#,而且会在后面的插入语句里出现。如果我们这里取User-Agent: agent','ip',...
View Articlewebhacking.kr challenge 7
发现有页面的源代码,发现参数val处存在注入,而且在提示里也说了用union。所做的防御是过滤了一些字符,而且每次随机选一个查询语句,不同的语句需要闭合的括号数目不同。由于不允许使用空格和注释,我就用TAB来分词;由于最后需要的结果2也不允许出现,加号也不允许出现,我们用减法3-1=2。由于只有5种随机的情况,所以选定一种一直跑应该就有选中的可能。我选了最简单的只有1个括号的,http://webh...
View Articlewebhacking.kr challenge 9
这道题花了好久啊才做出来……不愧是这么大分值的题目首先,直接点击后就是遇到了HTTP basic auth。由于realm是sql injection world,我开始还以为在这里就要有注入……试了各种知道的payload发现没有用,于是在这里卡住了然后是搜索时偶然发现这里提到了他的basic...
View Articlewebhacking.kr challenge 10
这道题其实和web-09非常像。进入页面,发现有提示,知道了column和表的名字。然后试了下直接把参数no取为查询语句,发现还是很多过滤了,而且最后发现似乎返回值只见到了0和1,估计还是盲注。过滤的地方,主要是空格有问题,但如果把空格换为换行符%0a就可以了。然后还用昨天的思路,但一直跑不出来……最后搜了答案。相比我的,主要是这次flag有两个,用我昨天做web-09时的那种对应关系被固定了。而用...
View Articlewebhacking.kr challenge 12
这道题给了源代码,发现过滤了union。于是只能从当前表考虑了。尝试了取no=1,得到guest,说明其对应的no是1。如果表里还存在id=admin的记录,那么那条记录的id要么比1小,要么比1大。于是分别尝试这两种,发现后一种是正确的http://webhacking.kr/challenge/web/web-12/index.php?no=9)+or+no>1--+
View Article第一次做ARM逆向的题目
把ARM环境搭好后,就可以动态调试了。之前一道arm逆向的题目,由于没有环境一直只能静态分析,但对arm完全不熟,进行不下去。果然能动态调试就好了。题目给了一个.c文件和一个.asm文件。我首先编译.c文件,但发现得到的结果用了好多thumb的16 bits的代码,而这和给的.asm文件是不同的。搜索后发现需要指定-marm。于是$ gcc leg.c -g -marm -o...
View Article用QEMU模拟ARM环境
之前遇到ARM逆向的入门题,但没有环境只能静态分析,非常慢;而且我觉得边调试边学应该会快一些,于是决定模拟一个ARM环境装linux系统。首先是QEMU,由于单位电脑系统是RHEL 6,没有qemu-system-arm,于是我不得不编译了一次。我下的是qemu-2.0.2,运行 $ ./configure --target-list="arm-softmmu arm-linux-user"...
View ArticleISG初赛library
子曰:温故而知新。最近一段时间没有练习pwn的题目,正好当时ISG初赛的library还一直没研究,于是练习了下。果然是稍微放一放就生疏了……比较明显的问题是在register里,有一个format string...
View Articlemysql比较字符串忽略结尾的空白
今天学习到一个知识点,在查询时如果比较字符串,会忽略结尾的连续空白,起始的空白不会忽略。于是:select * from users where user='admin ';会把user='admin'的记录也选出。这里有比较详细的例子,而且mysql的官方文档也说了:In particular, trailing spaces are significant, which is not true...
View Articleolympic ctf echof(PWN 300)
2015年第一帖。以往的CTF的题目质量还是很高的,所以打算稍微练一练这些题目。这道题目,存在一处format string...
View ArticleISG初赛BT
这道题目是去年ISG初赛的一道ARM逆向题,当时的知识储备还不足以解决。但其实稍微了解了下ARM汇编之后就可以做了,虽然说还不熟练,花了较久时间。我是开始想用IDA的反编译的,但不知怎么回事,对thumb代码的处理总有问题;继而无奈用hopper,然而hopper得到的伪代码还是比较简陋的,而且发现居然会把本应是*ptr+=1这样的反编译为*ptr=1,这个错误太大了……于是最后基本还是通过读汇编代...
View Articlewireshark, burpsuite与SSL
最近在工作中,有时需要用wireshark抓包分析。而有一些通信是被ssl加密了的。虽然说以前在其他队伍的writeup里有见到过如何把server的私钥提供给wireshark来解密,但我这几次试了下还是得不到需要的东西,所以稍微研究了一下。最后的结论是某些cipher是无法仅仅从抓到的包解密的。首先,来了解一些相关的密码学知识。RSA就不再赘述了,这里主要讲一下Diffie-Hellman(DH...
View ArticleBCTF writeup
周末参加了今年的第一次CTF,BCTF。由于这次CTF是面向国际的,所以题目的质量都比较高,种类也比较单纯,以逆向、溢出为主。这次确实是一个非常难得的锻炼机会,让我们体验到了国际水平CTF的难度。我们队做出了5道题,我做出了zhongguancun和warmup。在这里记录下我思考的过程。zhongguancun是我在周日下午才做出来的。(差距啊……)我的习惯是,首先通读一遍IDA...
View Article0CTF writeup
周末参加了今年的第二次CTF,0CTF。与BCTF类似,这次的溢出、逆向题目也是非常有水平的,令人大开眼界。下面是我的部分的writeup。flaggenerator这道题的溢出还是比较明显的。在leetify时,一个h字符会被变成1-1三个字符,从而长度变长,造成栈溢出。但这道题有stack...
View Article0CTF rsa quine
这道题是一道密码学(其实是数学)的题目,因为对相关理论还是不够熟练,在比赛的时候没有能够做出来:( 这两天读了读别人的writeup,基本上明白解法了,在这里记录下具体的思路。题目的要求是求”quine number”,即:已知RSA公钥,求,使得。规则很清晰,但实际解决起来还是需要一定的数学知识。Ok. Now welcome to the world of...
View Article通过DT_DEBUG来获得各个库的基址
最近,在学习BCTF和0CTF的writeup时,注意到了一种通过DT_DEBUG来获得库的基址的方式:BCTF里的pattern用这一方法来获得ld-linux.so的地址,0CTF里的sandbox用这一方法来获得sandbox.so的基址。之前面对ASLR,我只知道可以通过GOT来获取libc.so的地址,而其他库的地址还不清楚应该怎样取得。于是,我稍微研究了下,在此记录。首先,通过reade...
View Article0CTF freenote
这道题目是关于heap overflow的。之前没有接触过这方面。通过阅读http://winesap.logdown.com/posts/258859-0ctf-2015-freenode-write-up,...
View ArticleISG决赛pepper
这道题目是去年参加ISG决赛时遇到的。二进制文件是有多个漏洞,我们当时是做的栈溢出,而堆溢出一直没有研究过。正好这两天在学习堆溢出,发现这道题和0CTF的freenote十分相似,不愧是同一批人出的题目。所以,在这里简要记录下,因为思路是完全一样的具体地,通过修改restaurant的功能,我们可以重新编辑restaurant的description。description是保存在堆上的,但在修改时...
View Article0CTF 0ops app
这道题提供了一个sandbox.so,当时我连如何运行这道题都不知道……今天阅读了http://acez.re/ctf-writeup-0ctf-2015-quals-login0opsapp-breaking-out-of-a-pin-sandbox/和https://rzhou.org/~ricky/0ctf2015/0ops_app/test.py,终于搞明白这道题目了,在此记录。具体地,这道...
View Article